Skip to content

Commit

Permalink
Merge branch 'add_generators' of https://github.com/msgehard/factory_…
Browse files Browse the repository at this point in the history
  • Loading branch information
mike-burns committed Jul 12, 2011
2 parents c4eab79 + 9f26cab commit e36a7c9
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 0 deletions.
13 changes: 13 additions & 0 deletions features/generators.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Feature:
In order to easily generate factory files instead of fixture files when generating models
As a user of Rails3 and factory_girl
I would like to use factory_girl_rails generators.

Scenario: The factory_girl_rails generators create a factory file
for each model that I generate
When I successfully run `bundle exec rails new testapp`
And I cd to "testapp"
And I add "factory_girl_rails" from this project as a dependency
When I successfully run `bundle install`
And I successfully run `bundle exec rails generate model User name:string --fixture-replacement=factory_girl`
Then the output should contain "test/factories/users.rb"
11 changes: 11 additions & 0 deletions lib/generators/factory_girl.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
require 'rails/generators/named_base'

module FactoryGirl
module Generators
class Base < Rails::Generators::NamedBase #:nodoc:
def self.source_root
@_factory_girl_source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'factory_girl', generator_name, 'templates'))
end
end
end
end
14 changes: 14 additions & 0 deletions lib/generators/factory_girl/model/model_generator.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
require 'generators/factory_girl'

module FactoryGirl
module Generators
class ModelGenerator < Base
argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"
class_option :dir, :type => :string, :default => "test/factories", :desc => "The directory where the factories should go"

def create_fixture_file
template 'fixtures.rb', File.join(options[:dir], "#{table_name}.rb")
end
end
end
end
9 changes: 9 additions & 0 deletions lib/generators/factory_girl/model/templates/fixtures.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Read about factories at http://github.com/thoughtbot/factory_girl

FactoryGirl.define do
factory :<%= singular_name %> do
<% for attribute in attributes -%>
<%= attribute.name %> <%= attribute.default.inspect %>
<% end -%>
end
end

0 comments on commit e36a7c9

Please sign in to comment.