Skip to content

Commit 4f980ff

Browse files
committed
Fix WrongScopeError being thrown on Rails master:
- ### Problem Rails made a change in rails/rails@d4367eb and TestFixtures don't make use of `method_name` anymore, but simply `name`. `name` on RSpec raises a `WrongScopeError` when called within an example. This patch overrides `name` to return the example name instead.
1 parent c642aec commit 4f980ff

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

lib/rspec/rails/fixture_support.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,12 @@ def self.proxy_method_warning_if_called_in_before_context_scope(method_name)
5050
end
5151
end
5252

53+
if ::Rails.version.to_f >= 6.1
54+
def name
55+
@example
56+
end
57+
end
58+
5359
fixtures RSpec.configuration.global_fixtures if RSpec.configuration.global_fixtures
5460
end
5561
end

spec/rspec/rails/fixture_support_spec.rb

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,27 @@ module RSpec::Rails
1313
expect(group).to respond_to(:fixture_path=)
1414
end
1515
end
16+
17+
it "doesn't raise a WrongScopeError" do
18+
skip if Rails.version.to_f < 6.1
19+
20+
group = RSpec::Core::ExampleGroup.describe do
21+
include FixtureSupport
22+
end
23+
24+
expect { group.new.name }.to_not raise_error
25+
end
26+
27+
it "setup_fixture successfuly" do
28+
skip if Rails.version.to_f < 6.1
29+
30+
group = RSpec::Core::ExampleGroup.describe do
31+
include FixtureSupport
32+
33+
self.use_transactional_tests = false
34+
end
35+
36+
expect { group.new.setup_fixtures }.to_not raise_error
37+
end
1638
end
1739
end

0 commit comments

Comments
 (0)