mongoid 2.0.0.alpha → 2.0.0.beta.5

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.
Files changed (216) hide show
  1. data/lib/mongoid.rb +11 -5
  2. data/lib/mongoid/associations.rb +112 -107
  3. data/lib/mongoid/associations/belongs_to_related.rb +2 -3
  4. data/lib/mongoid/associations/embedded_in.rb +12 -4
  5. data/lib/mongoid/associations/{embed_many.rb → embeds_many.rb} +101 -32
  6. data/lib/mongoid/associations/{embed_one.rb → embeds_one.rb} +10 -10
  7. data/lib/mongoid/associations/has_many_related.rb +51 -5
  8. data/lib/mongoid/associations/has_one_related.rb +9 -5
  9. data/lib/mongoid/associations/meta_data.rb +2 -1
  10. data/lib/mongoid/associations/options.rb +15 -6
  11. data/lib/mongoid/associations/proxy.rb +14 -21
  12. data/lib/mongoid/attributes.rb +34 -13
  13. data/lib/mongoid/callbacks.rb +1 -2
  14. data/lib/mongoid/collection.rb +4 -3
  15. data/lib/mongoid/collections.rb +41 -0
  16. data/lib/mongoid/collections/master.rb +3 -2
  17. data/lib/mongoid/collections/slaves.rb +3 -2
  18. data/lib/mongoid/components.rb +4 -1
  19. data/lib/mongoid/config.rb +163 -13
  20. data/lib/mongoid/contexts.rb +1 -2
  21. data/lib/mongoid/contexts/enumerable.rb +1 -1
  22. data/lib/mongoid/contexts/mongo.rb +1 -1
  23. data/lib/mongoid/contexts/paging.rb +10 -2
  24. data/lib/mongoid/criteria.rb +13 -22
  25. data/lib/mongoid/criterion/exclusion.rb +3 -3
  26. data/lib/mongoid/criterion/inclusion.rb +17 -0
  27. data/lib/mongoid/criterion/optional.rb +1 -1
  28. data/lib/mongoid/dirty.rb +253 -0
  29. data/lib/mongoid/document.rb +40 -85
  30. data/lib/mongoid/errors.rb +48 -1
  31. data/lib/mongoid/extensions.rb +11 -9
  32. data/lib/mongoid/extensions/big_decimal/conversions.rb +2 -2
  33. data/lib/mongoid/extensions/boolean/conversions.rb +8 -2
  34. data/lib/mongoid/extensions/date/conversions.rb +13 -4
  35. data/lib/mongoid/extensions/datetime/conversions.rb +1 -6
  36. data/lib/mongoid/extensions/float/conversions.rb +5 -1
  37. data/lib/mongoid/extensions/hash/assimilation.rb +12 -3
  38. data/lib/mongoid/extensions/hash/conversions.rb +34 -4
  39. data/lib/mongoid/extensions/integer/conversions.rb +5 -1
  40. data/lib/mongoid/extensions/nil/assimilation.rb +4 -0
  41. data/lib/mongoid/extensions/object/conversions.rb +3 -3
  42. data/lib/mongoid/extensions/string/conversions.rb +1 -1
  43. data/lib/mongoid/extensions/symbol/inflections.rb +5 -2
  44. data/lib/mongoid/extensions/time_conversions.rb +35 -0
  45. data/lib/mongoid/factory.rb +2 -1
  46. data/lib/mongoid/field.rb +15 -2
  47. data/lib/mongoid/fields.rb +1 -1
  48. data/lib/mongoid/identity.rb +3 -3
  49. data/lib/mongoid/indexes.rb +3 -3
  50. data/lib/mongoid/matchers.rb +1 -2
  51. data/lib/mongoid/memoization.rb +8 -2
  52. data/lib/mongoid/named_scope.rb +0 -5
  53. data/lib/mongoid/observable.rb +1 -1
  54. data/lib/mongoid/paths.rb +30 -22
  55. data/lib/mongoid/persistence.rb +218 -0
  56. data/lib/mongoid/persistence/command.rb +39 -0
  57. data/lib/mongoid/persistence/insert.rb +47 -0
  58. data/lib/mongoid/persistence/insert_embedded.rb +38 -0
  59. data/lib/mongoid/persistence/remove.rb +39 -0
  60. data/lib/mongoid/persistence/remove_all.rb +37 -0
  61. data/lib/mongoid/persistence/remove_embedded.rb +50 -0
  62. data/lib/mongoid/persistence/update.rb +63 -0
  63. data/lib/mongoid/railtie.rb +53 -0
  64. data/lib/mongoid/railties/database.rake +37 -0
  65. data/lib/mongoid/timestamps.rb +2 -2
  66. data/lib/mongoid/validations.rb +2 -2
  67. data/lib/mongoid/validations/associated.rb +2 -2
  68. data/lib/mongoid/validations/uniqueness.rb +13 -2
  69. data/lib/mongoid/version.rb +4 -0
  70. data/lib/mongoid/versioning.rb +3 -2
  71. data/lib/rails/generators/mongoid/config/config_generator.rb +41 -0
  72. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +24 -0
  73. data/lib/rails/generators/mongoid/model/model_generator.rb +24 -0
  74. data/lib/rails/generators/mongoid/model/templates/model.rb +15 -0
  75. data/lib/rails/generators/mongoid_generator.rb +61 -0
  76. metadata +76 -301
  77. data/.gitignore +0 -6
  78. data/.watchr +0 -29
  79. data/Rakefile +0 -52
  80. data/VERSION +0 -1
  81. data/caliper.yml +0 -4
  82. data/lib/mongoid/collections/mimic.rb +0 -46
  83. data/lib/mongoid/commands.rb +0 -161
  84. data/lib/mongoid/commands/create.rb +0 -19
  85. data/lib/mongoid/commands/delete.rb +0 -16
  86. data/lib/mongoid/commands/delete_all.rb +0 -23
  87. data/lib/mongoid/commands/deletion.rb +0 -18
  88. data/lib/mongoid/commands/destroy.rb +0 -17
  89. data/lib/mongoid/commands/destroy_all.rb +0 -23
  90. data/lib/mongoid/commands/save.rb +0 -29
  91. data/lib/mongoid/extensions/time/conversions.rb +0 -18
  92. data/mongoid.gemspec +0 -408
  93. data/perf/benchmark.rb +0 -77
  94. data/spec/integration/mongoid/associations_spec.rb +0 -340
  95. data/spec/integration/mongoid/attributes_spec.rb +0 -22
  96. data/spec/integration/mongoid/commands_spec.rb +0 -227
  97. data/spec/integration/mongoid/contexts/enumerable_spec.rb +0 -33
  98. data/spec/integration/mongoid/criteria_spec.rb +0 -272
  99. data/spec/integration/mongoid/document_spec.rb +0 -650
  100. data/spec/integration/mongoid/extensions_spec.rb +0 -22
  101. data/spec/integration/mongoid/finders_spec.rb +0 -119
  102. data/spec/integration/mongoid/inheritance_spec.rb +0 -137
  103. data/spec/integration/mongoid/named_scope_spec.rb +0 -46
  104. data/spec/models/address.rb +0 -39
  105. data/spec/models/animal.rb +0 -6
  106. data/spec/models/callbacks.rb +0 -18
  107. data/spec/models/comment.rb +0 -8
  108. data/spec/models/country_code.rb +0 -6
  109. data/spec/models/employer.rb +0 -5
  110. data/spec/models/game.rb +0 -7
  111. data/spec/models/inheritance.rb +0 -56
  112. data/spec/models/location.rb +0 -5
  113. data/spec/models/mixed_drink.rb +0 -4
  114. data/spec/models/name.rb +0 -13
  115. data/spec/models/namespacing.rb +0 -11
  116. data/spec/models/patient.rb +0 -4
  117. data/spec/models/person.rb +0 -99
  118. data/spec/models/pet.rb +0 -7
  119. data/spec/models/pet_owner.rb +0 -6
  120. data/spec/models/phone.rb +0 -7
  121. data/spec/models/post.rb +0 -15
  122. data/spec/models/translation.rb +0 -5
  123. data/spec/models/vet_visit.rb +0 -5
  124. data/spec/spec.opts +0 -3
  125. data/spec/spec_helper.rb +0 -31
  126. data/spec/unit/mongoid/associations/belongs_to_related_spec.rb +0 -145
  127. data/spec/unit/mongoid/associations/embed_many_spec.rb +0 -516
  128. data/spec/unit/mongoid/associations/embed_one_spec.rb +0 -282
  129. data/spec/unit/mongoid/associations/embedded_in_spec.rb +0 -193
  130. data/spec/unit/mongoid/associations/has_many_related_spec.rb +0 -418
  131. data/spec/unit/mongoid/associations/has_one_related_spec.rb +0 -179
  132. data/spec/unit/mongoid/associations/meta_data_spec.rb +0 -88
  133. data/spec/unit/mongoid/associations/options_spec.rb +0 -192
  134. data/spec/unit/mongoid/associations_spec.rb +0 -595
  135. data/spec/unit/mongoid/attributes_spec.rb +0 -507
  136. data/spec/unit/mongoid/callbacks_spec.rb +0 -55
  137. data/spec/unit/mongoid/collection_spec.rb +0 -187
  138. data/spec/unit/mongoid/collections/cyclic_iterator_spec.rb +0 -75
  139. data/spec/unit/mongoid/collections/master_spec.rb +0 -41
  140. data/spec/unit/mongoid/collections/mimic_spec.rb +0 -43
  141. data/spec/unit/mongoid/collections/slaves_spec.rb +0 -81
  142. data/spec/unit/mongoid/commands/create_spec.rb +0 -31
  143. data/spec/unit/mongoid/commands/delete_all_spec.rb +0 -58
  144. data/spec/unit/mongoid/commands/delete_spec.rb +0 -38
  145. data/spec/unit/mongoid/commands/destroy_all_spec.rb +0 -21
  146. data/spec/unit/mongoid/commands/destroy_spec.rb +0 -51
  147. data/spec/unit/mongoid/commands/save_spec.rb +0 -107
  148. data/spec/unit/mongoid/commands_spec.rb +0 -270
  149. data/spec/unit/mongoid/config_spec.rb +0 -172
  150. data/spec/unit/mongoid/contexts/enumerable_spec.rb +0 -421
  151. data/spec/unit/mongoid/contexts/mongo_spec.rb +0 -682
  152. data/spec/unit/mongoid/contexts_spec.rb +0 -25
  153. data/spec/unit/mongoid/criteria_spec.rb +0 -824
  154. data/spec/unit/mongoid/criterion/complex_spec.rb +0 -19
  155. data/spec/unit/mongoid/criterion/exclusion_spec.rb +0 -91
  156. data/spec/unit/mongoid/criterion/inclusion_spec.rb +0 -219
  157. data/spec/unit/mongoid/criterion/optional_spec.rb +0 -319
  158. data/spec/unit/mongoid/cursor_spec.rb +0 -74
  159. data/spec/unit/mongoid/deprecation_spec.rb +0 -24
  160. data/spec/unit/mongoid/document_spec.rb +0 -818
  161. data/spec/unit/mongoid/errors_spec.rb +0 -103
  162. data/spec/unit/mongoid/extensions/array/accessors_spec.rb +0 -50
  163. data/spec/unit/mongoid/extensions/array/assimilation_spec.rb +0 -24
  164. data/spec/unit/mongoid/extensions/array/conversions_spec.rb +0 -35
  165. data/spec/unit/mongoid/extensions/array/parentization_spec.rb +0 -20
  166. data/spec/unit/mongoid/extensions/big_decimal/conversions_spec.rb +0 -22
  167. data/spec/unit/mongoid/extensions/binary/conversions_spec.rb +0 -22
  168. data/spec/unit/mongoid/extensions/boolean/conversions_spec.rb +0 -49
  169. data/spec/unit/mongoid/extensions/date/conversions_spec.rb +0 -102
  170. data/spec/unit/mongoid/extensions/datetime/conversions_spec.rb +0 -67
  171. data/spec/unit/mongoid/extensions/float/conversions_spec.rb +0 -61
  172. data/spec/unit/mongoid/extensions/hash/accessors_spec.rb +0 -184
  173. data/spec/unit/mongoid/extensions/hash/assimilation_spec.rb +0 -46
  174. data/spec/unit/mongoid/extensions/hash/conversions_spec.rb +0 -21
  175. data/spec/unit/mongoid/extensions/hash/criteria_helpers_spec.rb +0 -17
  176. data/spec/unit/mongoid/extensions/hash/scoping_spec.rb +0 -14
  177. data/spec/unit/mongoid/extensions/integer/conversions_spec.rb +0 -61
  178. data/spec/unit/mongoid/extensions/nil/assimilation_spec.rb +0 -24
  179. data/spec/unit/mongoid/extensions/object/conversions_spec.rb +0 -57
  180. data/spec/unit/mongoid/extensions/proc/scoping_spec.rb +0 -34
  181. data/spec/unit/mongoid/extensions/string/conversions_spec.rb +0 -17
  182. data/spec/unit/mongoid/extensions/string/inflections_spec.rb +0 -208
  183. data/spec/unit/mongoid/extensions/symbol/inflections_spec.rb +0 -91
  184. data/spec/unit/mongoid/extensions/time/conversions_spec.rb +0 -70
  185. data/spec/unit/mongoid/extras_spec.rb +0 -102
  186. data/spec/unit/mongoid/factory_spec.rb +0 -31
  187. data/spec/unit/mongoid/field_spec.rb +0 -143
  188. data/spec/unit/mongoid/fields_spec.rb +0 -181
  189. data/spec/unit/mongoid/finders_spec.rb +0 -404
  190. data/spec/unit/mongoid/identity_spec.rb +0 -109
  191. data/spec/unit/mongoid/indexes_spec.rb +0 -93
  192. data/spec/unit/mongoid/javascript_spec.rb +0 -48
  193. data/spec/unit/mongoid/matchers/all_spec.rb +0 -27
  194. data/spec/unit/mongoid/matchers/default_spec.rb +0 -27
  195. data/spec/unit/mongoid/matchers/exists_spec.rb +0 -56
  196. data/spec/unit/mongoid/matchers/gt_spec.rb +0 -39
  197. data/spec/unit/mongoid/matchers/gte_spec.rb +0 -49
  198. data/spec/unit/mongoid/matchers/in_spec.rb +0 -27
  199. data/spec/unit/mongoid/matchers/lt_spec.rb +0 -39
  200. data/spec/unit/mongoid/matchers/lte_spec.rb +0 -49
  201. data/spec/unit/mongoid/matchers/ne_spec.rb +0 -27
  202. data/spec/unit/mongoid/matchers/nin_spec.rb +0 -27
  203. data/spec/unit/mongoid/matchers/size_spec.rb +0 -27
  204. data/spec/unit/mongoid/matchers_spec.rb +0 -329
  205. data/spec/unit/mongoid/memoization_spec.rb +0 -75
  206. data/spec/unit/mongoid/named_scope_spec.rb +0 -123
  207. data/spec/unit/mongoid/observable_spec.rb +0 -46
  208. data/spec/unit/mongoid/paths_spec.rb +0 -124
  209. data/spec/unit/mongoid/scope_spec.rb +0 -240
  210. data/spec/unit/mongoid/state_spec.rb +0 -83
  211. data/spec/unit/mongoid/timestamps_spec.rb +0 -25
  212. data/spec/unit/mongoid/validations/associated_spec.rb +0 -103
  213. data/spec/unit/mongoid/validations/uniqueness_spec.rb +0 -47
  214. data/spec/unit/mongoid/validations_spec.rb +0 -190
  215. data/spec/unit/mongoid/versioning_spec.rb +0 -41
  216. data/spec/unit/mongoid_spec.rb +0 -46
@@ -1,55 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Callbacks do
4
-
5
- describe ".included" do
6
-
7
- before do
8
- @class = Class.new do
9
- include Mongoid::Callbacks
10
- end
11
- end
12
-
13
- it "includes the before_create callback" do
14
- @class.should respond_to(:before_create)
15
- end
16
-
17
- it "includes the after_create callback" do
18
- @class.should respond_to(:after_create)
19
- end
20
-
21
- it "includes the before_destroy callback" do
22
- @class.should respond_to(:before_destroy)
23
- end
24
-
25
- it "includes the after_destroy callback" do
26
- @class.should respond_to(:after_destroy)
27
- end
28
-
29
- it "includes the before_save callback" do
30
- @class.should respond_to(:before_save)
31
- end
32
-
33
- it "includes the after_save callback" do
34
- @class.should respond_to(:after_save)
35
- end
36
-
37
- it "includes the before_update callback" do
38
- @class.should respond_to(:before_update)
39
- end
40
-
41
- it "includes the after_update callback" do
42
- @class.should respond_to(:after_update)
43
- end
44
-
45
- it "includes the before_validation callback" do
46
- @class.should respond_to(:before_validate)
47
- end
48
-
49
- it "includes the after_validation callback" do
50
- @class.should respond_to(:after_validate)
51
- end
52
-
53
- end
54
-
55
- end
@@ -1,187 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Collection do
4
-
5
- let(:master) do
6
- stub.quacks_like(Mongoid::Collections::Master.allocate)
7
- end
8
-
9
- let(:slaves) do
10
- stub.quacks_like(Mongoid::Collections::Slaves.allocate)
11
- end
12
-
13
- let(:collection) do
14
- Mongoid::Collection.new(Person, "people")
15
- end
16
-
17
- before do
18
- collection.instance_variable_set(:@master, master)
19
- collection.instance_variable_set(:@slaves, slaves)
20
- end
21
-
22
- context "Mongo::Collection write operations" do
23
-
24
- Mongoid::Collections::Operations::WRITE.each do |name|
25
-
26
- it "defines #{name}" do
27
- collection.should respond_to(name)
28
- end
29
- end
30
-
31
- end
32
-
33
- context "Mongo::Collection read operations" do
34
-
35
- Mongoid::Collections::Operations::READ.each do |name|
36
-
37
- it "defines #{name}" do
38
- collection.should respond_to(name)
39
- end
40
- end
41
- end
42
-
43
- describe "#directed" do
44
-
45
- context "when an enslave option is not passed" do
46
-
47
- before do
48
- slaves.expects(:empty?).returns(false)
49
- end
50
-
51
- before do
52
- Person.enslave
53
- end
54
-
55
- after do
56
- Person.enslaved = false
57
- end
58
-
59
- it "uses the default" do
60
- collection.directed.should == slaves
61
- end
62
- end
63
-
64
- context "when an enslave option is passed" do
65
-
66
- before do
67
- slaves.expects(:empty?).returns(false)
68
- end
69
-
70
- it "overwrites the default" do
71
- collection.directed(:enslave => true).should == slaves
72
- end
73
- end
74
-
75
- context "when cached option is passed" do
76
-
77
- let(:options) do
78
- { :cache => true }
79
- end
80
-
81
- it "removed the cache option" do
82
- collection.directed(options).should == master
83
- options[:cache].should be_nil
84
- end
85
- end
86
-
87
- end
88
-
89
- describe "#find" do
90
-
91
- before do
92
- @cursor = stub.quacks_like(Mongoid::Cursor.allocate)
93
- Mongoid::Cursor.expects(:new).with(Person, collection, @mongo_cursor).returns(@cursor)
94
- end
95
-
96
- context "when no block supplied" do
97
-
98
- before do
99
- master.expects(:find).with({ :test => "value" }, {}).returns(@mongo_cursor)
100
- end
101
-
102
- it "finds return a cursor" do
103
- collection.find({ :test => "value"}).should == @cursor
104
- end
105
-
106
- end
107
-
108
- context "when a block is supplied" do
109
-
110
- before do
111
- master.expects(:find).with({ :test => "value" }, {}).returns(@mongo_cursor)
112
- end
113
-
114
- it "yields to the cursor and closes it" do
115
- @cursor.expects(:close).returns(true)
116
- collection.find({ :test => "value" }) do |cur|
117
- cur.should == @cursor
118
- end
119
- end
120
- end
121
-
122
- context "when an enslave option exists" do
123
-
124
- before do
125
- @options = { :enslave => true }
126
- slaves.expects(:empty?).returns(false)
127
- slaves.expects(:find).with({ :test => "value" }, {}).returns(@mongo_cursor)
128
- end
129
-
130
- it "sends the query to the slave pool" do
131
- collection.find({ :test => "value"}, @options).should == @cursor
132
- end
133
-
134
- it "deletes the enslave option" do
135
- collection.find({ :test => "value"}, @options)
136
- @options[:enslave].should be_nil
137
- end
138
- end
139
-
140
- context "when an enslave option does not exist" do
141
-
142
- before do
143
- master.expects(:find).with({ :test => "value" }, {}).returns(@mongo_cursor)
144
- end
145
-
146
- it "sends the query to the master" do
147
- collection.find({ :test => "value"}).should == @cursor
148
- end
149
- end
150
- end
151
-
152
- describe "#find_one" do
153
-
154
- before do
155
- @person = stub
156
- end
157
-
158
- context "when an enslave option exists" do
159
-
160
- before do
161
- @options = { :enslave => true }
162
- slaves.expects(:empty?).returns(false)
163
- slaves.expects(:find_one).with({ :test => "value" }, {}).returns(@person)
164
- end
165
-
166
- it "sends the query to the slave pool" do
167
- collection.find_one({ :test => "value"}, @options).should == @person
168
- end
169
-
170
- it "deletes the enslave option" do
171
- collection.find_one({ :test => "value"}, @options)
172
- @options[:enslave].should be_nil
173
- end
174
- end
175
-
176
- context "when an enslave option does not exist" do
177
-
178
- before do
179
- master.expects(:find_one).with({ :test => "value" }, {}).returns(@person)
180
- end
181
-
182
- it "sends the query to the master" do
183
- collection.find_one({ :test => "value"}).should == @person
184
- end
185
- end
186
- end
187
- end
@@ -1,75 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Collections::CyclicIterator do
4
-
5
- before do
6
- @first = stub
7
- @second = stub
8
- @third = stub
9
- @fourth = stub
10
- end
11
-
12
- let(:array) do
13
- [ @first, @second, @third, @fourth ]
14
- end
15
-
16
- describe "#initialize" do
17
-
18
- let(:iterator) do
19
- Mongoid::Collections::CyclicIterator.new(array)
20
- end
21
-
22
- it "defaults the counter to -1" do
23
- iterator.counter.should == -1
24
- end
25
- end
26
-
27
- describe "#next" do
28
-
29
- context "when the iterator has just been created" do
30
-
31
- let(:iterator) do
32
- Mongoid::Collections::CyclicIterator.new(array)
33
- end
34
-
35
- it "returns the first element" do
36
- iterator.next.should == @first
37
- end
38
- end
39
-
40
- context "when the iterator is in the middle" do
41
-
42
- let(:iterator) do
43
- Mongoid::Collections::CyclicIterator.new(array)
44
- end
45
-
46
- before do
47
- 2.times { iterator.next }
48
- end
49
-
50
- it "returns the next element given the index" do
51
- iterator.next.should == @third
52
- end
53
- end
54
-
55
- context "when the iterator is on the last element" do
56
-
57
- let(:iterator) do
58
- Mongoid::Collections::CyclicIterator.new(array)
59
- end
60
-
61
- before do
62
- 4.times { iterator.next }
63
- end
64
-
65
- it "returns the first element" do
66
- iterator.next.should == @first
67
- end
68
-
69
- it "resets the counter" do
70
- iterator.next
71
- iterator.counter.should == 0
72
- end
73
- end
74
- end
75
- end
@@ -1,41 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Collections::Master do
4
-
5
- let(:collection) do
6
- stub.quacks_like(Mongo::Collection.allocate)
7
- end
8
-
9
- let(:db) do
10
- stub.quacks_like(Mongo::DB.allocate)
11
- end
12
-
13
- let(:master) do
14
- Mongoid::Collections::Master.new(db, "people")
15
- end
16
-
17
- before do
18
- db.expects(:collection).with("people").returns(collection)
19
- end
20
-
21
- context "Mongo::Collection operations" do
22
-
23
- Mongoid::Collections::Operations::ALL.each do |name|
24
-
25
- it "defines #{name}" do
26
- master.should respond_to(name)
27
- end
28
-
29
- describe "##{name}" do
30
-
31
- before do
32
- collection.expects(name)
33
- end
34
-
35
- it "delegates to the collection" do
36
- master.send(name)
37
- end
38
- end
39
- end
40
- end
41
- end
@@ -1,43 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Collections::Mimic do
4
-
5
- let(:mimic) do
6
- klass = Class.new do
7
- include Mongoid::Collections::Mimic
8
- end
9
- klass.new
10
- end
11
-
12
- describe "#attempt" do
13
-
14
- before do
15
- @operation = stub.quacks_like(Proc.new {})
16
- end
17
-
18
- context "when the call succeeds" do
19
-
20
- it "returns the value" do
21
- @operation.expects(:call).returns([])
22
- mimic.attempt(@operation, Time.now).should == []
23
- end
24
- end
25
-
26
- context "when the call fails" do
27
-
28
- before do
29
- Mongoid.reconnect_time = 0.10
30
- end
31
-
32
- after do
33
- Mongoid.reconnect_time = 3
34
- end
35
-
36
- it "retries the call" do
37
- @operation.expects(:call).at_least_once.raises(Mongo::ConnectionFailure.new)
38
- lambda { mimic.attempt(@operation, Time.now) }.should raise_error
39
- end
40
- end
41
-
42
- end
43
- end
@@ -1,81 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Collections::Master do
4
-
5
- let(:collection) do
6
- stub.quacks_like(Mongo::Collection.allocate)
7
- end
8
-
9
- let(:db) do
10
- stub.quacks_like(Mongo::DB.allocate)
11
- end
12
-
13
- describe "#empty?" do
14
-
15
- context "when the slaves exist" do
16
-
17
- let(:slave) do
18
- Mongoid::Collections::Slaves.new([ db ], "people")
19
- end
20
-
21
- before do
22
- db.expects(:collection).with("people").returns(collection)
23
- end
24
-
25
- it "returns false" do
26
- slave.should_not be_empty
27
- end
28
- end
29
-
30
- context "when the slaves do not exist" do
31
-
32
- let(:slave) do
33
- Mongoid::Collections::Slaves.new([], "people")
34
- end
35
-
36
- it "returns true" do
37
- slave.should be_empty
38
- end
39
- end
40
-
41
- context "when the slaves are nil" do
42
-
43
- let(:slave) do
44
- Mongoid::Collections::Slaves.new(nil, "people")
45
- end
46
-
47
- it "returns true" do
48
- slave.should be_empty
49
- end
50
- end
51
- end
52
-
53
- context "Mongo::Collection operations" do
54
-
55
- let(:slave) do
56
- Mongoid::Collections::Slaves.new([ db ], "people")
57
- end
58
-
59
- before do
60
- db.expects(:collection).with("people").returns(collection)
61
- end
62
-
63
- Mongoid::Collections::Operations::READ.each do |name|
64
-
65
- it "defines #{name}" do
66
- slave.should respond_to(name)
67
- end
68
-
69
- describe "##{name}" do
70
-
71
- before do
72
- collection.expects(name)
73
- end
74
-
75
- it "delegates to the collection" do
76
- slave.send(name)
77
- end
78
- end
79
- end
80
- end
81
- end