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


None yet
4 participants

brandonweiss commented Mar 11, 2015

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!

Closes rails/rails#18864: Renaming transactional fixtures to transact…
…ional tests

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

Merge pull request #19282 from brandonweiss/better-name-for-transacti…

Renaming transactional fixtures to transactional tests

@rafaelfranca rafaelfranca merged commit eaf3857 into rails:master Mar 16, 2015

1 check passed

continuous-integration/travis-ci/pr The Travis CI build passed

This comment has been minimized.

Show comment
Hide comment

arthurnn Mar 16, 2015




arthurnn commented Mar 16, 2015



This comment has been minimized.

Show comment
Hide comment

brandonweiss Mar 16, 2015



Thanks, @rafaelfranca!


brandonweiss commented Mar 16, 2015


Thanks, @rafaelfranca!

@brandonweiss brandonweiss deleted the brandonweiss:better-name-for-transactional-fixtures branch Mar 16, 2015

prathamesh-sonpatki added a commit to prathamesh-sonpatki/rails that referenced this pull request May 6, 2016

Release notes: Add a note about `use_transactional_tests` in the depr…
…ecated section of Active Record notes [ci skip]

- Followup of PR #19282.

brandonweiss added a commit to brandonweiss/rails that referenced this pull request Nov 24, 2016

Removing deprecation of `use_transactional_fixtures`
It was introduced in #19282 and has existed for one major version.
It looks like other deprecations from 5.0 are being removed so I
think it’s time to remove this.

jrforrest added a commit to jrforrest/slavery that referenced this pull request Aug 22, 2017

Corrects transactional fixture check for Rails 5
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

@szpasztor szpasztor referenced this pull request Mar 6, 2018


Use transactional tests #1964

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