Skip to content

Commit 11d86bd

Browse files
herwinwandrykonchin
authored andcommitted
Add specs for Refinement#target
This includes some additional updates: * Move old specs for refined_class to a shared spec, use this shared spec for target * Add a spec for Ruby 3.3 to check that refinement_target has been deprecated * Add a spec for Ruby 3.4 to check that refinement_target has been removed
1 parent caa743e commit 11d86bd

File tree

3 files changed

+45
-3
lines changed

3 files changed

+45
-3
lines changed

core/refinement/refined_class_spec.rb

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,29 @@
1-
require_relative '../../spec_helper'
1+
require_relative "../../spec_helper"
2+
require_relative 'shared/target'
23

34
describe "Refinement#refined_class" do
45
ruby_version_is "3.2"..."3.3" do
5-
it "returns the class refined by the receiver" do
6+
it_behaves_like :refinement_target, :refined_class
7+
end
8+
9+
ruby_version_is "3.3"..."3.4" do
10+
it "has been deprecated in favour of Refinement#target" do
11+
refinement_int = nil
12+
13+
Module.new do
14+
refine Integer do
15+
refinement_int = self
16+
end
17+
end
18+
19+
-> {
20+
refinement_int.refined_class
21+
}.should complain(/warning: Refinement#refined_class is deprecated and will be removed in Ruby 3.4; use Refinement#target instead/)
22+
end
23+
end
24+
25+
ruby_version_is "3.4" do
26+
it "has been removed" do
627
refinement_int = nil
728

829
Module.new do
@@ -11,7 +32,7 @@
1132
end
1233
end
1334

14-
refinement_int.refined_class.should == Integer
35+
refinement_int.should_not.respond_to?(:refined_class)
1536
end
1637
end
1738
end

core/refinement/shared/target.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
describe :refinement_target, shared: true do
2+
it "returns the class refined by the receiver" do
3+
refinement_int = nil
4+
5+
Module.new do
6+
refine Integer do
7+
refinement_int = self
8+
end
9+
end
10+
11+
refinement_int.send(@method).should == Integer
12+
end
13+
end

core/refinement/target_spec.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
require_relative "../../spec_helper"
2+
require_relative 'shared/target'
3+
4+
describe "Refinement#target" do
5+
ruby_version_is "3.3" do
6+
it_behaves_like :refinement_target, :target
7+
end
8+
end

0 commit comments

Comments
 (0)