= Cucumber Factory - create ActiveRecord objects without step definitions Cucumber Factory allows you to create ActiveRecord objects directly from your {Cucumber}[http://cukes.info/] features. No step definitions required. == Examples The following will call {Movie.make}[http://github.com/notahat/machinist], {Factory.create(:movie)}[http://github.com/thoughtbot/factory_girl], Movie.create! or Movie.new, depending on what's available: Given there is a movie To create a new record with attributes set, you can say: Given there is a movie with the title "Sunshine" and the year "2007" The following will also store the created record in @sunshine: Given "Sunshine" is a movie with the title "Sunshine" and the year "2007" To set associations you can refer to other records by name: Given "Before Sunrise" is a movie And "Before Sunset" is a movie with the prequel "Before Sunrise" You can also refer to the last created object of a kind by saying "above": Given there is a movie with the title "Before Sunrise" And "Before Sunset" is a movie with the prequel above Boolean attributes can be set by appending "which", "that" or "who" at the end: Given there is a movie which is awesome And there is a movie with the name "Sunshine" that is not a comedy And there is a director who is popular Instead of "and" you can also use "but" and commas to join sentences: Given there is a movie which is awesome, popular and successful but not science fiction And there is a director with the income "500000" but with the account balance "-30000" == Factory support {Machinist blueprints}[http://github.com/notahat/machinist] and {factory_girl factories}[http://github.com/thoughtbot/factory_girl] will be used when available. You can use named Machinist blueprint such as Movie.blueprint(:comedy) like this: Given a movie (comedy) with the title "Groundhog Day" Inherited factory_girl factories are not supported yet. == Overriding factory steps If you want to override a factory step with your own version, just do so: Given /^there is a movie with good actors$/ do movie = Movie.make movie.actors << Actor.make(:name => 'Clive Owen') movie.actors << Actor.make(:name => 'Denzel Washington') end Custom steps will always be preferred over factory steps. Also Cucumber will not raise a warning about ambiguous steps if the only other matching step is a factory step. == Installation and setup Cucumber Factory is a gem, which you can install with sudo gem install cucumber_factory In Rails 2, add the following to your environment.rb: config.gem 'cucumber_factory' In Rails 3, add the following to your Gemfile: gem 'cucumber_factory' Finally, create a file features/step_definitions/factory_steps.rb, which just says Cucumber::Factory.add_steps(self) == Rails 3 compatibility We cannot guarantee Rails 3 compatibility at this point, but we will upgrade the gem when Rails 3 is released. === Credits Henning Koch {makandra.com}[http://makandra.com/] {gem-session.com}[http://gem-session.com/]