rspec/rspec-rails — pull request #1208 by cupakromer (2014-11-10 00:51:14+00:00)
Title: Warn on context fixture helper

Fixtures are controlled by the underlying `ActiveRecord::TestFixtures` code. Which sets up fixtures before **each** example. While the database _may_ have fixture data in it before this point, that data will be reset once the test fixture code runs.

When the `fixtures` message is sent in an example group, or global fixtures are defined, the Active Record test fixtures register the accessors in an anonymous module. That module is included in the example group's ancestors.

Which means the accessor helpers are available in any example group instance; thus they are available in `before(:context)` and `after(:context)`. However, the internal fixture setup and cache has not been performed yet. Attempting to call a fixture helper prior to the fixtures being setup, raises an undefined method on `NilClass` error.

This update shims a module into the fixture registration process. The module creates mirrored accessor helpers which raise a helpful error when called. In order to ensure these are only available in context hooks, the private RSpec APIs (:grimacing:), are redeclared in order to extend the provided example group instance with the accessor preventing module.

Resolve #1201

**TODO:**

- [ ] Find a way to test this properly
- [ ] Update the cuke documentation about fixtures (there are several pages that need updating)
- [ ] Add Changelog entry