Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Renaming transactional fixtures to transactional tests #19282

merged 1 commit into from Mar 16, 2015

Renaming transactional fixtures to transactional tests #19282

merged 1 commit into from Mar 16, 2015


Copy link

I think the name "transactional fixtures" is a little misleading and confusing, because (as far as I can tell) it doesn't really have anything to do with fixtures.

This is pretty embarrassing, but I've been using Rails almost since 1.0 and I had no idea that transactional fixtures were running on my tests. I don't use fixtures so I just erroneously assumed that feature didn't work for me. I've been using Database Cleaner unnecessarily for like the last four years. I know, it seems ridiculous, but I talked to a few other fairly savvy Rails users and they had no idea either. I'm beginning to think my misunderstanding is fairly common.

To make the feature less confusing and its intent clearer I've renamed "transactional fixtures" to "transactional tests". I deprecated the old usage and made it backwards-compatible so either will work but the new one will be preferred.

Let me know what you think!

I’m renaming all instances of `use_transcational_fixtures` to
`use_transactional_tests` and “transactional fixtures” to
“transactional tests”.

I’m deprecating `use_transactional_fixtures=`. So anyone who is
explicitly setting this will get a warning telling them to use
`use_transactional_tests=` instead.

I’m maintaining backwards compatibility—both forms will work.
`use_transactional_tests` will check to see if
`use_transactional_fixtures` is set and use that, otherwise it will use
itself. But because `use_transactional_tests` is a class attribute
(created with `class_attribute`) this requires a little bit of hoop
jumping. The writer method that `class_attribute` generates defines a
new reader method that return the value being set. Which means we can’t
set the default of `true` using `use_transactional_tests=` as was done
previously because that won’t take into account anyone using
`use_transactional_fixtures`. Instead I defined the reader method
manually and it checks `use_transactional_fixtures`. If it was set then
it should be used, otherwise it should return the default, which is
`true`. If someone uses `use_transactional_tests=` then it will
overwrite the backwards-compatible method with whatever they set.
rafaelfranca added a commit that referenced this pull request Mar 16, 2015

Renaming transactional fixtures to transactional tests
@rafaelfranca rafaelfranca merged commit eaf3857 into rails:master Mar 16, 2015
Copy link


Copy link
Contributor Author


Thanks, @rafaelfranca!

@brandonweiss brandonweiss deleted the better-name-for-transactional-fixtures branch March 16, 2015 22:42
prathamesh-sonpatki added a commit to prathamesh-sonpatki/rails that referenced this pull request May 6, 2016
…ecated section of Active Record notes [ci skip]

- Followup of PR rails#19282.
jrforrest added a commit to jrforrest/slavery that referenced this pull request Aug 22, 2017
In Rails 5 `ActiveSupport::TestCase` now uses `use_transactional_tests`
rather than `use_transactional_fixtures` as its method to check whether
transactional fixtures are being utilized for the current test.

See: rails/rails#19282
flackou pushed a commit to flackou/geokit-rails that referenced this pull request Apr 17, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet

Successfully merging this pull request may close these issues.

None yet

4 participants