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.
- data/lib/mongoid.rb +11 -5
- data/lib/mongoid/associations.rb +112 -107
- data/lib/mongoid/associations/belongs_to_related.rb +2 -3
- data/lib/mongoid/associations/embedded_in.rb +12 -4
- data/lib/mongoid/associations/{embed_many.rb → embeds_many.rb} +101 -32
- data/lib/mongoid/associations/{embed_one.rb → embeds_one.rb} +10 -10
- data/lib/mongoid/associations/has_many_related.rb +51 -5
- data/lib/mongoid/associations/has_one_related.rb +9 -5
- data/lib/mongoid/associations/meta_data.rb +2 -1
- data/lib/mongoid/associations/options.rb +15 -6
- data/lib/mongoid/associations/proxy.rb +14 -21
- data/lib/mongoid/attributes.rb +34 -13
- data/lib/mongoid/callbacks.rb +1 -2
- data/lib/mongoid/collection.rb +4 -3
- data/lib/mongoid/collections.rb +41 -0
- data/lib/mongoid/collections/master.rb +3 -2
- data/lib/mongoid/collections/slaves.rb +3 -2
- data/lib/mongoid/components.rb +4 -1
- data/lib/mongoid/config.rb +163 -13
- data/lib/mongoid/contexts.rb +1 -2
- data/lib/mongoid/contexts/enumerable.rb +1 -1
- data/lib/mongoid/contexts/mongo.rb +1 -1
- data/lib/mongoid/contexts/paging.rb +10 -2
- data/lib/mongoid/criteria.rb +13 -22
- data/lib/mongoid/criterion/exclusion.rb +3 -3
- data/lib/mongoid/criterion/inclusion.rb +17 -0
- data/lib/mongoid/criterion/optional.rb +1 -1
- data/lib/mongoid/dirty.rb +253 -0
- data/lib/mongoid/document.rb +40 -85
- data/lib/mongoid/errors.rb +48 -1
- data/lib/mongoid/extensions.rb +11 -9
- data/lib/mongoid/extensions/big_decimal/conversions.rb +2 -2
- data/lib/mongoid/extensions/boolean/conversions.rb +8 -2
- data/lib/mongoid/extensions/date/conversions.rb +13 -4
- data/lib/mongoid/extensions/datetime/conversions.rb +1 -6
- data/lib/mongoid/extensions/float/conversions.rb +5 -1
- data/lib/mongoid/extensions/hash/assimilation.rb +12 -3
- data/lib/mongoid/extensions/hash/conversions.rb +34 -4
- data/lib/mongoid/extensions/integer/conversions.rb +5 -1
- data/lib/mongoid/extensions/nil/assimilation.rb +4 -0
- data/lib/mongoid/extensions/object/conversions.rb +3 -3
- data/lib/mongoid/extensions/string/conversions.rb +1 -1
- data/lib/mongoid/extensions/symbol/inflections.rb +5 -2
- data/lib/mongoid/extensions/time_conversions.rb +35 -0
- data/lib/mongoid/factory.rb +2 -1
- data/lib/mongoid/field.rb +15 -2
- data/lib/mongoid/fields.rb +1 -1
- data/lib/mongoid/identity.rb +3 -3
- data/lib/mongoid/indexes.rb +3 -3
- data/lib/mongoid/matchers.rb +1 -2
- data/lib/mongoid/memoization.rb +8 -2
- data/lib/mongoid/named_scope.rb +0 -5
- data/lib/mongoid/observable.rb +1 -1
- data/lib/mongoid/paths.rb +30 -22
- data/lib/mongoid/persistence.rb +218 -0
- data/lib/mongoid/persistence/command.rb +39 -0
- data/lib/mongoid/persistence/insert.rb +47 -0
- data/lib/mongoid/persistence/insert_embedded.rb +38 -0
- data/lib/mongoid/persistence/remove.rb +39 -0
- data/lib/mongoid/persistence/remove_all.rb +37 -0
- data/lib/mongoid/persistence/remove_embedded.rb +50 -0
- data/lib/mongoid/persistence/update.rb +63 -0
- data/lib/mongoid/railtie.rb +53 -0
- data/lib/mongoid/railties/database.rake +37 -0
- data/lib/mongoid/timestamps.rb +2 -2
- data/lib/mongoid/validations.rb +2 -2
- data/lib/mongoid/validations/associated.rb +2 -2
- data/lib/mongoid/validations/uniqueness.rb +13 -2
- data/lib/mongoid/version.rb +4 -0
- data/lib/mongoid/versioning.rb +3 -2
- data/lib/rails/generators/mongoid/config/config_generator.rb +41 -0
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +24 -0
- data/lib/rails/generators/mongoid/model/model_generator.rb +24 -0
- data/lib/rails/generators/mongoid/model/templates/model.rb +15 -0
- data/lib/rails/generators/mongoid_generator.rb +61 -0
- metadata +76 -301
- data/.gitignore +0 -6
- data/.watchr +0 -29
- data/Rakefile +0 -52
- data/VERSION +0 -1
- data/caliper.yml +0 -4
- data/lib/mongoid/collections/mimic.rb +0 -46
- data/lib/mongoid/commands.rb +0 -161
- data/lib/mongoid/commands/create.rb +0 -19
- data/lib/mongoid/commands/delete.rb +0 -16
- data/lib/mongoid/commands/delete_all.rb +0 -23
- data/lib/mongoid/commands/deletion.rb +0 -18
- data/lib/mongoid/commands/destroy.rb +0 -17
- data/lib/mongoid/commands/destroy_all.rb +0 -23
- data/lib/mongoid/commands/save.rb +0 -29
- data/lib/mongoid/extensions/time/conversions.rb +0 -18
- data/mongoid.gemspec +0 -408
- data/perf/benchmark.rb +0 -77
- data/spec/integration/mongoid/associations_spec.rb +0 -340
- data/spec/integration/mongoid/attributes_spec.rb +0 -22
- data/spec/integration/mongoid/commands_spec.rb +0 -227
- data/spec/integration/mongoid/contexts/enumerable_spec.rb +0 -33
- data/spec/integration/mongoid/criteria_spec.rb +0 -272
- data/spec/integration/mongoid/document_spec.rb +0 -650
- data/spec/integration/mongoid/extensions_spec.rb +0 -22
- data/spec/integration/mongoid/finders_spec.rb +0 -119
- data/spec/integration/mongoid/inheritance_spec.rb +0 -137
- data/spec/integration/mongoid/named_scope_spec.rb +0 -46
- data/spec/models/address.rb +0 -39
- data/spec/models/animal.rb +0 -6
- data/spec/models/callbacks.rb +0 -18
- data/spec/models/comment.rb +0 -8
- data/spec/models/country_code.rb +0 -6
- data/spec/models/employer.rb +0 -5
- data/spec/models/game.rb +0 -7
- data/spec/models/inheritance.rb +0 -56
- data/spec/models/location.rb +0 -5
- data/spec/models/mixed_drink.rb +0 -4
- data/spec/models/name.rb +0 -13
- data/spec/models/namespacing.rb +0 -11
- data/spec/models/patient.rb +0 -4
- data/spec/models/person.rb +0 -99
- data/spec/models/pet.rb +0 -7
- data/spec/models/pet_owner.rb +0 -6
- data/spec/models/phone.rb +0 -7
- data/spec/models/post.rb +0 -15
- data/spec/models/translation.rb +0 -5
- data/spec/models/vet_visit.rb +0 -5
- data/spec/spec.opts +0 -3
- data/spec/spec_helper.rb +0 -31
- data/spec/unit/mongoid/associations/belongs_to_related_spec.rb +0 -145
- data/spec/unit/mongoid/associations/embed_many_spec.rb +0 -516
- data/spec/unit/mongoid/associations/embed_one_spec.rb +0 -282
- data/spec/unit/mongoid/associations/embedded_in_spec.rb +0 -193
- data/spec/unit/mongoid/associations/has_many_related_spec.rb +0 -418
- data/spec/unit/mongoid/associations/has_one_related_spec.rb +0 -179
- data/spec/unit/mongoid/associations/meta_data_spec.rb +0 -88
- data/spec/unit/mongoid/associations/options_spec.rb +0 -192
- data/spec/unit/mongoid/associations_spec.rb +0 -595
- data/spec/unit/mongoid/attributes_spec.rb +0 -507
- data/spec/unit/mongoid/callbacks_spec.rb +0 -55
- data/spec/unit/mongoid/collection_spec.rb +0 -187
- data/spec/unit/mongoid/collections/cyclic_iterator_spec.rb +0 -75
- data/spec/unit/mongoid/collections/master_spec.rb +0 -41
- data/spec/unit/mongoid/collections/mimic_spec.rb +0 -43
- data/spec/unit/mongoid/collections/slaves_spec.rb +0 -81
- data/spec/unit/mongoid/commands/create_spec.rb +0 -31
- data/spec/unit/mongoid/commands/delete_all_spec.rb +0 -58
- data/spec/unit/mongoid/commands/delete_spec.rb +0 -38
- data/spec/unit/mongoid/commands/destroy_all_spec.rb +0 -21
- data/spec/unit/mongoid/commands/destroy_spec.rb +0 -51
- data/spec/unit/mongoid/commands/save_spec.rb +0 -107
- data/spec/unit/mongoid/commands_spec.rb +0 -270
- data/spec/unit/mongoid/config_spec.rb +0 -172
- data/spec/unit/mongoid/contexts/enumerable_spec.rb +0 -421
- data/spec/unit/mongoid/contexts/mongo_spec.rb +0 -682
- data/spec/unit/mongoid/contexts_spec.rb +0 -25
- data/spec/unit/mongoid/criteria_spec.rb +0 -824
- data/spec/unit/mongoid/criterion/complex_spec.rb +0 -19
- data/spec/unit/mongoid/criterion/exclusion_spec.rb +0 -91
- data/spec/unit/mongoid/criterion/inclusion_spec.rb +0 -219
- data/spec/unit/mongoid/criterion/optional_spec.rb +0 -319
- data/spec/unit/mongoid/cursor_spec.rb +0 -74
- data/spec/unit/mongoid/deprecation_spec.rb +0 -24
- data/spec/unit/mongoid/document_spec.rb +0 -818
- data/spec/unit/mongoid/errors_spec.rb +0 -103
- data/spec/unit/mongoid/extensions/array/accessors_spec.rb +0 -50
- data/spec/unit/mongoid/extensions/array/assimilation_spec.rb +0 -24
- data/spec/unit/mongoid/extensions/array/conversions_spec.rb +0 -35
- data/spec/unit/mongoid/extensions/array/parentization_spec.rb +0 -20
- data/spec/unit/mongoid/extensions/big_decimal/conversions_spec.rb +0 -22
- data/spec/unit/mongoid/extensions/binary/conversions_spec.rb +0 -22
- data/spec/unit/mongoid/extensions/boolean/conversions_spec.rb +0 -49
- data/spec/unit/mongoid/extensions/date/conversions_spec.rb +0 -102
- data/spec/unit/mongoid/extensions/datetime/conversions_spec.rb +0 -67
- data/spec/unit/mongoid/extensions/float/conversions_spec.rb +0 -61
- data/spec/unit/mongoid/extensions/hash/accessors_spec.rb +0 -184
- data/spec/unit/mongoid/extensions/hash/assimilation_spec.rb +0 -46
- data/spec/unit/mongoid/extensions/hash/conversions_spec.rb +0 -21
- data/spec/unit/mongoid/extensions/hash/criteria_helpers_spec.rb +0 -17
- data/spec/unit/mongoid/extensions/hash/scoping_spec.rb +0 -14
- data/spec/unit/mongoid/extensions/integer/conversions_spec.rb +0 -61
- data/spec/unit/mongoid/extensions/nil/assimilation_spec.rb +0 -24
- data/spec/unit/mongoid/extensions/object/conversions_spec.rb +0 -57
- data/spec/unit/mongoid/extensions/proc/scoping_spec.rb +0 -34
- data/spec/unit/mongoid/extensions/string/conversions_spec.rb +0 -17
- data/spec/unit/mongoid/extensions/string/inflections_spec.rb +0 -208
- data/spec/unit/mongoid/extensions/symbol/inflections_spec.rb +0 -91
- data/spec/unit/mongoid/extensions/time/conversions_spec.rb +0 -70
- data/spec/unit/mongoid/extras_spec.rb +0 -102
- data/spec/unit/mongoid/factory_spec.rb +0 -31
- data/spec/unit/mongoid/field_spec.rb +0 -143
- data/spec/unit/mongoid/fields_spec.rb +0 -181
- data/spec/unit/mongoid/finders_spec.rb +0 -404
- data/spec/unit/mongoid/identity_spec.rb +0 -109
- data/spec/unit/mongoid/indexes_spec.rb +0 -93
- data/spec/unit/mongoid/javascript_spec.rb +0 -48
- data/spec/unit/mongoid/matchers/all_spec.rb +0 -27
- data/spec/unit/mongoid/matchers/default_spec.rb +0 -27
- data/spec/unit/mongoid/matchers/exists_spec.rb +0 -56
- data/spec/unit/mongoid/matchers/gt_spec.rb +0 -39
- data/spec/unit/mongoid/matchers/gte_spec.rb +0 -49
- data/spec/unit/mongoid/matchers/in_spec.rb +0 -27
- data/spec/unit/mongoid/matchers/lt_spec.rb +0 -39
- data/spec/unit/mongoid/matchers/lte_spec.rb +0 -49
- data/spec/unit/mongoid/matchers/ne_spec.rb +0 -27
- data/spec/unit/mongoid/matchers/nin_spec.rb +0 -27
- data/spec/unit/mongoid/matchers/size_spec.rb +0 -27
- data/spec/unit/mongoid/matchers_spec.rb +0 -329
- data/spec/unit/mongoid/memoization_spec.rb +0 -75
- data/spec/unit/mongoid/named_scope_spec.rb +0 -123
- data/spec/unit/mongoid/observable_spec.rb +0 -46
- data/spec/unit/mongoid/paths_spec.rb +0 -124
- data/spec/unit/mongoid/scope_spec.rb +0 -240
- data/spec/unit/mongoid/state_spec.rb +0 -83
- data/spec/unit/mongoid/timestamps_spec.rb +0 -25
- data/spec/unit/mongoid/validations/associated_spec.rb +0 -103
- data/spec/unit/mongoid/validations/uniqueness_spec.rb +0 -47
- data/spec/unit/mongoid/validations_spec.rb +0 -190
- data/spec/unit/mongoid/versioning_spec.rb +0 -41
- 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
|