From 5d4d0cbfa745e16b7c25d94776a99ec769d5809f Mon Sep 17 00:00:00 2001 From: Eugene Kenny Date: Mon, 19 Feb 2024 17:20:15 +0000 Subject: [PATCH] Fix failing fixture support test on Rails main This test is failing since setup_fixtures was made private in https://github.com/rails/rails/commit/29fe34486d86440d54eabb8332f4fb0aeb87529b. It was added in 82241e909bb9f986fb1cc3552634e4c88ad2890a to exercise the call to `name` in Rails' `run_in_transaction?` method: https://github.com/rails/rails/blob/b4ab1f19d8bcc4639c7379b560f000f01753b5b0/activerecord/lib/active_record/test_fixtures.rb#L101 However since 92727574711f0ffb8c584e96ed70f3e58cc461f9, RSpec Rails overrides `run_in_transaction?`, so `name` is no longer called. We can get even better integration coverage of an example group with use_transactional_tests set to false by actually running an example. --- spec/rspec/rails/fixture_support_spec.rb | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/spec/rspec/rails/fixture_support_spec.rb b/spec/rspec/rails/fixture_support_spec.rb index c6a9c9f75..6bd50d0d8 100644 --- a/spec/rspec/rails/fixture_support_spec.rb +++ b/spec/rspec/rails/fixture_support_spec.rb @@ -39,14 +39,21 @@ module RSpec::Rails end end - it "will allow #setup_fixture to run successfully" do - group = RSpec::Core::ExampleGroup.describe do - include FixtureSupport + context "with use_transactional_tests set to false" do + it "does not wrap the test in a transaction" do + allow(RSpec.configuration).to receive(:use_transactional_fixtures) { true } + group = RSpec::Core::ExampleGroup.describe do + include FixtureSupport - self.use_transactional_tests = false - end + self.use_transactional_tests = false + + it "doesn't run in transaction" do + expect(ActiveRecord::Base.connection.transaction_open?).to eq(false) + end + end - expect { group.new.setup_fixtures }.to_not raise_error + expect_to_pass(group) + end end it "handles namespaced fixtures" do