mongoid-pre 2.0.0.beta1 → 2.0.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (135) hide show
  1. data/.watchr +15 -10
  2. data/HISTORY +342 -0
  3. data/README.rdoc +8 -1
  4. data/Rakefile +2 -3
  5. data/VERSION +1 -1
  6. data/lib/mongoid/associations/{embedded_in.rb → belongs_to.rb} +4 -4
  7. data/lib/mongoid/associations/belongs_to_related.rb +9 -6
  8. data/lib/mongoid/associations/{embeds_many.rb → has_many.rb} +20 -33
  9. data/lib/mongoid/associations/has_many_related.rb +4 -28
  10. data/lib/mongoid/associations/{embeds_one.rb → has_one.rb} +6 -6
  11. data/lib/mongoid/associations/options.rb +6 -1
  12. data/lib/mongoid/associations.rb +32 -41
  13. data/lib/mongoid/attributes.rb +6 -13
  14. data/lib/mongoid/collection.rb +1 -2
  15. data/lib/mongoid/commands/delete.rb +1 -1
  16. data/lib/mongoid/commands/delete_all.rb +1 -4
  17. data/lib/mongoid/commands/destroy.rb +1 -1
  18. data/lib/mongoid/commands/destroy_all.rb +1 -3
  19. data/lib/mongoid/commands/save.rb +0 -1
  20. data/lib/mongoid/commands.rb +13 -2
  21. data/lib/mongoid/components.rb +1 -6
  22. data/lib/mongoid/config.rb +1 -5
  23. data/lib/mongoid/contexts/enumerable.rb +17 -54
  24. data/lib/mongoid/contexts/mongo.rb +38 -101
  25. data/lib/mongoid/contexts/paging.rb +2 -2
  26. data/lib/mongoid/contexts.rb +0 -21
  27. data/lib/mongoid/criteria.rb +73 -15
  28. data/lib/mongoid/criterion/inclusion.rb +0 -2
  29. data/lib/mongoid/criterion/optional.rb +2 -10
  30. data/lib/mongoid/document.rb +30 -41
  31. data/lib/mongoid/extensions.rb +0 -15
  32. data/lib/mongoid/field.rb +7 -20
  33. data/lib/mongoid/fields.rb +10 -15
  34. data/lib/mongoid/finders.rb +98 -10
  35. data/lib/mongoid/identity.rb +2 -8
  36. data/lib/mongoid/named_scope.rb +0 -2
  37. data/lib/mongoid/validations/associated.rb +8 -3
  38. data/lib/mongoid/validations/uniqueness.rb +7 -2
  39. data/lib/mongoid/validations.rb +2 -2
  40. data/lib/mongoid/versioning.rb +1 -1
  41. data/lib/mongoid.rb +5 -21
  42. data/mongoid.gemspec +19 -59
  43. data/spec/integration/mongoid/associations_spec.rb +3 -42
  44. data/spec/integration/mongoid/attributes_spec.rb +2 -2
  45. data/spec/integration/mongoid/commands_spec.rb +13 -27
  46. data/spec/integration/mongoid/contexts/enumerable_spec.rb +0 -13
  47. data/spec/integration/mongoid/criteria_spec.rb +3 -50
  48. data/spec/integration/mongoid/document_spec.rb +5 -72
  49. data/spec/integration/mongoid/finders_spec.rb +28 -85
  50. data/spec/models/address.rb +3 -3
  51. data/spec/models/animal.rb +2 -2
  52. data/spec/models/country_code.rb +2 -2
  53. data/spec/models/game.rb +1 -2
  54. data/spec/models/inheritance.rb +5 -5
  55. data/spec/models/location.rb +2 -2
  56. data/spec/models/name.rb +3 -3
  57. data/spec/models/namespacing.rb +2 -2
  58. data/spec/models/patient.rb +0 -2
  59. data/spec/models/person.rb +4 -6
  60. data/spec/models/pet.rb +3 -3
  61. data/spec/models/pet_owner.rb +3 -3
  62. data/spec/models/phone.rb +3 -3
  63. data/spec/models/post.rb +1 -1
  64. data/spec/models/translation.rb +2 -2
  65. data/spec/models/vet_visit.rb +2 -2
  66. data/spec/spec_helper.rb +2 -2
  67. data/spec/unit/mongoid/associations/belongs_to_related_spec.rb +0 -4
  68. data/spec/unit/mongoid/associations/{embedded_in_spec.rb → belongs_to_spec.rb} +11 -11
  69. data/spec/unit/mongoid/associations/has_many_related_spec.rb +14 -45
  70. data/spec/unit/mongoid/associations/{embeds_many_spec.rb → has_many_spec.rb} +34 -79
  71. data/spec/unit/mongoid/associations/{embeds_one_spec.rb → has_one_spec.rb} +18 -18
  72. data/spec/unit/mongoid/associations/options_spec.rb +19 -20
  73. data/spec/unit/mongoid/associations_spec.rb +12 -74
  74. data/spec/unit/mongoid/attributes_spec.rb +51 -83
  75. data/spec/unit/mongoid/collection_spec.rb +0 -46
  76. data/spec/unit/mongoid/commands/delete_all_spec.rb +8 -9
  77. data/spec/unit/mongoid/commands/delete_spec.rb +3 -6
  78. data/spec/unit/mongoid/commands/destroy_all_spec.rb +2 -0
  79. data/spec/unit/mongoid/commands/destroy_spec.rb +3 -10
  80. data/spec/unit/mongoid/commands_spec.rb +11 -20
  81. data/spec/unit/mongoid/config_spec.rb +0 -18
  82. data/spec/unit/mongoid/contexts/enumerable_spec.rb +11 -198
  83. data/spec/unit/mongoid/contexts/mongo_spec.rb +54 -357
  84. data/spec/unit/mongoid/criteria_spec.rb +78 -107
  85. data/spec/unit/mongoid/criterion/exclusion_spec.rb +13 -3
  86. data/spec/unit/mongoid/criterion/inclusion_spec.rb +19 -25
  87. data/spec/unit/mongoid/criterion/optional_spec.rb +18 -25
  88. data/spec/unit/mongoid/document_spec.rb +34 -71
  89. data/spec/unit/mongoid/extensions/array/conversions_spec.rb +2 -2
  90. data/spec/unit/mongoid/extensions/datetime/conversions_spec.rb +3 -0
  91. data/spec/unit/mongoid/extensions/object/conversions_spec.rb +2 -16
  92. data/spec/unit/mongoid/extensions/proc/scoping_spec.rb +1 -1
  93. data/spec/unit/mongoid/field_spec.rb +0 -62
  94. data/spec/unit/mongoid/fields_spec.rb +0 -33
  95. data/spec/unit/mongoid/finders_spec.rb +1 -37
  96. data/spec/unit/mongoid/identity_spec.rb +6 -47
  97. data/spec/unit/mongoid/named_scope_spec.rb +2 -15
  98. data/spec/unit/mongoid/scope_spec.rb +1 -1
  99. data/spec/unit/mongoid/validations/uniqueness_spec.rb +3 -3
  100. data/spec/unit/mongoid_spec.rb +2 -11
  101. metadata +14 -64
  102. data/lib/mongoid/associations/meta_data.rb +0 -28
  103. data/lib/mongoid/contexts/ids.rb +0 -25
  104. data/lib/mongoid/deprecation.rb +0 -22
  105. data/lib/mongoid/dirty.rb +0 -203
  106. data/lib/mongoid/extensions/big_decimal/conversions.rb +0 -19
  107. data/lib/mongoid/extensions/binary/conversions.rb +0 -17
  108. data/lib/mongoid/extensions/objectid/conversions.rb +0 -15
  109. data/lib/mongoid/extras.rb +0 -61
  110. data/lib/mongoid/javascript/functions.yml +0 -37
  111. data/lib/mongoid/javascript.rb +0 -21
  112. data/lib/mongoid/observable.rb +0 -30
  113. data/lib/mongoid/paths.rb +0 -54
  114. data/lib/mongoid/persistence/command.rb +0 -20
  115. data/lib/mongoid/persistence/insert.rb +0 -71
  116. data/lib/mongoid/persistence/update.rb +0 -78
  117. data/lib/mongoid/persistence.rb +0 -27
  118. data/lib/mongoid/state.rb +0 -32
  119. data/spec/integration/mongoid/dirty_spec.rb +0 -70
  120. data/spec/integration/mongoid/persistence/update_spec.rb +0 -46
  121. data/spec/models/callbacks.rb +0 -18
  122. data/spec/unit/mongoid/associations/meta_data_spec.rb +0 -88
  123. data/spec/unit/mongoid/contexts_spec.rb +0 -25
  124. data/spec/unit/mongoid/deprecation_spec.rb +0 -24
  125. data/spec/unit/mongoid/dirty_spec.rb +0 -286
  126. data/spec/unit/mongoid/extensions/big_decimal/conversions_spec.rb +0 -22
  127. data/spec/unit/mongoid/extensions/binary/conversions_spec.rb +0 -22
  128. data/spec/unit/mongoid/extras_spec.rb +0 -102
  129. data/spec/unit/mongoid/javascript_spec.rb +0 -48
  130. data/spec/unit/mongoid/observable_spec.rb +0 -46
  131. data/spec/unit/mongoid/paths_spec.rb +0 -124
  132. data/spec/unit/mongoid/persistence/insert_spec.rb +0 -175
  133. data/spec/unit/mongoid/persistence/update_spec.rb +0 -148
  134. data/spec/unit/mongoid/persistence_spec.rb +0 -40
  135. data/spec/unit/mongoid/state_spec.rb +0 -83
@@ -1,175 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Persistence::Insert do
4
-
5
- let(:document) do
6
- Patient.new(:title => "Mr")
7
- end
8
-
9
- let(:address) do
10
- Address.new(:street => "Oxford St")
11
- end
12
-
13
- let(:collection) do
14
- stub.quacks_like(Mongoid::Collection.allocate)
15
- end
16
-
17
- before do
18
- document.stubs(:collection).returns(collection)
19
- end
20
-
21
- describe "#initialize" do
22
-
23
- let(:insert) do
24
- Mongoid::Persistence::Insert.new(document)
25
- end
26
-
27
- it "sets the document" do
28
- insert.document.should == document
29
- end
30
-
31
- it "sets the collection" do
32
- insert.collection.should == document.collection
33
- end
34
-
35
- it "defaults validation to true" do
36
- insert.validate.should == true
37
- end
38
-
39
- it "sets the options" do
40
- insert.options.should ==
41
- { :safe => Mongoid.persist_in_safe_mode }
42
- end
43
- end
44
-
45
- describe "#persist" do
46
-
47
- def root_set_expectation
48
- lambda {
49
- collection.expects(:insert).with(
50
- document.raw_attributes,
51
- :safe => true
52
- ).returns("Object")
53
- }
54
- end
55
-
56
- def root_push_expectation
57
- lambda {
58
- collection.expects(:update).with(
59
- { "_id" => document.id },
60
- { "addresses" => { "$push" => address.raw_attributes } },
61
- :safe => true
62
- ).returns("Object")
63
- }
64
- end
65
-
66
- let(:insert) do
67
- Mongoid::Persistence::Insert.new(document)
68
- end
69
-
70
- context "when the document is valid" do
71
-
72
- it "inserts the new document" do
73
- root_set_expectation.call
74
- insert.persist
75
- end
76
-
77
- it "returns the document" do
78
- root_set_expectation.call
79
- insert.persist.should == document
80
- end
81
-
82
- it "sets new_record to false" do
83
- root_set_expectation.call
84
- insert.persist
85
- document.new_record?.should == false
86
- end
87
- end
88
-
89
- context "when the document is not valid" do
90
-
91
- before do
92
- document.stubs(:valid?).returns(false)
93
- end
94
-
95
- it "returns the document" do
96
- insert.persist.should == document
97
- end
98
-
99
- it "leaves the document as a new record" do
100
- insert.persist
101
- document.new_record?.should == true
102
- end
103
- end
104
-
105
- context "when not validating" do
106
-
107
- before do
108
- insert.instance_variable_set(:@validate, false)
109
- document.stubs(:valid?).returns(false)
110
- end
111
-
112
- after do
113
- insert.instance_variable_set(:@validate, true)
114
- end
115
-
116
- it "inserts the document in the database" do
117
- root_set_expectation.call
118
- insert.persist
119
- document.new_record?.should == false
120
- end
121
- end
122
-
123
- context "when the document is embedded" do
124
-
125
- context "when the embedded document is an embeds_one" do
126
-
127
- context "when the parent is new" do
128
-
129
- it "notifies its changes to parent and inserts the parent"
130
-
131
- end
132
-
133
- context "when the parent is not new" do
134
-
135
- it "performs an in place $set on the embedded document"
136
- end
137
- end
138
-
139
- context "when the embedded document is an embeds_many" do
140
-
141
- before do
142
- document.addresses << address
143
- end
144
-
145
- context "when the parent is new" do
146
-
147
- let(:insert) do
148
- Mongoid::Persistence::Insert.new(address)
149
- end
150
-
151
- it "notifies its changes to the parent and inserts the parent" do
152
- root_set_expectation.call
153
- insert.persist.should == address
154
- end
155
- end
156
-
157
- context "when the parent is not new" do
158
-
159
- let(:insert) do
160
- Mongoid::Persistence::Insert.new(address)
161
- end
162
-
163
- before do
164
- document.instance_variable_set(:@new_record, false)
165
- end
166
-
167
- it "performs a $push on the embedded array" do
168
- root_push_expectation.call
169
- insert.persist.should == address
170
- end
171
- end
172
- end
173
- end
174
- end
175
- end
@@ -1,148 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Persistence::Update do
4
-
5
- let(:document) do
6
- Patient.new(:_id => Mongo::ObjectID.new.to_s)
7
- end
8
-
9
- let(:address) do
10
- Address.new(:_id => Mongo::ObjectID.new.to_s, :street => "Oxford St")
11
- end
12
-
13
- let(:collection) do
14
- stub.quacks_like(Mongoid::Collection.allocate)
15
- end
16
-
17
- before do
18
- document.stubs(:collection).returns(collection)
19
- end
20
-
21
- describe "#initialize" do
22
-
23
- let(:update) do
24
- Mongoid::Persistence::Update.new(document)
25
- end
26
-
27
- it "sets the document" do
28
- update.document.should == document
29
- end
30
-
31
- it "sets the collection" do
32
- update.collection.should == document.collection
33
- end
34
-
35
- it "defaults validation to true" do
36
- update.validate.should == true
37
- end
38
-
39
- it "sets the options" do
40
- update.options.should ==
41
- { :multi => false, :safe => Mongoid.persist_in_safe_mode }
42
- end
43
- end
44
-
45
- describe "#persist" do
46
-
47
- def root_set_expectation
48
- lambda {
49
- collection.expects(:update).with(
50
- { "_id" => document.id },
51
- { "$set" => document.setters },
52
- :multi => false,
53
- :safe => true
54
- ).returns("Object")
55
- }
56
- end
57
-
58
- def embedded_set_expectation
59
- lambda {
60
- collection.expects(:update).with(
61
- { "_id" => document.id, "addresses._id" => address.id },
62
- { "$set" => address.setters },
63
- :multi => false,
64
- :safe => true
65
- ).returns("Object")
66
- }
67
- end
68
-
69
- let(:update) do
70
- Mongoid::Persistence::Update.new(document)
71
- end
72
-
73
- context "when the document is changed" do
74
-
75
- before do
76
- document.title = "Sir"
77
- end
78
-
79
- context "when the document is valid" do
80
-
81
- it "performs a $set for changed fields" do
82
- root_set_expectation.call
83
- update.persist.should == true
84
- end
85
-
86
- it "moves the changed fields to previously changed" do
87
- root_set_expectation.call
88
- update.persist
89
- document.changed?.should == false
90
- end
91
-
92
- end
93
-
94
- context "when the document is not valid" do
95
-
96
- before do
97
- document.stubs(:valid?).returns(false)
98
- end
99
-
100
- it "returns false" do
101
- update.persist.should == false
102
- end
103
- end
104
-
105
- context "when not validating" do
106
-
107
- before do
108
- update.instance_variable_set(:@validate, false)
109
- document.stubs(:valid?).returns(false)
110
- end
111
-
112
- after do
113
- update.instance_variable_set(:@validate, true)
114
- end
115
-
116
- it "updates the document in the database" do
117
- root_set_expectation.call
118
- update.persist.should == true
119
- end
120
- end
121
-
122
- context "when the document is embedded" do
123
-
124
- let(:embedded) do
125
- Mongoid::Persistence::Update.new(address)
126
- end
127
-
128
- before do
129
- # TODO: What to do about composite keys?
130
- document.addresses << address
131
- address.city = "London"
132
- end
133
-
134
- it "performs a $set for the embedded changed fields" do
135
- embedded_set_expectation.call
136
- embedded.persist
137
- end
138
- end
139
- end
140
-
141
- context "when the document is not changed" do
142
-
143
- it "returns true" do
144
- update.persist.should == true
145
- end
146
- end
147
- end
148
- end
@@ -1,40 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Persistence do
4
-
5
- let(:person) do
6
- Person.new
7
- end
8
-
9
- describe "#insert" do
10
-
11
- let(:insert) do
12
- stub.quacks_like(Mongoid::Persistence::Insert.allocate)
13
- end
14
-
15
- before do
16
- Mongoid::Persistence::Insert.expects(:new).with(person).returns(insert)
17
- end
18
-
19
- it "delegates to the insert persistence command" do
20
- insert.expects(:persist).returns(person)
21
- person.insert.should == person
22
- end
23
- end
24
-
25
- describe "#update" do
26
-
27
- let(:update) do
28
- stub.quacks_like(Mongoid::Persistence::Update.allocate)
29
- end
30
-
31
- before do
32
- Mongoid::Persistence::Update.expects(:new).with(person).returns(update)
33
- end
34
-
35
- it "delegates to the update persistence command" do
36
- update.expects(:persist).returns(true)
37
- person.update.should == true
38
- end
39
- end
40
- end
@@ -1,83 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::State do
4
-
5
- describe "#new_record?" do
6
-
7
- context "when the object has been saved" do
8
-
9
- before do
10
- @person = Person.new(:_id => "1")
11
- end
12
-
13
- it "returns false" do
14
- @person.new_record?.should be_false
15
- end
16
-
17
- end
18
-
19
- context "when the object has not been saved" do
20
-
21
- before do
22
- @person = Person.new
23
- end
24
-
25
- it "returns true" do
26
- @person.new_record?.should be_true
27
- end
28
-
29
- end
30
-
31
- end
32
-
33
- describe "#persisted?" do
34
-
35
- before do
36
- @person = Person.new
37
- end
38
-
39
- it "delegates to new_record?" do
40
- @person.persisted?.should be_false
41
- end
42
- end
43
-
44
- describe "destroyed?" do
45
-
46
- before do
47
- @person = Person.new
48
- end
49
-
50
- context "when destroyed is true" do
51
-
52
- before do
53
- @person.destroyed = true
54
- end
55
-
56
- it "returns true" do
57
- @person.destroyed?.should be_true
58
- end
59
- end
60
-
61
- context "when destroyed is false" do
62
-
63
- before do
64
- @person.destroyed = false
65
- end
66
-
67
- it "returns true" do
68
- @person.destroyed?.should be_false
69
- end
70
- end
71
-
72
- context "when destroyed is nil" do
73
-
74
- before do
75
- @person.destroyed = nil
76
- end
77
-
78
- it "returns false" do
79
- @person.destroyed?.should be_false
80
- end
81
- end
82
- end
83
- end