mongoid 0.9.8 → 0.9.9
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/README.textile +5 -4
- data/VERSION +1 -1
- data/lib/mongoid.rb +3 -28
- data/lib/mongoid/associations.rb +63 -44
- data/lib/mongoid/associations/{relates_to_one.rb → belongs_to_related.rb} +4 -4
- data/lib/mongoid/associations/has_many.rb +26 -12
- data/lib/mongoid/associations/has_many_related.rb +100 -0
- data/lib/mongoid/associations/has_one.rb +13 -2
- data/lib/mongoid/associations/{relates_to_many.rb → has_one_related.rb} +34 -9
- data/lib/mongoid/attributes.rb +108 -8
- data/lib/mongoid/commands.rb +3 -11
- data/lib/mongoid/commands/save.rb +2 -6
- data/lib/mongoid/document.rb +6 -70
- data/lib/mongoid/errors.rb +34 -0
- data/mongoid.gemspec +14 -11
- data/spec/integration/mongoid/associations_spec.rb +19 -14
- data/spec/spec_helper.rb +6 -3
- data/spec/unit/mongoid/associations/belongs_to_related_spec.rb +112 -0
- data/spec/unit/mongoid/associations/has_many_related_spec.rb +292 -0
- data/spec/unit/mongoid/associations/has_many_spec.rb +17 -0
- data/spec/unit/mongoid/associations/has_one_related_spec.rb +130 -0
- data/spec/unit/mongoid/associations/has_one_spec.rb +53 -0
- data/spec/unit/mongoid/associations_spec.rb +36 -8
- data/spec/unit/mongoid/attributes_spec.rb +218 -0
- data/spec/unit/mongoid/commands/save_spec.rb +4 -2
- data/spec/unit/mongoid/commands_spec.rb +4 -17
- data/spec/unit/mongoid/criteria_spec.rb +0 -5
- data/spec/unit/mongoid/document_spec.rb +26 -156
- data/spec/unit/mongoid/errors_spec.rb +87 -0
- metadata +14 -11
- data/lib/mongoid/commands/quick_save.rb +0 -19
- data/spec/unit/mongoid/associations/relates_to_many_spec.rb +0 -76
- data/spec/unit/mongoid/associations/relates_to_one_spec.rb +0 -112
- data/spec/unit/mongoid/commands/quick_save_spec.rb +0 -24
@@ -11,11 +11,13 @@ describe Mongoid::Commands::Save do
|
|
11
11
|
:valid? => true,
|
12
12
|
:run_callbacks => true,
|
13
13
|
:parent => nil,
|
14
|
-
:attributes => {}
|
14
|
+
:attributes => {},
|
15
|
+
:new_record= => false)
|
15
16
|
@document = stub(:collection => @doc_collection,
|
16
17
|
:run_callbacks => true,
|
17
18
|
:parent => @parent,
|
18
|
-
:attributes => {}
|
19
|
+
:attributes => {},
|
20
|
+
:new_record= => false)
|
19
21
|
end
|
20
22
|
|
21
23
|
context "when document is valid" do
|
@@ -59,7 +59,7 @@ describe Mongoid::Commands do
|
|
59
59
|
|
60
60
|
context "when validation fails" do
|
61
61
|
|
62
|
-
it "it raises
|
62
|
+
it "it raises an error" do
|
63
63
|
Mongoid::Commands::Save.expects(:execute).with(@person).returns(false)
|
64
64
|
lambda { @person.save! }.should raise_error
|
65
65
|
end
|
@@ -79,7 +79,7 @@ describe Mongoid::Commands do
|
|
79
79
|
|
80
80
|
context "when validation fails" do
|
81
81
|
|
82
|
-
it "it raises
|
82
|
+
it "it raises an error " do
|
83
83
|
Mongoid::Commands::Create.expects(:execute).with(@person).returns(false)
|
84
84
|
lambda { @person.save! }.should raise_error
|
85
85
|
end
|
@@ -90,19 +90,6 @@ describe Mongoid::Commands do
|
|
90
90
|
|
91
91
|
end
|
92
92
|
|
93
|
-
describe "#quick_save" do
|
94
|
-
|
95
|
-
before do
|
96
|
-
@person = Person.new
|
97
|
-
end
|
98
|
-
|
99
|
-
it "delegates to the QuickSave command" do
|
100
|
-
Mongoid::Commands::QuickSave.expects(:execute).with(@person).returns(true)
|
101
|
-
@person.quick_save
|
102
|
-
end
|
103
|
-
|
104
|
-
end
|
105
|
-
|
106
93
|
describe "#update_attributes" do
|
107
94
|
|
108
95
|
it "delegates to the Save command" do
|
@@ -125,7 +112,7 @@ describe Mongoid::Commands do
|
|
125
112
|
|
126
113
|
context "when validation fails" do
|
127
114
|
|
128
|
-
it "it raises
|
115
|
+
it "it raises an error" do
|
129
116
|
Mongoid::Commands::Save.expects(:execute).with(@person).returns(false)
|
130
117
|
lambda { @person.update_attributes!({}) }.should raise_error
|
131
118
|
end
|
@@ -162,7 +149,7 @@ describe Mongoid::Commands do
|
|
162
149
|
|
163
150
|
context "when validation fails" do
|
164
151
|
|
165
|
-
it "raises an
|
152
|
+
it "raises an error" do
|
166
153
|
person = stub(:errors => stub(:empty? => false))
|
167
154
|
Mongoid::Commands::Create.expects(:execute).returns(person)
|
168
155
|
lambda { Person.create! }.should raise_error
|
@@ -101,8 +101,8 @@ describe Mongoid::Document do
|
|
101
101
|
@address = Address.new
|
102
102
|
end
|
103
103
|
|
104
|
-
it "
|
105
|
-
Address.collection.should
|
104
|
+
it "raises an error" do
|
105
|
+
lambda { Address.collection }.should raise_error
|
106
106
|
end
|
107
107
|
|
108
108
|
end
|
@@ -439,46 +439,6 @@ describe Mongoid::Document do
|
|
439
439
|
|
440
440
|
end
|
441
441
|
|
442
|
-
describe "#read_attribute" do
|
443
|
-
|
444
|
-
context "when attribute does not exist" do
|
445
|
-
|
446
|
-
before do
|
447
|
-
@person = Person.new
|
448
|
-
end
|
449
|
-
|
450
|
-
it "returns the default value" do
|
451
|
-
@person.age.should == 100
|
452
|
-
end
|
453
|
-
|
454
|
-
end
|
455
|
-
|
456
|
-
end
|
457
|
-
|
458
|
-
describe "#remove_attribute" do
|
459
|
-
|
460
|
-
context "when the attribute exists" do
|
461
|
-
|
462
|
-
it "removes the attribute" do
|
463
|
-
person = Person.new(:title => "Sir")
|
464
|
-
person.remove_attribute(:title)
|
465
|
-
person.title.should be_nil
|
466
|
-
end
|
467
|
-
|
468
|
-
end
|
469
|
-
|
470
|
-
context "when the attribute does not exist" do
|
471
|
-
|
472
|
-
it "does nothing" do
|
473
|
-
person = Person.new
|
474
|
-
person.remove_attribute(:title)
|
475
|
-
person.title.should be_nil
|
476
|
-
end
|
477
|
-
|
478
|
-
end
|
479
|
-
|
480
|
-
end
|
481
|
-
|
482
442
|
describe "#reload" do
|
483
443
|
|
484
444
|
before do
|
@@ -539,112 +499,6 @@ describe Mongoid::Document do
|
|
539
499
|
|
540
500
|
end
|
541
501
|
|
542
|
-
describe "#write_attribute" do
|
543
|
-
|
544
|
-
context "when attribute does not exist" do
|
545
|
-
|
546
|
-
before do
|
547
|
-
@person = Person.new
|
548
|
-
end
|
549
|
-
|
550
|
-
it "returns the default value" do
|
551
|
-
@person.age = nil
|
552
|
-
@person.age.should == 100
|
553
|
-
end
|
554
|
-
|
555
|
-
end
|
556
|
-
|
557
|
-
context "when field has a default value" do
|
558
|
-
|
559
|
-
before do
|
560
|
-
@person = Person.new
|
561
|
-
end
|
562
|
-
|
563
|
-
it "should allow overwriting of the default value" do
|
564
|
-
@person.terms = true
|
565
|
-
@person.terms.should be_true
|
566
|
-
end
|
567
|
-
|
568
|
-
end
|
569
|
-
|
570
|
-
end
|
571
|
-
|
572
|
-
describe "#write_attributes" do
|
573
|
-
|
574
|
-
context "typecasting" do
|
575
|
-
|
576
|
-
before do
|
577
|
-
@person = Person.new
|
578
|
-
@attributes = { :age => "50" }
|
579
|
-
end
|
580
|
-
|
581
|
-
it "properly casts values" do
|
582
|
-
@person.write_attributes(@attributes)
|
583
|
-
@person.age.should == 50
|
584
|
-
end
|
585
|
-
|
586
|
-
end
|
587
|
-
|
588
|
-
context "on a parent document" do
|
589
|
-
|
590
|
-
context "when the parent has a has many through a has one" do
|
591
|
-
|
592
|
-
before do
|
593
|
-
@owner = PetOwner.new(:title => "Mr")
|
594
|
-
@pet = Pet.new(:name => "Fido")
|
595
|
-
@owner.pet = @pet
|
596
|
-
@vet_visit = VetVisit.new(:date => Date.today)
|
597
|
-
@pet.vet_visits = [@vet_visit]
|
598
|
-
end
|
599
|
-
|
600
|
-
it "does not overwrite child attributes if not in the hash" do
|
601
|
-
@owner.write_attributes({ :pet => { :name => "Bingo" } })
|
602
|
-
@owner.pet.name.should == "Bingo"
|
603
|
-
@owner.pet.vet_visits.size.should == 1
|
604
|
-
end
|
605
|
-
|
606
|
-
end
|
607
|
-
|
608
|
-
end
|
609
|
-
|
610
|
-
context "on a child document" do
|
611
|
-
|
612
|
-
context "when child is part of a has one" do
|
613
|
-
|
614
|
-
before do
|
615
|
-
@person = Person.new(:title => "Sir", :age => 30)
|
616
|
-
@name = Name.new(:first_name => "Test", :last_name => "User")
|
617
|
-
@person.name = @name
|
618
|
-
end
|
619
|
-
|
620
|
-
it "sets the child attributes on the parent" do
|
621
|
-
@name.write_attributes(:first_name => "Test2", :last_name => "User2")
|
622
|
-
@person.attributes[:name].should ==
|
623
|
-
{ "_id" => "test-user", "first_name" => "Test2", "last_name" => "User2" }
|
624
|
-
end
|
625
|
-
|
626
|
-
end
|
627
|
-
|
628
|
-
context "when child is part of a has many" do
|
629
|
-
|
630
|
-
before do
|
631
|
-
@person = Person.new(:title => "Sir")
|
632
|
-
@address = Address.new(:street => "Test")
|
633
|
-
@person.addresses << @address
|
634
|
-
end
|
635
|
-
|
636
|
-
it "updates the child attributes on the parent" do
|
637
|
-
@address.write_attributes("street" => "Test2")
|
638
|
-
@person.attributes[:addresses].should ==
|
639
|
-
[ { "_id" => "test", "street" => "Test2" } ]
|
640
|
-
end
|
641
|
-
|
642
|
-
end
|
643
|
-
|
644
|
-
end
|
645
|
-
|
646
|
-
end
|
647
|
-
|
648
502
|
context "validations" do
|
649
503
|
|
650
504
|
context "when defining using macros" do
|
@@ -807,16 +661,32 @@ describe Mongoid::Document do
|
|
807
661
|
|
808
662
|
context "when association is a has_one" do
|
809
663
|
|
810
|
-
|
811
|
-
|
812
|
-
|
664
|
+
context "when the associated is not nil" do
|
665
|
+
|
666
|
+
it "fails when the association fails validation" do
|
667
|
+
Person.class_eval do
|
668
|
+
validates_associated :name
|
669
|
+
end
|
670
|
+
Name.class_eval do
|
671
|
+
validates_presence_of :first_name
|
672
|
+
end
|
673
|
+
@person.name = Name.new
|
674
|
+
@person.valid?.should be_false
|
675
|
+
@person.errors.on(:name).should_not be_nil
|
813
676
|
end
|
814
|
-
|
815
|
-
|
677
|
+
|
678
|
+
end
|
679
|
+
|
680
|
+
context "when the associated is nil" do
|
681
|
+
|
682
|
+
it "fails when the association fails validation" do
|
683
|
+
Person.class_eval do
|
684
|
+
validates_associated :name
|
685
|
+
end
|
686
|
+
@person.valid?.should be_false
|
687
|
+
@person.errors.on(:name).should_not be_nil
|
816
688
|
end
|
817
|
-
|
818
|
-
@person.valid?.should be_false
|
819
|
-
@person.errors.on(:name).should_not be_nil
|
689
|
+
|
820
690
|
end
|
821
691
|
|
822
692
|
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Mongoid::Errors do
|
4
|
+
|
5
|
+
describe Mongoid::Errors::InvalidOptions do
|
6
|
+
|
7
|
+
describe "#message" do
|
8
|
+
|
9
|
+
context "default" do
|
10
|
+
|
11
|
+
before do
|
12
|
+
@error = Mongoid::Errors::InvalidOptions.new
|
13
|
+
end
|
14
|
+
|
15
|
+
it "returns the class name" do
|
16
|
+
@error.message.should == @error.class.name
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
describe Mongoid::Errors::InvalidDatabase do
|
26
|
+
|
27
|
+
describe "#message" do
|
28
|
+
|
29
|
+
context "default" do
|
30
|
+
|
31
|
+
before do
|
32
|
+
@error = Mongoid::Errors::InvalidDatabase.new
|
33
|
+
end
|
34
|
+
|
35
|
+
it "returns the class name" do
|
36
|
+
@error.message.should == @error.class.name
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
describe Mongoid::Errors::Validations do
|
46
|
+
|
47
|
+
describe "#message" do
|
48
|
+
|
49
|
+
context "default" do
|
50
|
+
|
51
|
+
before do
|
52
|
+
@errors = stub(:full_messages => "Testing")
|
53
|
+
@error = Mongoid::Errors::Validations.new(@errors)
|
54
|
+
end
|
55
|
+
|
56
|
+
it "contains the errors' full messages" do
|
57
|
+
@error.message.should include("Testing")
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
describe Mongoid::Errors::InvalidCollection do
|
67
|
+
|
68
|
+
describe "#message" do
|
69
|
+
|
70
|
+
context "default" do
|
71
|
+
|
72
|
+
before do
|
73
|
+
@klass = Address
|
74
|
+
@error = Mongoid::Errors::InvalidCollection.new(@klass)
|
75
|
+
end
|
76
|
+
|
77
|
+
it "contains class is not allowed" do
|
78
|
+
@error.message.should include("Address is not allowed")
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Durran Jordan
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-12-
|
12
|
+
date: 2009-12-13 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -100,11 +100,12 @@ files:
|
|
100
100
|
- lib/mongoid.rb
|
101
101
|
- lib/mongoid/associations.rb
|
102
102
|
- lib/mongoid/associations/belongs_to.rb
|
103
|
+
- lib/mongoid/associations/belongs_to_related.rb
|
103
104
|
- lib/mongoid/associations/has_many.rb
|
105
|
+
- lib/mongoid/associations/has_many_related.rb
|
104
106
|
- lib/mongoid/associations/has_one.rb
|
107
|
+
- lib/mongoid/associations/has_one_related.rb
|
105
108
|
- lib/mongoid/associations/options.rb
|
106
|
-
- lib/mongoid/associations/relates_to_many.rb
|
107
|
-
- lib/mongoid/associations/relates_to_one.rb
|
108
109
|
- lib/mongoid/attributes.rb
|
109
110
|
- lib/mongoid/commands.rb
|
110
111
|
- lib/mongoid/commands/create.rb
|
@@ -112,12 +113,12 @@ files:
|
|
112
113
|
- lib/mongoid/commands/delete_all.rb
|
113
114
|
- lib/mongoid/commands/destroy.rb
|
114
115
|
- lib/mongoid/commands/destroy_all.rb
|
115
|
-
- lib/mongoid/commands/quick_save.rb
|
116
116
|
- lib/mongoid/commands/save.rb
|
117
117
|
- lib/mongoid/commands/validate.rb
|
118
118
|
- lib/mongoid/criteria.rb
|
119
119
|
- lib/mongoid/document.rb
|
120
120
|
- lib/mongoid/dynamic_finder.rb
|
121
|
+
- lib/mongoid/errors.rb
|
121
122
|
- lib/mongoid/extensions.rb
|
122
123
|
- lib/mongoid/extensions/array/accessors.rb
|
123
124
|
- lib/mongoid/extensions/array/assimilation.rb
|
@@ -147,12 +148,13 @@ files:
|
|
147
148
|
- spec/integration/mongoid/document_spec.rb
|
148
149
|
- spec/spec.opts
|
149
150
|
- spec/spec_helper.rb
|
151
|
+
- spec/unit/mongoid/associations/belongs_to_related_spec.rb
|
150
152
|
- spec/unit/mongoid/associations/belongs_to_spec.rb
|
153
|
+
- spec/unit/mongoid/associations/has_many_related_spec.rb
|
151
154
|
- spec/unit/mongoid/associations/has_many_spec.rb
|
155
|
+
- spec/unit/mongoid/associations/has_one_related_spec.rb
|
152
156
|
- spec/unit/mongoid/associations/has_one_spec.rb
|
153
157
|
- spec/unit/mongoid/associations/options_spec.rb
|
154
|
-
- spec/unit/mongoid/associations/relates_to_many_spec.rb
|
155
|
-
- spec/unit/mongoid/associations/relates_to_one_spec.rb
|
156
158
|
- spec/unit/mongoid/associations_spec.rb
|
157
159
|
- spec/unit/mongoid/attributes_spec.rb
|
158
160
|
- spec/unit/mongoid/commands/create_spec.rb
|
@@ -160,13 +162,13 @@ files:
|
|
160
162
|
- spec/unit/mongoid/commands/delete_spec.rb
|
161
163
|
- spec/unit/mongoid/commands/destroy_all_spec.rb
|
162
164
|
- spec/unit/mongoid/commands/destroy_spec.rb
|
163
|
-
- spec/unit/mongoid/commands/quick_save_spec.rb
|
164
165
|
- spec/unit/mongoid/commands/save_spec.rb
|
165
166
|
- spec/unit/mongoid/commands/validate_spec.rb
|
166
167
|
- spec/unit/mongoid/commands_spec.rb
|
167
168
|
- spec/unit/mongoid/criteria_spec.rb
|
168
169
|
- spec/unit/mongoid/document_spec.rb
|
169
170
|
- spec/unit/mongoid/dynamic_finder_spec.rb
|
171
|
+
- spec/unit/mongoid/errors_spec.rb
|
170
172
|
- spec/unit/mongoid/extensions/array/accessors_spec.rb
|
171
173
|
- spec/unit/mongoid/extensions/array/assimilation_spec.rb
|
172
174
|
- spec/unit/mongoid/extensions/array/conversions_spec.rb
|
@@ -221,12 +223,13 @@ test_files:
|
|
221
223
|
- spec/integration/mongoid/associations_spec.rb
|
222
224
|
- spec/integration/mongoid/document_spec.rb
|
223
225
|
- spec/spec_helper.rb
|
226
|
+
- spec/unit/mongoid/associations/belongs_to_related_spec.rb
|
224
227
|
- spec/unit/mongoid/associations/belongs_to_spec.rb
|
228
|
+
- spec/unit/mongoid/associations/has_many_related_spec.rb
|
225
229
|
- spec/unit/mongoid/associations/has_many_spec.rb
|
230
|
+
- spec/unit/mongoid/associations/has_one_related_spec.rb
|
226
231
|
- spec/unit/mongoid/associations/has_one_spec.rb
|
227
232
|
- spec/unit/mongoid/associations/options_spec.rb
|
228
|
-
- spec/unit/mongoid/associations/relates_to_many_spec.rb
|
229
|
-
- spec/unit/mongoid/associations/relates_to_one_spec.rb
|
230
233
|
- spec/unit/mongoid/associations_spec.rb
|
231
234
|
- spec/unit/mongoid/attributes_spec.rb
|
232
235
|
- spec/unit/mongoid/commands/create_spec.rb
|
@@ -234,13 +237,13 @@ test_files:
|
|
234
237
|
- spec/unit/mongoid/commands/delete_spec.rb
|
235
238
|
- spec/unit/mongoid/commands/destroy_all_spec.rb
|
236
239
|
- spec/unit/mongoid/commands/destroy_spec.rb
|
237
|
-
- spec/unit/mongoid/commands/quick_save_spec.rb
|
238
240
|
- spec/unit/mongoid/commands/save_spec.rb
|
239
241
|
- spec/unit/mongoid/commands/validate_spec.rb
|
240
242
|
- spec/unit/mongoid/commands_spec.rb
|
241
243
|
- spec/unit/mongoid/criteria_spec.rb
|
242
244
|
- spec/unit/mongoid/document_spec.rb
|
243
245
|
- spec/unit/mongoid/dynamic_finder_spec.rb
|
246
|
+
- spec/unit/mongoid/errors_spec.rb
|
244
247
|
- spec/unit/mongoid/extensions/array/accessors_spec.rb
|
245
248
|
- spec/unit/mongoid/extensions/array/assimilation_spec.rb
|
246
249
|
- spec/unit/mongoid/extensions/array/conversions_spec.rb
|