cockroach 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.rvmrc +1 -0
- data/Gemfile +28 -0
- data/LICENSE.txt +22 -0
- data/README.md +124 -0
- data/Rakefile +37 -0
- data/VERSION +1 -0
- data/cockroach.gemspec +96 -0
- data/lib/cockroach.rb +43 -0
- data/lib/cockroach/base/load_nodes.rb +38 -0
- data/lib/cockroach/base/node.rb +192 -0
- data/lib/cockroach/base/node_structure.rb +11 -0
- data/lib/cockroach/config.rb +54 -0
- data/lib/cockroach/config/loader.rb +35 -0
- data/lib/cockroach/fixtures/factory_girl.rb +4 -0
- data/lib/cockroach/fixtures/factory_girl/loader.rb +43 -0
- data/lib/cockroach/fixtures/factory_girl/node.rb +51 -0
- data/lib/cockroach/fixtures/factory_girl/profiler.rb +34 -0
- data/lib/cockroach/railtie.rb +7 -0
- data/lib/cockroach/source.rb +40 -0
- data/lib/cockroach/source/model.rb +33 -0
- data/lib/cockroach/source/node.rb +27 -0
- data/lib/cockroach/version.rb +3 -0
- data/lib/generators/cockroach/install_generator.rb +20 -0
- data/lib/generators/cockroach/templates/cockroach.rb +8 -0
- data/lib/generators/cockroach/templates/faker.yml +16 -0
- data/lib/tasks/faker.rake +35 -0
- data/test/config/config_test.rb +129 -0
- data/test/config/loader_test.rb +42 -0
- data/test/fixturers/factory_girl/aliasing_test.rb +151 -0
- data/test/fixturers/factory_girl/loading_test.rb +45 -0
- data/test/fixturers/factory_girl/node_test.rb +386 -0
- data/test/fixturers/factory_girl/profiler_test.rb +124 -0
- data/test/fixturers/source_test.rb +153 -0
- data/test/generators/install_generator_test.rb +14 -0
- data/test/support/active_record.rb +11 -0
- data/test/support/data/correct_with_option.yml +13 -0
- data/test/support/data/correct_without_option.yml +10 -0
- data/test/support/data/dummy_structure/config/faker.yml +13 -0
- data/test/support/data/dummy_structure/config/user_only.yml +1 -0
- data/test/support/data/dummy_structure/config/witness.yml +6 -0
- data/test/support/data/dummy_structure/test/factories/user_factory.rb +16 -0
- data/test/support/database_cleaner.rb +13 -0
- data/test/support/factory_girl_mocked.rb +32 -0
- data/test/support/models/user.rb +23 -0
- data/test/test_helper.rb +26 -0
- metadata +151 -0
@@ -0,0 +1,54 @@
|
|
1
|
+
module Cockroach
|
2
|
+
class Config
|
3
|
+
extend ActiveSupport::Autoload
|
4
|
+
|
5
|
+
autoload :Loader
|
6
|
+
autoload :ConfigNotExistsError, 'cockroach/config/loader'
|
7
|
+
|
8
|
+
class MissingRootPathError < Exception; end
|
9
|
+
|
10
|
+
class << self
|
11
|
+
attr_writer :root
|
12
|
+
attr_accessor :fixturer, :config_path, :fixtures_path
|
13
|
+
|
14
|
+
# Returns root folder for the project, of if one is missing it tries to return
|
15
|
+
# Rails.root, if Rails is not defined it will raise an error.
|
16
|
+
def root
|
17
|
+
@root ||= begin
|
18
|
+
if defined?(Rails)
|
19
|
+
File.join Rails.root
|
20
|
+
else
|
21
|
+
"./"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
attr_reader :profile, :options, :fixtures_path
|
28
|
+
|
29
|
+
def initialize path_to_config
|
30
|
+
@config_path = File.expand_path path_to_config, self.class.root
|
31
|
+
@profile, @options = Cockroach::Config::Loader.parse(@config_path)
|
32
|
+
@fixturer_def = get_option('fixturer') || self.class.fixturer || 'factory_girl'
|
33
|
+
@fixtures_path = self.class.fixtures_path if self.class.fixtures_path
|
34
|
+
end
|
35
|
+
|
36
|
+
def fixturer
|
37
|
+
@fixturer ||= @fixturer_def.to_s.camelize.to_sym
|
38
|
+
end
|
39
|
+
|
40
|
+
def profiler
|
41
|
+
@profiler ||= begin
|
42
|
+
Cockroach.const_get(fixturer)::Profiler.new
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
protected
|
47
|
+
|
48
|
+
# Options might not be specified at all. In that case @options will be nil
|
49
|
+
# This method will return nil, if option unavailable
|
50
|
+
def get_option option
|
51
|
+
@options[option.to_s] rescue nil
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require "psych"
|
2
|
+
require "yaml"
|
3
|
+
|
4
|
+
module Cockroach
|
5
|
+
class Config
|
6
|
+
# Loader class just returns a structured and ready to use information
|
7
|
+
# parsed from faker project yaml file.
|
8
|
+
class ConfigNotExistsError < Exception; end
|
9
|
+
|
10
|
+
class Loader
|
11
|
+
CONSTRAINTS = %w(fixture_gem fixtures_path).freeze
|
12
|
+
|
13
|
+
class << self
|
14
|
+
# Load the file from the provided path, and return the contents as
|
15
|
+
# an Array, with the following structure:
|
16
|
+
#
|
17
|
+
# [
|
18
|
+
# { * Hash containg the amounts },
|
19
|
+
# { * Hash containing any other options or settings }
|
20
|
+
# ]
|
21
|
+
#
|
22
|
+
def parse path_to_config
|
23
|
+
raise ConfigNotExistsError.new("File under the path \"#{path_to_config}\", does not exists.") unless File.exists?(path_to_config)
|
24
|
+
contents = YAML.load_file path_to_config
|
25
|
+
|
26
|
+
options = contents.extract!(*CONSTRAINTS)
|
27
|
+
options.delete_if {|key, value| value == nil }
|
28
|
+
options = nil if options.blank?
|
29
|
+
|
30
|
+
[contents, options]
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module Cockroach
|
2
|
+
module FactoryGirl
|
3
|
+
|
4
|
+
class NoExistingPathError < Exception; end
|
5
|
+
|
6
|
+
# Loader class is designed to load the FactoryGirl fixtures, defined
|
7
|
+
# in the project.
|
8
|
+
class Loader
|
9
|
+
class << self
|
10
|
+
def load
|
11
|
+
if factory_items.blank?
|
12
|
+
old_paths = ::FactoryGirl.definition_file_paths
|
13
|
+
if Cockroach.config.fixtures_path
|
14
|
+
::FactoryGirl.definition_file_paths = [Cockroach.config.fixtures_path]
|
15
|
+
else
|
16
|
+
::FactoryGirl.definition_file_paths = old_paths.collect { |path| File.join(Cockroach::Config.root, path) }
|
17
|
+
end
|
18
|
+
|
19
|
+
# Italiano spagetti
|
20
|
+
unless ::FactoryGirl.definition_file_paths.inject(false) { |valid, path| valid || File.exists?("#{path}.rb") || File.directory?(path) }
|
21
|
+
raise NoExistingPathError.new("Neither of the paths are valid: #{::FactoryGirl.definition_file_paths.inspect}")
|
22
|
+
end
|
23
|
+
|
24
|
+
::FactoryGirl.find_definitions
|
25
|
+
::FactoryGirl.definition_file_paths = old_paths
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def load!
|
30
|
+
factory_items.clear
|
31
|
+
load
|
32
|
+
end
|
33
|
+
|
34
|
+
protected
|
35
|
+
|
36
|
+
def factory_items
|
37
|
+
::FactoryGirl.factories.instance_variable_get(:@items)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module Cockroach
|
2
|
+
module FactoryGirl
|
3
|
+
# Node deals only with a specific records class. It makes sure that
|
4
|
+
# fixtures are created specific amount of time and will make sure that
|
5
|
+
# the associations are correctly assigned.
|
6
|
+
class Node < ::Cockroach::Base::Node
|
7
|
+
def after_initialize
|
8
|
+
@factory = ::FactoryGirl.factory_by_name(@name)
|
9
|
+
end
|
10
|
+
|
11
|
+
def load! factory_opts = nil
|
12
|
+
if factory_opts
|
13
|
+
normalised_opts = factory_opts.dup
|
14
|
+
@aliases.each_pair { |k,v| normalised_opts[k] = normalised_opts.delete(v) } if @aliases
|
15
|
+
normalised_opts.keep_if {|k,v| allowed_options.include? k }
|
16
|
+
end
|
17
|
+
|
18
|
+
amount.times do
|
19
|
+
current_factory = generate_current_factory(normalised_opts)
|
20
|
+
ids << current_factory.id
|
21
|
+
unless nodes.blank?
|
22
|
+
load_nodes! (factory_opts || {}).merge({ node_name => current_factory})
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
protected
|
28
|
+
|
29
|
+
def generate_current_factory options
|
30
|
+
if @source
|
31
|
+
ret = @source.sample
|
32
|
+
ret.update_attributes(options) unless options.blank?
|
33
|
+
ret
|
34
|
+
else
|
35
|
+
options.blank? ?
|
36
|
+
::FactoryGirl.create(name) :
|
37
|
+
::FactoryGirl.create(name, options)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def allowed_options
|
42
|
+
@allowed_options ||= @factory.send(:evaluator_class).attribute_list.names.map(&:to_s)
|
43
|
+
end
|
44
|
+
|
45
|
+
# Returns class deducted from factory
|
46
|
+
def orm_class
|
47
|
+
@factory.send(:class_name)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require "cockroach/base/node_structure"
|
2
|
+
|
3
|
+
module Cockroach
|
4
|
+
module FactoryGirl
|
5
|
+
# Profiler does all the routine to fill the database.
|
6
|
+
class Profiler
|
7
|
+
include Cockroach::Base::LoadNodes
|
8
|
+
include Cockroach::Base::NodeStructure
|
9
|
+
|
10
|
+
def initialize config = Cockroach.config
|
11
|
+
@source = config.profile
|
12
|
+
@base_models = @source.keys
|
13
|
+
end
|
14
|
+
|
15
|
+
# This method will load all the mentioned records into database
|
16
|
+
def load
|
17
|
+
unless @loaded
|
18
|
+
Cockroach::FactoryGirl::Loader.load
|
19
|
+
@source.each_pair do |name, structure|
|
20
|
+
node = Cockroach::FactoryGirl::Node.new(name, structure)
|
21
|
+
nodes[node.node_name] = node
|
22
|
+
end
|
23
|
+
@loaded = true
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# This method will load all the mentioned records into database
|
28
|
+
def load!
|
29
|
+
load unless @loaded
|
30
|
+
nodes.each_value(&:load!)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Cockroach
|
2
|
+
module Source
|
3
|
+
autoload :Node, 'cockroach/source/node'
|
4
|
+
autoload :Model, 'cockroach/source/model'
|
5
|
+
|
6
|
+
class << self
|
7
|
+
def get_source source_refs
|
8
|
+
if source_refs.is_a?(Hash) && source_refs.keys.include?('model')
|
9
|
+
get_model source_refs
|
10
|
+
else
|
11
|
+
get_node source_refs
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
protected
|
16
|
+
|
17
|
+
def get_model source_refs
|
18
|
+
model_name = source_refs.delete('model')
|
19
|
+
Cockroach::Source::Model.new model_name.to_s.constantize, source_refs
|
20
|
+
end
|
21
|
+
|
22
|
+
def get_node source_refs
|
23
|
+
return unless source_refs
|
24
|
+
if source_refs.is_a?(String)
|
25
|
+
source_path = [source_refs]
|
26
|
+
else
|
27
|
+
source_path = source_refs.flatten
|
28
|
+
while source_path.last.is_a? Hash
|
29
|
+
source_path << source_path.pop.flatten
|
30
|
+
end
|
31
|
+
end
|
32
|
+
source_path.flatten!
|
33
|
+
node = source_path.inject(::Cockroach.profiler) do |node_keeper, node_name|
|
34
|
+
node_keeper[node_name]
|
35
|
+
end
|
36
|
+
Cockroach::Source::Node.new node
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Cockroach
|
2
|
+
module Source
|
3
|
+
class Model
|
4
|
+
attr_reader :model
|
5
|
+
|
6
|
+
def initialize model, options = {}
|
7
|
+
@model = model
|
8
|
+
@options = options
|
9
|
+
end
|
10
|
+
|
11
|
+
# Returns a random record, among generated.
|
12
|
+
def sample
|
13
|
+
if @options.blank?
|
14
|
+
model.order('RAND()').first
|
15
|
+
else
|
16
|
+
if @options.has_key?("id")
|
17
|
+
find @options["id"]
|
18
|
+
elsif @options.has_key?("conditions")
|
19
|
+
model.order('RAND()').where(@options["conditions"]).first
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
protected
|
25
|
+
|
26
|
+
# Find among the record generated by this node.
|
27
|
+
# Returns ORM instance object
|
28
|
+
def find id
|
29
|
+
model.find id
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Cockroach
|
2
|
+
module Source
|
3
|
+
class Node
|
4
|
+
attr_reader :node
|
5
|
+
|
6
|
+
def initialize node
|
7
|
+
@node = node
|
8
|
+
end
|
9
|
+
|
10
|
+
# Returns a random record, among generated.
|
11
|
+
def sample
|
12
|
+
return nil if node.ids.empty?
|
13
|
+
id = node.ids.sample
|
14
|
+
find id
|
15
|
+
end
|
16
|
+
|
17
|
+
protected
|
18
|
+
|
19
|
+
# Find among the record generated by this node.
|
20
|
+
# Returns ORM instance object
|
21
|
+
def find id
|
22
|
+
return nil if node.ids.empty?
|
23
|
+
node.send(:orm_class).find id
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
#require 'rails/generators/generated_attribute'
|
2
|
+
|
3
|
+
module Cockroach
|
4
|
+
module Generators
|
5
|
+
class InstallGenerator < Rails::Generators::Base
|
6
|
+
source_root File.expand_path("../templates", __FILE__)
|
7
|
+
|
8
|
+
desc "Copy Faker config file into projects configuration folder"
|
9
|
+
|
10
|
+
# all public methods in here will be run in order
|
11
|
+
def copy_config
|
12
|
+
template "faker.yml", "config/faker.yml"
|
13
|
+
end
|
14
|
+
|
15
|
+
def copy_initializer
|
16
|
+
template "cockroach.rb", "config/initializers/cockroach.rb"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
#Cockroach.setup do |c|
|
2
|
+
# c.root = Rails.root
|
3
|
+
# c.config_path = "config/faker.yml"
|
4
|
+
# c.fixtures_path = File.expand_path(File.join('../../../', 'test', 'factories'), __FILE__)
|
5
|
+
#
|
6
|
+
# #the only available fixturer now is factory girl
|
7
|
+
# #c.fixturer = "factory_girl"
|
8
|
+
#end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# This file contains all the information, required for Cockroach to
|
2
|
+
# configure the amount of the generated records for fake database.
|
3
|
+
# It just keep the amount of the records that is required to generate, hierarhy
|
4
|
+
# and some other details conserning the generation way.
|
5
|
+
|
6
|
+
user_amount: 1000
|
7
|
+
|
8
|
+
feeds_ratio: 1000
|
9
|
+
|
10
|
+
cities:
|
11
|
+
amount: 1000
|
12
|
+
places:
|
13
|
+
ratio:
|
14
|
+
lower_limit: 100
|
15
|
+
upper_limit: 1000
|
16
|
+
address_amount: 1
|
@@ -0,0 +1,35 @@
|
|
1
|
+
namespace :cockroach do
|
2
|
+
desc "Validate your Cockroach config before load it."
|
3
|
+
task :validate, [:config_path] => [:environment] do |task, args|
|
4
|
+
if Cockroach.config && args[:config_path]
|
5
|
+
Cockroach.config.config_path = args[:config_path]
|
6
|
+
elsif args[:config_path]
|
7
|
+
Cockroach.setup do |c|
|
8
|
+
c.config_path = args[:config_path]
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
puts "Considering factory location as: #{Cockroach.config.fixtures_path || Cockroach::Config.root}"
|
13
|
+
|
14
|
+
Cockroach.profiler.load
|
15
|
+
puts "Config file is valid!"
|
16
|
+
end
|
17
|
+
|
18
|
+
desc "Run Cockroach generator"
|
19
|
+
task :generate, [:config_path] => [:environment] do |task, args|
|
20
|
+
Rake::Task["cockroach:validate"].invoke(args[:config_path])
|
21
|
+
|
22
|
+
Cockroach.profiler.load!
|
23
|
+
end
|
24
|
+
|
25
|
+
desc "Trancate the database, load seeds and run Cockroach generator"
|
26
|
+
task :reload, [:config_path] => [:environment] do |task, args|
|
27
|
+
args.with_defaults(:config_path => 'config/faker.yml')
|
28
|
+
|
29
|
+
Rake::Task["db:drop"].invoke
|
30
|
+
Rake::Task["db:create"].invoke
|
31
|
+
Rake::Task["db:migrate"].invoke
|
32
|
+
Rake::Task["db:seed"].invoke
|
33
|
+
Rake::Task["cockroach:generate"].invoke(args[:config_path])
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,129 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
module Cockroach
|
4
|
+
class ConfigTest < Test::Unit::TestCase
|
5
|
+
setup do
|
6
|
+
Cockroach::Config.root = File.expand_path("../../support/data/dummy_structure", __FILE__)
|
7
|
+
end
|
8
|
+
|
9
|
+
context "Config path assumptions" do
|
10
|
+
should "have predefined root path" do
|
11
|
+
assert_equal File.expand_path("../../support/data/dummy_structure", __FILE__), Cockroach::Config.root
|
12
|
+
end
|
13
|
+
|
14
|
+
should "assume rails root is defined" do
|
15
|
+
Cockroach::Config.root = nil
|
16
|
+
Rails.stubs(:root).returns("/some/fancy/path")
|
17
|
+
|
18
|
+
assert_equal "/some/fancy/path", Cockroach::Config.root
|
19
|
+
end
|
20
|
+
|
21
|
+
# should "assume rails root is not defined" do
|
22
|
+
# Cockroach::Config.root = nil
|
23
|
+
#
|
24
|
+
# Object.stubs(:defined?).with(Rails).returns(false)
|
25
|
+
#
|
26
|
+
# assert_raise Cockroach::Config::MissingRootPathError do
|
27
|
+
# Cockroach::Config.root
|
28
|
+
# end
|
29
|
+
# end
|
30
|
+
|
31
|
+
should "deduct root path from relative path" do
|
32
|
+
config = Cockroach::Config.new "../correct_with_option.yml"
|
33
|
+
|
34
|
+
assert config
|
35
|
+
end
|
36
|
+
|
37
|
+
should "deduct root path from absolute path" do
|
38
|
+
config = Cockroach::Config.new File.expand_path("../correct_with_option.yml", Cockroach::Config.root)
|
39
|
+
|
40
|
+
assert config
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context "Fixturers" do
|
45
|
+
context "FactoryGirl" do
|
46
|
+
should "be default" do
|
47
|
+
config = Cockroach::Config.new "../correct_with_option.yml"
|
48
|
+
|
49
|
+
assert_equal :FactoryGirl, config.fixturer
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
context "Profiler" do
|
55
|
+
setup do
|
56
|
+
Cockroach.setup {|config|}
|
57
|
+
end
|
58
|
+
|
59
|
+
should "be delegated" do
|
60
|
+
assert_instance_of Cockroach::FactoryGirl::Profiler, Cockroach.profiler
|
61
|
+
end
|
62
|
+
|
63
|
+
should "create and keep new profiler" do
|
64
|
+
assert_instance_of Cockroach::FactoryGirl::Profiler, Cockroach.config.profiler
|
65
|
+
end
|
66
|
+
|
67
|
+
should "hit profiler once" do
|
68
|
+
::Cockroach::FactoryGirl::Profiler.expects(:new).once.returns(true)
|
69
|
+
|
70
|
+
Cockroach.config.profiler
|
71
|
+
Cockroach.config.profiler
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
class SetupTest < Test::Unit::TestCase
|
77
|
+
context "Config class" do
|
78
|
+
def setup
|
79
|
+
@old = Cockroach::Config.dup
|
80
|
+
end
|
81
|
+
|
82
|
+
def teardown
|
83
|
+
silence_warnings { Cockroach.const_set('Config', @old) }
|
84
|
+
end
|
85
|
+
|
86
|
+
should "set root" do
|
87
|
+
Cockroach.setup do |c|
|
88
|
+
c.root = File.expand_path("../../support/data/dummy_structure", __FILE__)
|
89
|
+
end
|
90
|
+
|
91
|
+
assert_equal File.expand_path("../../support/data/dummy_structure", __FILE__), Cockroach::Config.root
|
92
|
+
|
93
|
+
end
|
94
|
+
|
95
|
+
should "set config_path" do
|
96
|
+
Cockroach.setup do |c|
|
97
|
+
c.root = File.expand_path("../../support/data/", __FILE__)
|
98
|
+
c.config_path = "./correct_with_option.yml"
|
99
|
+
end
|
100
|
+
|
101
|
+
assert_equal File.expand_path("../../support/data/correct_with_option.yml", __FILE__), Cockroach.config.instance_variable_get(:@config_path)
|
102
|
+
end
|
103
|
+
|
104
|
+
should "set fixtures_path" do
|
105
|
+
Cockroach.setup do |c|
|
106
|
+
c.root = File.expand_path("../../support/data/", __FILE__)
|
107
|
+
c.config_path = "./correct_with_option.yml"
|
108
|
+
c.fixtures_path = "some path to fixtures"
|
109
|
+
end
|
110
|
+
|
111
|
+
assert_equal "some path to fixtures", Cockroach.config.instance_variable_get(:@fixtures_path)
|
112
|
+
end
|
113
|
+
|
114
|
+
should "set fixturer" do
|
115
|
+
Object.const_set('FactoryBoy', mock('factory-boy'))
|
116
|
+
Cockroach.setup do |c|
|
117
|
+
c.root = File.expand_path("../../support/data/dummy_structure", __FILE__)
|
118
|
+
c.fixturer = :factory_boy
|
119
|
+
end
|
120
|
+
|
121
|
+
config = Cockroach.config
|
122
|
+
|
123
|
+
assert_equal :FactoryBoy, config.fixturer
|
124
|
+
Object.__send__(:remove_const,'FactoryBoy')
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
end
|
129
|
+
end
|