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,51 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "a generated attributes hash where order matters" do
|
|
4
|
+
include FactoryGirl::Syntax::Methods
|
|
5
|
+
|
|
6
|
+
before do
|
|
7
|
+
define_model('ParentModel', static: :integer,
|
|
8
|
+
evaluates_first: :integer,
|
|
9
|
+
evaluates_second: :integer,
|
|
10
|
+
evaluates_third: :integer)
|
|
11
|
+
|
|
12
|
+
FactoryGirl.define do
|
|
13
|
+
factory :parent_model do
|
|
14
|
+
evaluates_first { static }
|
|
15
|
+
evaluates_second { evaluates_first }
|
|
16
|
+
evaluates_third { evaluates_second }
|
|
17
|
+
|
|
18
|
+
factory :child_model do
|
|
19
|
+
static 1
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
factory :without_parent, class: ParentModel do
|
|
24
|
+
evaluates_first { static }
|
|
25
|
+
evaluates_second { evaluates_first }
|
|
26
|
+
evaluates_third { evaluates_second }
|
|
27
|
+
static 1
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
context "factory with a parent" do
|
|
33
|
+
subject { FactoryGirl.build(:child_model) }
|
|
34
|
+
|
|
35
|
+
it "assigns attributes in the order they're defined with preference to static attributes" do
|
|
36
|
+
subject[:evaluates_first].should == 1
|
|
37
|
+
subject[:evaluates_second].should == 1
|
|
38
|
+
subject[:evaluates_third].should == 1
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
context "factory without a parent" do
|
|
43
|
+
subject { FactoryGirl.build(:without_parent) }
|
|
44
|
+
|
|
45
|
+
it "assigns attributes in the order they're defined with preference to static attributes without a parent class" do
|
|
46
|
+
subject[:evaluates_first].should == 1
|
|
47
|
+
subject[:evaluates_second].should == 1
|
|
48
|
+
subject[:evaluates_third].should == 1
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "build multiple instances" do
|
|
4
|
+
before do
|
|
5
|
+
define_model('Post', title: :string)
|
|
6
|
+
|
|
7
|
+
FactoryGirl.define do
|
|
8
|
+
factory(:post) do |post|
|
|
9
|
+
post.title "Through the Looking Glass"
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
context "without default attributes" do
|
|
15
|
+
subject { FactoryGirl.build_list(:post, 20) }
|
|
16
|
+
|
|
17
|
+
its(:length) { should == 20 }
|
|
18
|
+
|
|
19
|
+
it "builds (but doesn't save) all the posts" do
|
|
20
|
+
subject.each do |record|
|
|
21
|
+
record.should be_new_record
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "uses the default factory values" do
|
|
26
|
+
subject.each do |record|
|
|
27
|
+
record.title.should == "Through the Looking Glass"
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
context "with default attributes" do
|
|
33
|
+
subject { FactoryGirl.build_list(:post, 20, title: "The Hunting of the Snark") }
|
|
34
|
+
|
|
35
|
+
it "overrides the default values" do
|
|
36
|
+
subject.each do |record|
|
|
37
|
+
record.title.should == "The Hunting of the Snark"
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "a built instance" do
|
|
4
|
+
include FactoryGirl::Syntax::Methods
|
|
5
|
+
|
|
6
|
+
before do
|
|
7
|
+
define_model('User')
|
|
8
|
+
|
|
9
|
+
define_model('Post', user_id: :integer) do
|
|
10
|
+
belongs_to :user
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
FactoryGirl.define do
|
|
14
|
+
factory :user
|
|
15
|
+
|
|
16
|
+
factory :post do
|
|
17
|
+
user
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
subject { build(:post) }
|
|
23
|
+
|
|
24
|
+
it "isn't saved" do
|
|
25
|
+
should be_new_record
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "assigns and saves associations" do
|
|
29
|
+
subject.user.should be_kind_of(User)
|
|
30
|
+
subject.user.should_not be_new_record
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
describe "a built instance with strategy: :build" do
|
|
35
|
+
include FactoryGirl::Syntax::Methods
|
|
36
|
+
|
|
37
|
+
before do
|
|
38
|
+
define_model('User')
|
|
39
|
+
|
|
40
|
+
define_model('Post', user_id: :integer) do
|
|
41
|
+
belongs_to :user
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
FactoryGirl.define do
|
|
45
|
+
factory :user
|
|
46
|
+
|
|
47
|
+
factory :post do
|
|
48
|
+
association(:user, strategy: :build)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
subject { build(:post) }
|
|
54
|
+
|
|
55
|
+
it "isn't saved" do
|
|
56
|
+
should be_new_record
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it "assigns but does not save associations" do
|
|
60
|
+
subject.user.should be_kind_of(User)
|
|
61
|
+
subject.user.should be_new_record
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
describe "calling `build` with a block" do
|
|
66
|
+
include FactoryGirl::Syntax::Methods
|
|
67
|
+
|
|
68
|
+
before do
|
|
69
|
+
define_model('Company', name: :string)
|
|
70
|
+
|
|
71
|
+
FactoryGirl.define do
|
|
72
|
+
factory :company
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
it "passes the built instance" do
|
|
77
|
+
build(:company, name: 'thoughtbot') do |company|
|
|
78
|
+
company.name.should eq('thoughtbot')
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it "returns the built instance" do
|
|
83
|
+
expected = nil
|
|
84
|
+
build(:company) do |company|
|
|
85
|
+
expected = company
|
|
86
|
+
"hello!"
|
|
87
|
+
end.should == expected
|
|
88
|
+
end
|
|
89
|
+
end
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "a generated stub instance" do
|
|
4
|
+
include FactoryGirl::Syntax::Methods
|
|
5
|
+
|
|
6
|
+
before do
|
|
7
|
+
define_model('User')
|
|
8
|
+
|
|
9
|
+
define_model('Post', title: :string,
|
|
10
|
+
body: :string,
|
|
11
|
+
age: :integer,
|
|
12
|
+
user_id: :integer) do
|
|
13
|
+
belongs_to :user
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
FactoryGirl.define do
|
|
17
|
+
factory :user
|
|
18
|
+
|
|
19
|
+
factory :post do
|
|
20
|
+
title { "default title" }
|
|
21
|
+
body { "default body" }
|
|
22
|
+
user
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
subject { build_stubbed(:post, title: 'overridden title') }
|
|
28
|
+
|
|
29
|
+
it "assigns a default attribute" do
|
|
30
|
+
subject.body.should == 'default body'
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "assigns an overridden attribute" do
|
|
34
|
+
subject.title.should == 'overridden title'
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it "assigns associations" do
|
|
38
|
+
subject.user.should_not be_nil
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "has an id" do
|
|
42
|
+
subject.id.should > 0
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "generates unique ids" do
|
|
46
|
+
other_stub = build_stubbed(:post)
|
|
47
|
+
subject.id.should_not == other_stub.id
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "isn't a new record" do
|
|
51
|
+
should_not be_new_record
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "disables connection" do
|
|
55
|
+
lambda { subject.connection }.should raise_error(RuntimeError)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "disables update_attribute" do
|
|
59
|
+
lambda { subject.update_attribute(:title, "value") }.should raise_error(RuntimeError)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it "disables reload" do
|
|
63
|
+
lambda { subject.reload }.should raise_error(RuntimeError)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it "disables destroy" do
|
|
67
|
+
lambda { subject.destroy }.should raise_error(RuntimeError)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it "disables save" do
|
|
71
|
+
lambda { subject.save }.should raise_error(RuntimeError)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
it "disables increment" do
|
|
75
|
+
lambda { subject.increment!(:age) }.should raise_error(RuntimeError)
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
describe "calling `build_stubbed` with a block" do
|
|
80
|
+
include FactoryGirl::Syntax::Methods
|
|
81
|
+
|
|
82
|
+
before do
|
|
83
|
+
define_model('Company', name: :string)
|
|
84
|
+
|
|
85
|
+
FactoryGirl.define do
|
|
86
|
+
factory :company
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it "passes the stub instance" do
|
|
91
|
+
build_stubbed(:company, name: 'thoughtbot') do |company|
|
|
92
|
+
company.name.should eq('thoughtbot')
|
|
93
|
+
expect { company.save }.to raise_error(RuntimeError)
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
it "returns the stub instance" do
|
|
98
|
+
expected = nil
|
|
99
|
+
build_stubbed(:company) do |company|
|
|
100
|
+
expected = company
|
|
101
|
+
"hello!"
|
|
102
|
+
end.should == expected
|
|
103
|
+
end
|
|
104
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "callbacks" do
|
|
4
|
+
before do
|
|
5
|
+
define_model("User", first_name: :string, last_name: :string)
|
|
6
|
+
|
|
7
|
+
FactoryGirl.define do
|
|
8
|
+
factory :user_with_callbacks, class: :user do
|
|
9
|
+
after_stub { |user| user.first_name = 'Stubby' }
|
|
10
|
+
after_build { |user| user.first_name = 'Buildy' }
|
|
11
|
+
after_create { |user| user.last_name = 'Createy' }
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
factory :user_with_inherited_callbacks, parent: :user_with_callbacks do
|
|
15
|
+
after_stub { |user| user.last_name = 'Double-Stubby' }
|
|
16
|
+
after_build { |user| user.first_name = 'Child-Buildy' }
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "runs the after_stub callback when stubbing" do
|
|
22
|
+
user = FactoryGirl.build_stubbed(:user_with_callbacks)
|
|
23
|
+
user.first_name.should == 'Stubby'
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "runs the after_build callback when building" do
|
|
27
|
+
user = FactoryGirl.build(:user_with_callbacks)
|
|
28
|
+
user.first_name.should == 'Buildy'
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "runs both the after_build and after_create callbacks when creating" do
|
|
32
|
+
user = FactoryGirl.create(:user_with_callbacks)
|
|
33
|
+
user.first_name.should == 'Buildy'
|
|
34
|
+
user.last_name.should == 'Createy'
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it "runs both the after_stub callback on the factory and the inherited after_stub callback" do
|
|
38
|
+
user = FactoryGirl.build_stubbed(:user_with_inherited_callbacks)
|
|
39
|
+
user.first_name.should == 'Stubby'
|
|
40
|
+
user.last_name.should == 'Double-Stubby'
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "runs child callback after parent callback" do
|
|
44
|
+
user = FactoryGirl.build(:user_with_inherited_callbacks)
|
|
45
|
+
user.first_name.should == 'Child-Buildy'
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "create multiple instances" do
|
|
4
|
+
before do
|
|
5
|
+
define_model('Post', title: :string)
|
|
6
|
+
|
|
7
|
+
FactoryGirl.define do
|
|
8
|
+
factory(:post) do |post|
|
|
9
|
+
post.title "Through the Looking Glass"
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
context "without default attributes" do
|
|
15
|
+
subject { FactoryGirl.create_list(:post, 20) }
|
|
16
|
+
|
|
17
|
+
its(:length) { should == 20 }
|
|
18
|
+
|
|
19
|
+
it "creates all the posts" do
|
|
20
|
+
subject.each do |record|
|
|
21
|
+
record.should_not be_new_record
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "uses the default factory values" do
|
|
26
|
+
subject.each do |record|
|
|
27
|
+
record.title.should == "Through the Looking Glass"
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
context "with default attributes" do
|
|
33
|
+
subject { FactoryGirl.create_list(:post, 20, title: "The Hunting of the Snark") }
|
|
34
|
+
|
|
35
|
+
it "overrides the default values" do
|
|
36
|
+
subject.each do |record|
|
|
37
|
+
record.title.should == "The Hunting of the Snark"
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
describe "multiple creates and ignored attributes to dynamically build attribute lists" do
|
|
44
|
+
before do
|
|
45
|
+
define_model('User', name: :string) do
|
|
46
|
+
has_many :posts
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
define_model('Post', title: :string, user_id: :integer) do
|
|
50
|
+
belongs_to :user
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
FactoryGirl.define do
|
|
54
|
+
factory :post do
|
|
55
|
+
title "Through the Looking Glass"
|
|
56
|
+
user
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
factory :user do
|
|
60
|
+
name "John Doe"
|
|
61
|
+
|
|
62
|
+
factory :user_with_posts do
|
|
63
|
+
ignore do
|
|
64
|
+
posts_count 5
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
after_create do |user, evaluator|
|
|
68
|
+
FactoryGirl.create_list(:post, evaluator.posts_count, user: user)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
it "generates the correct number of posts" do
|
|
76
|
+
FactoryGirl.create(:user_with_posts).posts.length.should == 5
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
it "allows the number of posts to be modified" do
|
|
80
|
+
FactoryGirl.create(:user_with_posts, posts_count: 2).posts.length.should == 2
|
|
81
|
+
end
|
|
82
|
+
end
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe "a created instance" do
|
|
4
|
+
include FactoryGirl::Syntax::Methods
|
|
5
|
+
|
|
6
|
+
before do
|
|
7
|
+
define_model('User')
|
|
8
|
+
|
|
9
|
+
define_model('Post', user_id: :integer) do
|
|
10
|
+
belongs_to :user
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
FactoryGirl.define do
|
|
14
|
+
factory :user
|
|
15
|
+
|
|
16
|
+
factory :post do
|
|
17
|
+
user
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
subject { create('post') }
|
|
23
|
+
|
|
24
|
+
it "saves" do
|
|
25
|
+
should_not be_new_record
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "assigns and saves associations" do
|
|
29
|
+
subject.user.should be_kind_of(User)
|
|
30
|
+
subject.user.should_not be_new_record
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
describe "a created instance, specifying strategy: :build" do
|
|
35
|
+
include FactoryGirl::Syntax::Methods
|
|
36
|
+
|
|
37
|
+
before do
|
|
38
|
+
define_model('User')
|
|
39
|
+
|
|
40
|
+
define_model('Post', user_id: :integer) do
|
|
41
|
+
belongs_to :user
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
FactoryGirl.define do
|
|
45
|
+
factory :user
|
|
46
|
+
|
|
47
|
+
factory :post do
|
|
48
|
+
association(:user, strategy: :build)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
subject { create(:post) }
|
|
54
|
+
|
|
55
|
+
it "saves associations (strategy: :build only affects build, not create)" do
|
|
56
|
+
subject.user.should be_kind_of(User)
|
|
57
|
+
subject.user.should_not be_new_record
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
describe "a custom create" do
|
|
62
|
+
include FactoryGirl::Syntax::Methods
|
|
63
|
+
|
|
64
|
+
before do
|
|
65
|
+
define_class('User') do
|
|
66
|
+
def initialize
|
|
67
|
+
@persisted = false
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def persist
|
|
71
|
+
@persisted = true
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def persisted?
|
|
75
|
+
@persisted
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
FactoryGirl.define do
|
|
80
|
+
factory :user do
|
|
81
|
+
to_create do |user|
|
|
82
|
+
user.persist
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
it "uses the custom create block instead of save" do
|
|
89
|
+
FactoryGirl.create(:user).should be_persisted
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
describe "calling `create` with a block" do
|
|
94
|
+
include FactoryGirl::Syntax::Methods
|
|
95
|
+
|
|
96
|
+
before do
|
|
97
|
+
define_model('Company', name: :string)
|
|
98
|
+
|
|
99
|
+
FactoryGirl.define do
|
|
100
|
+
factory :company
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
it "passes the created instance" do
|
|
105
|
+
create(:company, name: 'thoughtbot') do |company|
|
|
106
|
+
company.name.should eq('thoughtbot')
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
it "returns the created instance" do
|
|
111
|
+
expected = nil
|
|
112
|
+
create(:company) do |company|
|
|
113
|
+
expected = company
|
|
114
|
+
"hello!"
|
|
115
|
+
end.should == expected
|
|
116
|
+
end
|
|
117
|
+
end
|