challah 0.5.2 → 0.5.3
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/CHANGELOG.md +9 -2
- data/README.md +18 -18
- data/lib/challah/test.rb +22 -5
- data/lib/challah/version.rb +1 -1
- data/test/audit_test.rb +32 -32
- data/test/controller_test.rb +9 -9
- data/test/cookie_store_test.rb +25 -25
- data/test/factories.rb +7 -7
- data/test/helper.rb +14 -12
- data/test/permission_test.rb +14 -14
- data/test/restrictions_controller_test.rb +29 -30
- data/test/role_test.rb +26 -26
- data/test/session_test.rb +65 -65
- data/test/sessions_controller_test.rb +13 -13
- data/test/simple_cookie_store_test.rb +25 -25
- data/test/user_test.rb +79 -79
- data/vendor/bundle/cache/factory_girl-3.0.0.gem +0 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/Appraisals +11 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/CONTRIBUTION_GUIDELINES.md +10 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/Changelog +168 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/GETTING_STARTED.md +735 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/Gemfile +5 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/Gemfile.lock +95 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/LICENSE +19 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/README.md +70 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/Rakefile +38 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/cucumber.yml +1 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/factory_girl.gemspec +38 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/features/factory_girl_steps.feature +237 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/features/find_definitions.feature +75 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/features/step_definitions/database_steps.rb +42 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/features/step_definitions/factory_girl_steps.rb +43 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/features/support/env.rb +11 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/features/support/factories.rb +119 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/gemfiles/2.3.gemfile +7 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/gemfiles/3.0.gemfile +7 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/gemfiles/3.0.gemfile.lock +86 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/gemfiles/3.1.gemfile +7 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/gemfiles/3.1.gemfile.lock +95 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/gemfiles/3.2.gemfile +7 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/gemfiles/3.2.gemfile.lock +93 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl.rb +69 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/aliases.rb +19 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/attribute.rb +40 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/attribute/association.rb +23 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/attribute/dynamic.rb +20 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/attribute/sequence.rb +17 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/attribute/static.rb +15 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/attribute_assigner.rb +73 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/attribute_list.rb +54 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/callback.rb +33 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/declaration.rb +22 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/declaration/association.rb +25 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/declaration/dynamic.rb +25 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/declaration/implicit.rb +32 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/declaration/static.rb +25 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/declaration_list.rb +48 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/definition.rb +76 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/definition_proxy.rb +159 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/errors.rb +19 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/evaluator.rb +76 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/evaluator_class_definer.rb +34 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/factory.rb +145 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/factory_runner.rb +24 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/find_definitions.rb +25 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/null_factory.rb +15 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/null_object.rb +7 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/registry.rb +46 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/reload.rb +8 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/sequence.rb +24 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/step_definitions.rb +130 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/strategy.rb +32 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/strategy/attributes_for.rb +12 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/strategy/build.rb +15 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/strategy/create.rb +17 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/strategy/stub.rb +61 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/strategy_calculator.rb +29 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/syntax.rb +16 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/syntax/blueprint.rb +42 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/syntax/default.rb +56 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/syntax/generate.rb +70 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/syntax/make.rb +45 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/syntax/methods.rb +136 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/syntax/sham.rb +45 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/syntax/vintage.rb +130 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/trait.rb +29 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/lib/factory_girl/version.rb +4 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/aliases_spec.rb +19 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/attribute_aliases_spec.rb +45 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/attribute_existing_on_object_spec.rb +68 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/attributes_for_spec.rb +89 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/attributes_from_instance_spec.rb +53 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/attributes_ordered_spec.rb +51 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/build_list_spec.rb +41 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/build_spec.rb +89 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/build_stubbed_spec.rb +104 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/callbacks_spec.rb +47 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/create_list_spec.rb +82 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/create_spec.rb +117 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/define_child_before_parent_spec.rb +21 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/definition_spec.rb +26 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/definition_without_block_spec.rb +15 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/initialize_with_spec.rb +147 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/modify_factories_spec.rb +184 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/modify_inherited_spec.rb +52 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/nested_attributes_spec.rb +32 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/overrides_spec.rb +61 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/parent_spec.rb +90 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/sequence_spec.rb +33 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/stub_spec.rb +62 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/syntax/blueprint_spec.rb +34 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/syntax/generate_spec.rb +59 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/syntax/make_spec.rb +52 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/syntax/sham_spec.rb +43 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/syntax/vintage_spec.rb +217 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/traits_spec.rb +421 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/acceptance/transient_attributes_spec.rb +124 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/aliases_spec.rb +31 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/attribute/association_spec.rb +28 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/attribute/dynamic_spec.rb +52 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/attribute/sequence_spec.rb +16 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/attribute/static_spec.rb +19 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/attribute_list_spec.rb +78 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/attribute_spec.rb +16 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/callback_spec.rb +41 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/declaration/implicit_spec.rb +25 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/declaration_list_spec.rb +71 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/definition_proxy_spec.rb +197 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/definition_spec.rb +104 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/evaluator_class_definer_spec.rb +54 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/factory_spec.rb +279 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/find_definitions_spec.rb +110 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/null_factory_spec.rb +13 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/null_object_spec.rb +8 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/registry_spec.rb +81 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/sequence_spec.rb +47 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/strategy/attributes_for_spec.rb +18 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/strategy/build_spec.rb +7 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/strategy/create_spec.rb +13 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/strategy/stub_spec.rb +40 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/strategy_calculator_spec.rb +33 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl/strategy_spec.rb +21 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/factory_girl_spec.rb +22 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/spec_helper.rb +26 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/support/macros/define_constant.rb +86 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/support/matchers/callback.rb +9 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/support/matchers/declaration.rb +71 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/support/matchers/delegate.rb +44 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/support/matchers/trait.rb +9 -0
- data/vendor/bundle/gems/factory_girl-3.0.0/spec/support/shared_examples/strategy.rb +104 -0
- data/vendor/bundle/specifications/factory_girl-3.0.0.gemspec +62 -0
- metadata +147 -12
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe "defining a child factory before a parent" do
|
|
4
|
+
before do
|
|
5
|
+
define_model("User", name: :string, admin: :boolean, email: :string, upper_email: :string, login: :string)
|
|
6
|
+
|
|
7
|
+
FactoryGirl.define do
|
|
8
|
+
factory :admin, parent: :user do
|
|
9
|
+
admin true
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
factory :user do
|
|
13
|
+
name "awesome"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "creates admin factories correctly" do
|
|
19
|
+
FactoryGirl.create(:admin).should be_admin
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "an instance generated by a factory with a custom class name" do
|
|
4
|
+
before do
|
|
5
|
+
define_model("User", admin: :boolean)
|
|
6
|
+
|
|
7
|
+
FactoryGirl.define do
|
|
8
|
+
factory :user
|
|
9
|
+
|
|
10
|
+
factory :admin, class: User do
|
|
11
|
+
admin { true }
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
subject { FactoryGirl.create(:admin) }
|
|
17
|
+
|
|
18
|
+
it "uses the correct class name" do
|
|
19
|
+
should be_kind_of(User)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it "uses the correct factory definition" do
|
|
23
|
+
should be_admin
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "an instance generated by a factory" do
|
|
4
|
+
before do
|
|
5
|
+
define_model("User")
|
|
6
|
+
|
|
7
|
+
FactoryGirl.define do
|
|
8
|
+
factory :user
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "registers the user factory" do
|
|
13
|
+
FactoryGirl.factory_by_name(:user).should be_a(FactoryGirl::Factory)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe "initialize_with with non-FG attributes" do
|
|
4
|
+
include FactoryGirl::Syntax::Methods
|
|
5
|
+
|
|
6
|
+
before do
|
|
7
|
+
define_model("User", name: :string, age: :integer) do
|
|
8
|
+
def self.construct(name, age)
|
|
9
|
+
new(name: name, age: age)
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
FactoryGirl.define do
|
|
14
|
+
factory :user do
|
|
15
|
+
initialize_with { User.construct("John Doe", 21) }
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
subject { build(:user) }
|
|
21
|
+
its(:name) { should == "John Doe" }
|
|
22
|
+
its(:age) { should == 21 }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe "initialize_with with FG attributes that are ignored" do
|
|
26
|
+
include FactoryGirl::Syntax::Methods
|
|
27
|
+
|
|
28
|
+
before do
|
|
29
|
+
define_model("User", name: :string) do
|
|
30
|
+
def self.construct(name)
|
|
31
|
+
new(name: "#{name} from .construct")
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
FactoryGirl.define do
|
|
36
|
+
factory :user do
|
|
37
|
+
ignore do
|
|
38
|
+
name { "Handsome Chap" }
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
initialize_with { User.construct(name) }
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
subject { build(:user) }
|
|
47
|
+
its(:name) { should == "Handsome Chap from .construct" }
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
describe "initialize_with with FG attributes that are not ignored" do
|
|
51
|
+
include FactoryGirl::Syntax::Methods
|
|
52
|
+
|
|
53
|
+
before do
|
|
54
|
+
define_model("User", name: :string) do
|
|
55
|
+
def self.construct(name)
|
|
56
|
+
new(name: "#{name} from .construct")
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
FactoryGirl.define do
|
|
61
|
+
factory :user do
|
|
62
|
+
name { "Handsome Chap" }
|
|
63
|
+
|
|
64
|
+
initialize_with { User.construct(name) }
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "assigns each attribute even if the attribute has been used in the constructor" do
|
|
70
|
+
build(:user).name.should == "Handsome Chap"
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
describe "initialize_with non-ORM-backed objects" do
|
|
75
|
+
include FactoryGirl::Syntax::Methods
|
|
76
|
+
|
|
77
|
+
before do
|
|
78
|
+
define_class("ReportGenerator") do
|
|
79
|
+
attr_reader :name, :data
|
|
80
|
+
|
|
81
|
+
def initialize(name, data)
|
|
82
|
+
@name = name
|
|
83
|
+
@data = data
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
FactoryGirl.define do
|
|
88
|
+
sequence(:random_data) { 5.times.map { Kernel.rand(200) } }
|
|
89
|
+
|
|
90
|
+
factory :report_generator do
|
|
91
|
+
ignore do
|
|
92
|
+
name "My Awesome Report"
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
initialize_with { ReportGenerator.new(name, FactoryGirl.generate(:random_data)) }
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
it "allows for overrides" do
|
|
101
|
+
build(:report_generator, name: "Overridden").name.should == "Overridden"
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
it "generates random data" do
|
|
105
|
+
build(:report_generator).data.length.should == 5
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
describe "initialize_with parent and child factories" do
|
|
110
|
+
before do
|
|
111
|
+
define_class("Awesome") do
|
|
112
|
+
attr_reader :name
|
|
113
|
+
|
|
114
|
+
def initialize(name)
|
|
115
|
+
@name = name
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
FactoryGirl.define do
|
|
120
|
+
factory :awesome do
|
|
121
|
+
ignore do
|
|
122
|
+
name "Great"
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
initialize_with { Awesome.new(name) }
|
|
126
|
+
|
|
127
|
+
factory :sub_awesome do
|
|
128
|
+
ignore do
|
|
129
|
+
name "Sub"
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
factory :super_awesome do
|
|
134
|
+
initialize_with { Awesome.new("Super") }
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
it "uses the parent's constructor when the child factory doesn't assign it" do
|
|
141
|
+
FactoryGirl.build(:sub_awesome).name.should == "Sub"
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
it "allows child factories to override initialize_with" do
|
|
145
|
+
FactoryGirl.build(:super_awesome).name.should == "Super"
|
|
146
|
+
end
|
|
147
|
+
end
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe "modifying factories" do
|
|
4
|
+
include FactoryGirl::Syntax::Methods
|
|
5
|
+
|
|
6
|
+
before do
|
|
7
|
+
define_model('User', name: :string, admin: :boolean, email: :string, login: :string)
|
|
8
|
+
|
|
9
|
+
FactoryGirl.define do
|
|
10
|
+
sequence(:email) {|n| "user#{n}@example.com" }
|
|
11
|
+
|
|
12
|
+
factory :user do
|
|
13
|
+
email
|
|
14
|
+
|
|
15
|
+
after_create do |user|
|
|
16
|
+
user.login = user.name.upcase if user.name
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
factory :admin do
|
|
20
|
+
admin true
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
context "simple modification" do
|
|
27
|
+
before do
|
|
28
|
+
FactoryGirl.modify do
|
|
29
|
+
factory :user do
|
|
30
|
+
name "Great User"
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
subject { create(:user) }
|
|
36
|
+
its(:name) { should == "Great User" }
|
|
37
|
+
its(:login) { should == "GREAT USER" }
|
|
38
|
+
|
|
39
|
+
it "doesn't allow the factory to be subsequently defined" do
|
|
40
|
+
expect do
|
|
41
|
+
FactoryGirl.define { factory :user }
|
|
42
|
+
end.to raise_error(FactoryGirl::DuplicateDefinitionError, "Factory already registered: user")
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "does allow the factory to be subsequently modified" do
|
|
46
|
+
FactoryGirl.modify do
|
|
47
|
+
factory :user do
|
|
48
|
+
name "Overridden again!"
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
create(:user).name.should == "Overridden again!"
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
context "adding callbacks" do
|
|
57
|
+
before do
|
|
58
|
+
FactoryGirl.modify do
|
|
59
|
+
factory :user do
|
|
60
|
+
name "Great User"
|
|
61
|
+
after_create do |user|
|
|
62
|
+
user.name = user.name.downcase
|
|
63
|
+
user.login = nil
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
subject { create(:user) }
|
|
70
|
+
|
|
71
|
+
its(:name) { should == "great user" }
|
|
72
|
+
its(:login) { should be_nil }
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
context "reusing traits" do
|
|
76
|
+
before do
|
|
77
|
+
FactoryGirl.define do
|
|
78
|
+
trait :rockstar do
|
|
79
|
+
name "Johnny Rockstar!!!"
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
FactoryGirl.modify do
|
|
84
|
+
factory :user do
|
|
85
|
+
rockstar
|
|
86
|
+
email { "#{name}@example.com" }
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
subject { create(:user) }
|
|
92
|
+
|
|
93
|
+
its(:name) { should == "Johnny Rockstar!!!" }
|
|
94
|
+
its(:email) { should == "Johnny Rockstar!!!@example.com" }
|
|
95
|
+
its(:login) { should == "JOHNNY ROCKSTAR!!!" }
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
context "redefining attributes" do
|
|
99
|
+
before do
|
|
100
|
+
FactoryGirl.modify do
|
|
101
|
+
factory :user do
|
|
102
|
+
email { "#{name}-modified@example.com" }
|
|
103
|
+
name "Great User"
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
context "creating user" do
|
|
109
|
+
context "without overrides" do
|
|
110
|
+
subject { create(:user) }
|
|
111
|
+
|
|
112
|
+
its(:name) { should == "Great User" }
|
|
113
|
+
its(:email) { should == "Great User-modified@example.com" }
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
context "overriding dynamic attributes" do
|
|
117
|
+
subject { create(:user, email: "perfect@example.com") }
|
|
118
|
+
|
|
119
|
+
its(:name) { should == "Great User" }
|
|
120
|
+
its(:email) { should == "perfect@example.com" }
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
context "overriding static attributes" do
|
|
124
|
+
subject { create(:user, name: "wonderful") }
|
|
125
|
+
|
|
126
|
+
its(:name) { should == "wonderful" }
|
|
127
|
+
its(:email) { should == "wonderful-modified@example.com" }
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
context "creating admin" do
|
|
132
|
+
context "without overrides" do
|
|
133
|
+
subject { create(:admin) }
|
|
134
|
+
|
|
135
|
+
its(:name) { should == "Great User" }
|
|
136
|
+
its(:email) { should == "Great User-modified@example.com" }
|
|
137
|
+
its(:admin) { should be_true }
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
context "overriding dynamic attributes" do
|
|
141
|
+
subject { create(:admin, email: "perfect@example.com") }
|
|
142
|
+
|
|
143
|
+
its(:name) { should == "Great User" }
|
|
144
|
+
its(:email) { should == "perfect@example.com" }
|
|
145
|
+
its(:admin) { should be_true }
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
context "overriding static attributes" do
|
|
149
|
+
subject { create(:admin, name: "wonderful") }
|
|
150
|
+
|
|
151
|
+
its(:name) { should == "wonderful" }
|
|
152
|
+
its(:email) { should == "wonderful-modified@example.com" }
|
|
153
|
+
its(:admin) { should be_true }
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
it "doesn't overwrite already defined child's attributes" do
|
|
159
|
+
FactoryGirl.modify do
|
|
160
|
+
factory :user do
|
|
161
|
+
admin false
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
create(:admin).should be_admin
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
it "allows for overriding child classes" do
|
|
168
|
+
FactoryGirl.modify do
|
|
169
|
+
factory :admin do
|
|
170
|
+
admin false
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
create(:admin).should_not be_admin
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
it "raises an exception if the factory was not defined before" do
|
|
178
|
+
lambda {
|
|
179
|
+
FactoryGirl.modify do
|
|
180
|
+
factory :unknown_factory
|
|
181
|
+
end
|
|
182
|
+
}.should raise_error(ArgumentError)
|
|
183
|
+
end
|
|
184
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe "modifying inherited factories with traits" do
|
|
4
|
+
before do
|
|
5
|
+
define_model('User', gender: :string, admin: :boolean, age: :integer)
|
|
6
|
+
FactoryGirl.define do
|
|
7
|
+
factory :user do
|
|
8
|
+
trait(:female) { gender "Female" }
|
|
9
|
+
trait(:male) { gender "Male" }
|
|
10
|
+
|
|
11
|
+
trait(:young_admin) do
|
|
12
|
+
admin true
|
|
13
|
+
age 17
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
female
|
|
17
|
+
young_admin
|
|
18
|
+
|
|
19
|
+
factory :female_user do
|
|
20
|
+
gender "Female"
|
|
21
|
+
age 25
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
factory :male_user do
|
|
25
|
+
gender "Male"
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "returns the correct value for overridden attributes from traits" do
|
|
32
|
+
FactoryGirl.build(:male_user).gender.should == "Male"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "returns the correct value for overridden attributes from traits defining multiple attributes" do
|
|
36
|
+
FactoryGirl.build(:female_user).gender.should == "Female"
|
|
37
|
+
FactoryGirl.build(:female_user).age.should == 25
|
|
38
|
+
FactoryGirl.build(:female_user).admin.should == true
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "allows modification of attributes created via traits" do
|
|
42
|
+
FactoryGirl.modify do
|
|
43
|
+
factory :male_user do
|
|
44
|
+
age 20
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
FactoryGirl.build(:male_user).gender.should == "Male"
|
|
49
|
+
FactoryGirl.build(:male_user).age.should == 20
|
|
50
|
+
FactoryGirl.build(:male_user).admin.should == true
|
|
51
|
+
end
|
|
52
|
+
end
|