diff --git a/features/fixture_replacement_config.feature b/features/fixture_replacement_config.feature index 3a7735c..fbd99ae 100644 --- a/features/fixture_replacement_config.feature +++ b/features/fixture_replacement_config.feature @@ -29,3 +29,24 @@ Feature: | spec/factories/users.rb | And the following files should not exist: | spec/fixtures/users.yml | + + Scenario: Using Factory Girl and Factory Girl Rails does not override a manually-configured factories directory using RSpec + When I add "rspec-rails" as a dependency + And I configure the factories directory as "custom/dir" + And I successfully run `bundle install` + And I successfully run `bundle exec rails generate model User name:string` + Then the following files should not exist: + | test/factories/users.rb | + | spec/factories/users.rb | + But the following files should exist: + | custom/dir/users.rb | + + Scenario: Using Factory Girl and Factory Girl Rails does not override a manually-configured factories directory using Test::Unit + When I configure the factories directory as "custom/dir" + And I successfully run `bundle install` + And I successfully run `bundle exec rails generate model User name:string` + Then the following files should not exist: + | test/factories/users.rb | + | spec/factories/users.rb | + But the following files should exist: + | custom/dir/users.rb | diff --git a/features/step_definitions/rails_steps.rb b/features/step_definitions/rails_steps.rb index 16ee0b8..d7fb02b 100644 --- a/features/step_definitions/rails_steps.rb +++ b/features/step_definitions/rails_steps.rb @@ -18,3 +18,13 @@ When /^I set the FactoryGirl :suffix option to "([^"]+)"$/ do |suffix| RUBY end + +When /^I configure the factories directory as "([^"]+)"$/ do |factory_dir| + append_to_file File.join('config', 'application.rb'), <<-END +class Testapp::Application + config.generators do |g| + g.fixture_replacement :factory_girl, :dir => "#{factory_dir}" + end +end + END +end diff --git a/lib/factory_girl_rails/railtie.rb b/lib/factory_girl_rails/railtie.rb index ac2e90b..56648d1 100644 --- a/lib/factory_girl_rails/railtie.rb +++ b/lib/factory_girl_rails/railtie.rb @@ -6,9 +6,12 @@ module FactoryGirl initializer "factory_girl.set_fixture_replacement" do generators = config.respond_to?(:app_generators) ? config.app_generators : config.generators + rails_options = generators.options[:rails] - if generators.options[:rails][:test_framework] == :rspec - generators.fixture_replacement :factory_girl, :dir => 'spec/factories' + if rails_options[:test_framework] == :rspec + if !rails_options.has_key?(:fixture_replacement) + generators.fixture_replacement :factory_girl, :dir => 'spec/factories' + end else generators.test_framework :test_unit, :fixture => false, :fixture_replacement => :factory_girl end @@ -16,9 +19,9 @@ module FactoryGirl initializer "factory_girl.set_factory_paths" do FactoryGirl.definition_file_paths = [ - File.join(Rails.root, 'factories'), - File.join(Rails.root, 'test', 'factories'), - File.join(Rails.root, 'spec', 'factories') + File.join(Rails.root, 'factories'), + File.join(Rails.root, 'test', 'factories'), + File.join(Rails.root, 'spec', 'factories') ] end @@ -27,4 +30,3 @@ module FactoryGirl end end end -