Skip to content

Why writing fixtures when they can write themselves?

License

Notifications You must be signed in to change notification settings

featurist/fixture_farm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FixtureFarm

This gem lets you do two things:

  • record fixtures as you browse.
  • record fixtures for a block of code (e.g. setup part of a test).

Generated fixture that belongs_to a record from an existing fixture, will reference that fixture by name.

Limitations

  • doesn't update fixtures
  • doesn't delete fixtures

Installation

Add this line to your application's Gemfile:

gem 'fixture_farm', group: %i[development test]

And then execute:

bundle install

Or install it yourself as:

gem install fixture_farm

Usage

Record as you browse

To record as you browse in development add this to ApplicationController:

include FixtureFarm::ControllerHook if defined?(FixtureFarm)

And in ApplicationJob if needed:

include FixtureFarm::ActiveJobHook if defined?(FixtureFarm)

Then start/stop recording using tasks:

bundle exec fixture_farm record some_awesome_name_prefix
bundle exec fixture_farm status
bundle exec fixture_farm stop

Record in tests

To record in tests, wrap some code in record_new_fixtures block. For example:

include FixtureFarm::TestHelper

test 'some stuff does the right thing' do
  record_new_fixtures('some_stuff') do |stop_recording|
    user = User.create!(name: 'Bob')
    post = user.posts.create!(title: 'Stuff')

    stop_recording.call

    assert_difference 'user.published_posts.size' do
      post.publish!
    end
  end
end

Running this test generates user and post fixtures. Now you can rewrite this test to use them:

test 'some stuff does the right thing' do
  user = users('some_stuff_user_1')

  assert_difference 'user.published_posts.size' do
    user.posts.first.publish!
  end
end

License

The gem is available as open source under the terms of the MIT License.

About

Why writing fixtures when they can write themselves?

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published