mongo_mapper 0.13.1 → 0.14.0.rc1
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.
- checksums.yaml +13 -5
- data/README.rdoc +3 -6
- data/lib/mongo_mapper.rb +1 -0
- data/lib/mongo_mapper/document.rb +2 -0
- data/lib/mongo_mapper/extensions/array.rb +14 -6
- data/lib/mongo_mapper/extensions/hash.rb +15 -3
- data/lib/mongo_mapper/extensions/object.rb +4 -0
- data/lib/mongo_mapper/extensions/string.rb +13 -5
- data/lib/mongo_mapper/plugins/accessible.rb +12 -11
- data/lib/mongo_mapper/plugins/associations.rb +7 -6
- data/lib/mongo_mapper/plugins/associations/base.rb +13 -12
- data/lib/mongo_mapper/plugins/associations/belongs_to_polymorphic_proxy.rb +9 -8
- data/lib/mongo_mapper/plugins/associations/belongs_to_proxy.rb +12 -11
- data/lib/mongo_mapper/plugins/associations/embedded_collection.rb +4 -4
- data/lib/mongo_mapper/plugins/associations/in_array_proxy.rb +24 -23
- data/lib/mongo_mapper/plugins/associations/many_documents_as_proxy.rb +18 -16
- data/lib/mongo_mapper/plugins/associations/many_documents_proxy.rb +55 -48
- data/lib/mongo_mapper/plugins/associations/many_embedded_polymorphic_proxy.rb +14 -13
- data/lib/mongo_mapper/plugins/associations/many_embedded_proxy.rb +7 -6
- data/lib/mongo_mapper/plugins/associations/many_polymorphic_proxy.rb +7 -5
- data/lib/mongo_mapper/plugins/associations/one_as_proxy.rb +14 -11
- data/lib/mongo_mapper/plugins/associations/one_embedded_polymorphic_proxy.rb +14 -13
- data/lib/mongo_mapper/plugins/associations/one_embedded_proxy.rb +9 -9
- data/lib/mongo_mapper/plugins/associations/one_proxy.rb +27 -26
- data/lib/mongo_mapper/plugins/associations/proxy.rb +29 -26
- data/lib/mongo_mapper/plugins/callbacks.rb +13 -0
- data/lib/mongo_mapper/plugins/counter_cache.rb +23 -4
- data/lib/mongo_mapper/plugins/dirty.rb +2 -2
- data/lib/mongo_mapper/plugins/dynamic_querying.rb +10 -9
- data/lib/mongo_mapper/plugins/dynamic_querying/dynamic_finder.rb +17 -16
- data/lib/mongo_mapper/plugins/embedded_callbacks.rb +1 -1
- data/lib/mongo_mapper/plugins/identity_map.rb +1 -1
- data/lib/mongo_mapper/plugins/indexes.rb +1 -1
- data/lib/mongo_mapper/plugins/keys.rb +158 -158
- data/lib/mongo_mapper/plugins/keys/key.rb +16 -10
- data/lib/mongo_mapper/plugins/keys/static.rb +45 -0
- data/lib/mongo_mapper/plugins/modifiers.rb +27 -26
- data/lib/mongo_mapper/plugins/partial_updates.rb +86 -0
- data/lib/mongo_mapper/plugins/persistence.rb +7 -6
- data/lib/mongo_mapper/plugins/protected.rb +6 -5
- data/lib/mongo_mapper/plugins/querying.rb +80 -43
- data/lib/mongo_mapper/plugins/querying/decorated_plucky_query.rb +14 -9
- data/lib/mongo_mapper/plugins/scopes.rb +78 -7
- data/lib/mongo_mapper/plugins/timestamps.rb +1 -0
- data/lib/mongo_mapper/plugins/validations.rb +0 -0
- data/lib/mongo_mapper/version.rb +1 -1
- data/lib/rails/generators/mongo_mapper/config/config_generator.rb +12 -13
- data/lib/rails/generators/mongo_mapper/model/model_generator.rb +9 -9
- data/spec/functional/accessible_spec.rb +12 -12
- data/spec/functional/associations/belongs_to_polymorphic_proxy_spec.rb +11 -11
- data/spec/functional/associations/belongs_to_proxy_spec.rb +14 -15
- data/spec/functional/associations/in_array_proxy_spec.rb +6 -6
- data/spec/functional/associations/many_documents_proxy_spec.rb +89 -18
- data/spec/functional/associations/many_embedded_polymorphic_proxy_spec.rb +11 -11
- data/spec/functional/associations/many_embedded_proxy_spec.rb +1 -1
- data/spec/functional/associations/one_as_proxy_spec.rb +14 -14
- data/spec/functional/associations/one_embedded_polymorphic_proxy_spec.rb +9 -9
- data/spec/functional/associations/one_embedded_proxy_spec.rb +3 -3
- data/spec/functional/associations/one_proxy_spec.rb +14 -14
- data/spec/functional/caching_spec.rb +8 -8
- data/spec/functional/callbacks_spec.rb +87 -0
- data/spec/functional/counter_cache_spec.rb +89 -0
- data/spec/functional/dirty_spec.rb +41 -41
- data/spec/functional/document_spec.rb +3 -3
- data/spec/functional/embedded_document_spec.rb +18 -18
- data/spec/functional/identity_map_spec.rb +28 -15
- data/spec/functional/indexes_spec.rb +4 -4
- data/spec/functional/keys_spec.rb +12 -3
- data/spec/functional/logger_spec.rb +1 -1
- data/spec/functional/modifiers_spec.rb +2 -2
- data/spec/functional/partial_updates_spec.rb +577 -0
- data/spec/functional/protected_spec.rb +13 -13
- data/spec/functional/querying_spec.rb +11 -10
- data/spec/functional/safe_spec.rb +2 -2
- data/spec/functional/sci_spec.rb +3 -3
- data/spec/functional/scopes_spec.rb +234 -1
- data/spec/functional/static_keys_spec.rb +153 -0
- data/spec/functional/stats_spec.rb +0 -4
- data/spec/functional/touch_spec.rb +1 -1
- data/spec/functional/validations_spec.rb +59 -57
- data/spec/quality_spec.rb +1 -1
- data/spec/spec_helper.rb +7 -3
- data/spec/support/matchers.rb +4 -13
- data/spec/unit/associations/base_spec.rb +12 -12
- data/spec/unit/associations/belongs_to_association_spec.rb +2 -2
- data/spec/unit/associations/many_association_spec.rb +2 -2
- data/spec/unit/associations/one_association_spec.rb +2 -2
- data/spec/unit/associations/proxy_spec.rb +13 -15
- data/spec/unit/document_spec.rb +5 -5
- data/spec/unit/dynamic_finder_spec.rb +8 -8
- data/spec/unit/embedded_document_spec.rb +14 -14
- data/spec/unit/extensions_spec.rb +17 -17
- data/spec/unit/identity_map_middleware_spec.rb +5 -5
- data/spec/unit/key_spec.rb +24 -21
- data/spec/unit/keys_spec.rb +5 -5
- data/spec/unit/mongo_mapper_spec.rb +26 -26
- data/spec/unit/rails_spec.rb +2 -2
- data/spec/unit/serialization_spec.rb +1 -1
- data/spec/unit/time_zones_spec.rb +2 -2
- data/spec/unit/validations_spec.rb +28 -15
- metadata +16 -14
- data/lib/mongo_mapper/connections/10gen.rb +0 -0
- data/lib/mongo_mapper/connections/moped.rb +0 -0
@@ -36,7 +36,7 @@ module IdentityMapSpec
|
|
36
36
|
[200, {}, nil]
|
37
37
|
}
|
38
38
|
mw.call({})
|
39
|
-
called.should
|
39
|
+
called.should be_truthy
|
40
40
|
end
|
41
41
|
|
42
42
|
it "should enable identity map during delegation" do
|
@@ -86,14 +86,14 @@ module IdentityMapSpec
|
|
86
86
|
|
87
87
|
context "with a successful request" do
|
88
88
|
it "should clear the identity map" do
|
89
|
-
MongoMapper::Plugins::IdentityMap.
|
89
|
+
expect(MongoMapper::Plugins::IdentityMap).to receive(:clear).twice
|
90
90
|
get '/'
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
94
94
|
context "when the request raises an error" do
|
95
95
|
it "should clear the identity map" do
|
96
|
-
MongoMapper::Plugins::IdentityMap.
|
96
|
+
expect(MongoMapper::Plugins::IdentityMap).to receive(:clear).once
|
97
97
|
get '/fail' rescue nil
|
98
98
|
end
|
99
99
|
end
|
@@ -117,14 +117,14 @@ module IdentityMapSpec
|
|
117
117
|
|
118
118
|
# context "with a successful request" do
|
119
119
|
# it "should clear the identity map" do
|
120
|
-
# MongoMapper::Plugins::IdentityMap.
|
120
|
+
# expect(MongoMapper::Plugins::IdentityMap).to receive(:clear).twice
|
121
121
|
# get '/'
|
122
122
|
# end
|
123
123
|
# end
|
124
124
|
|
125
125
|
# context "when the request raises an error" do
|
126
126
|
# it "should clear the identity map" do
|
127
|
-
# MongoMapper::Plugins::IdentityMap.
|
127
|
+
# expect(MongoMapper::Plugins::IdentityMap).to receive(:clear).twice
|
128
128
|
# get '/fail' rescue nil
|
129
129
|
# end
|
130
130
|
# end
|
data/spec/unit/key_spec.rb
CHANGED
@@ -50,13 +50,13 @@ describe "Key" do
|
|
50
50
|
key = Key.new(:foo, String, :required => true)
|
51
51
|
key.name.should == 'foo'
|
52
52
|
key.type.should == String
|
53
|
-
key.options[:required].should
|
53
|
+
key.options[:required].should be_truthy
|
54
54
|
end
|
55
55
|
|
56
56
|
it "should work with name and options" do
|
57
57
|
key = Key.new(:foo, :required => true)
|
58
58
|
key.name.should == 'foo'
|
59
|
-
key.options[:required].should
|
59
|
+
key.options[:required].should be_truthy
|
60
60
|
end
|
61
61
|
|
62
62
|
it "should not permit reserved names" do
|
@@ -90,20 +90,20 @@ describe "Key" do
|
|
90
90
|
end
|
91
91
|
|
92
92
|
it "should know if it is a embedded_document" do
|
93
|
-
Key.new(:name, EDoc()).embeddable?.should
|
93
|
+
Key.new(:name, EDoc()).embeddable?.should be_truthy
|
94
94
|
end
|
95
95
|
|
96
96
|
it "should know if it is not a embedded_document" do
|
97
|
-
Key.new(:name, String).embeddable?.should
|
97
|
+
Key.new(:name, String).embeddable?.should be_falsey
|
98
98
|
end
|
99
99
|
|
100
100
|
it "should know if it is a number" do
|
101
|
-
Key.new(:age, Integer).number?.should
|
102
|
-
Key.new(:age, Float).number?.should
|
101
|
+
Key.new(:age, Integer).number?.should be_truthy
|
102
|
+
Key.new(:age, Float).number?.should be_truthy
|
103
103
|
end
|
104
104
|
|
105
105
|
it "should know if it is not a number" do
|
106
|
-
Key.new(:age, String).number?.should
|
106
|
+
Key.new(:age, String).number?.should be_falsey
|
107
107
|
end
|
108
108
|
end
|
109
109
|
|
@@ -148,31 +148,34 @@ describe "Key" do
|
|
148
148
|
|
149
149
|
context "with :read" do
|
150
150
|
let(:accessor) { :read }
|
151
|
-
|
152
|
-
|
153
|
-
|
151
|
+
|
152
|
+
it { expect( subject.read_accessor? ).to be_truthy }
|
153
|
+
it { expect( subject.write_accessor? ).to be_falsey }
|
154
|
+
it { expect( subject.predicate_accessor? ).to be_falsey }
|
154
155
|
end
|
155
156
|
|
156
157
|
context "with :write" do
|
157
158
|
let(:accessor) { :write }
|
158
|
-
|
159
|
-
|
160
|
-
|
159
|
+
|
160
|
+
it { expect( subject.read_accessor? ).to be_falsey }
|
161
|
+
it { expect( subject.write_accessor? ).to be_truthy }
|
162
|
+
it { expect( subject.predicate_accessor? ).to be_falsey }
|
161
163
|
end
|
162
164
|
|
163
165
|
context "with :predicate" do
|
164
166
|
let(:accessor) { :predicate }
|
165
|
-
|
166
|
-
|
167
|
-
|
167
|
+
|
168
|
+
it { expect( subject.read_accessor? ).to be_falsey }
|
169
|
+
it { expect( subject.write_accessor? ).to be_falsey }
|
170
|
+
it { expect( subject.predicate_accessor? ).to be_truthy }
|
168
171
|
end
|
169
172
|
|
170
173
|
context "with an array of options" do
|
171
174
|
let(:accessor) { [:read, :write] }
|
172
175
|
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
+
it { expect( subject.read_accessor? ).to be_truthy }
|
177
|
+
it { expect( subject.write_accessor? ).to be_truthy }
|
178
|
+
it { expect( subject.predicate_accessor? ).to be_falsey }
|
176
179
|
end
|
177
180
|
end
|
178
181
|
|
@@ -254,11 +257,11 @@ describe "Key" do
|
|
254
257
|
end
|
255
258
|
|
256
259
|
it "should work with Boolean type and false value" do
|
257
|
-
Key.new(:active, Boolean, :default => false).default_value.should
|
260
|
+
Key.new(:active, Boolean, :default => false).default_value.should be_falsey
|
258
261
|
end
|
259
262
|
|
260
263
|
it "should work with Boolean type and true value" do
|
261
|
-
Key.new(:active, Boolean, :default => true).default_value.should
|
264
|
+
Key.new(:active, Boolean, :default => true).default_value.should be_truthy
|
262
265
|
end
|
263
266
|
|
264
267
|
it "should work with Array values" do
|
data/spec/unit/keys_spec.rb
CHANGED
@@ -16,11 +16,11 @@ describe "Key" do
|
|
16
16
|
|
17
17
|
context ".key?(:symbol)" do
|
18
18
|
it "should be true if document has key" do
|
19
|
-
Address.key?(:city).should
|
19
|
+
Address.key?(:city).should be_truthy
|
20
20
|
end
|
21
21
|
|
22
22
|
it "should be false if document does not have key" do
|
23
|
-
Address.key?(:foo).should
|
23
|
+
Address.key?(:foo).should be_falsey
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
@@ -30,7 +30,7 @@ describe "Key" do
|
|
30
30
|
key :_id, Integer
|
31
31
|
end
|
32
32
|
doc = klass.new
|
33
|
-
doc.
|
33
|
+
expect(doc).to receive(:warn).once
|
34
34
|
doc.assign({:x => :y})
|
35
35
|
end
|
36
36
|
end
|
@@ -59,11 +59,11 @@ describe "Key" do
|
|
59
59
|
|
60
60
|
context ".key?('string')" do
|
61
61
|
it "should be true if document has key" do
|
62
|
-
Address.key?('city').should
|
62
|
+
Address.key?('city').should be_truthy
|
63
63
|
end
|
64
64
|
|
65
65
|
it "should be false if document does not have key" do
|
66
|
-
Address.key?('foo').should
|
66
|
+
Address.key?('foo').should be_falsey
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
@@ -40,9 +40,9 @@ describe "MongoMapper" do
|
|
40
40
|
MongoMapper.config = {
|
41
41
|
'development' => {'host' => '127.0.0.1', 'port' => 27017, 'database' => 'test'}
|
42
42
|
}
|
43
|
-
Mongo::MongoClient.
|
44
|
-
MongoMapper.
|
45
|
-
Mongo::DB.
|
43
|
+
expect(Mongo::MongoClient).to receive(:new).with('127.0.0.1', 27017, {})
|
44
|
+
expect(MongoMapper).to receive(:database=).with('test')
|
45
|
+
expect_any_instance_of(Mongo::DB).to receive(:authenticate).never
|
46
46
|
MongoMapper.connect('development')
|
47
47
|
end
|
48
48
|
|
@@ -50,9 +50,9 @@ describe "MongoMapper" do
|
|
50
50
|
MongoMapper.config = {
|
51
51
|
'development' => {'uri' => 'mongodb://127.0.0.1:27017/test'}
|
52
52
|
}
|
53
|
-
Mongo::MongoClient.
|
54
|
-
MongoMapper.
|
55
|
-
Mongo::DB.
|
53
|
+
expect(Mongo::MongoClient).to receive(:new).with('127.0.0.1', 27017, {})
|
54
|
+
expect(MongoMapper).to receive(:database=).with('test')
|
55
|
+
expect_any_instance_of(Mongo::DB).to receive(:authenticate).never
|
56
56
|
MongoMapper.connect('development')
|
57
57
|
end
|
58
58
|
|
@@ -60,9 +60,9 @@ describe "MongoMapper" do
|
|
60
60
|
MongoMapper.config = {
|
61
61
|
'development' => {'host' => '127.0.0.1', 'port' => 27017, 'database' => 'test'}
|
62
62
|
}
|
63
|
-
Mongo::MongoClient.
|
64
|
-
MongoMapper.
|
65
|
-
Mongo::DB.
|
63
|
+
expect(Mongo::MongoClient).to receive(:new).with('127.0.0.1', 27017, {})
|
64
|
+
expect(MongoMapper).to receive(:database=).with('test')
|
65
|
+
expect_any_instance_of(Mongo::DB).to receive(:authenticate).never
|
66
66
|
MongoMapper.connect(:development)
|
67
67
|
end
|
68
68
|
|
@@ -71,7 +71,7 @@ describe "MongoMapper" do
|
|
71
71
|
'development' => {'host' => '127.0.0.1', 'port' => 27017, 'database' => 'test'}
|
72
72
|
}
|
73
73
|
connection, logger = double('connection'), double('logger')
|
74
|
-
Mongo::MongoClient.
|
74
|
+
expect(Mongo::MongoClient).to receive(:new).with('127.0.0.1', 27017, :logger => logger)
|
75
75
|
MongoMapper.connect('development', :logger => logger)
|
76
76
|
end
|
77
77
|
|
@@ -80,7 +80,7 @@ describe "MongoMapper" do
|
|
80
80
|
'development' => {'host' => '127.0.0.1', 'port' => 27017, 'database' => 'test', 'ssl' => true}
|
81
81
|
}
|
82
82
|
connection, logger = double('connection'), double('logger')
|
83
|
-
Mongo::MongoClient.
|
83
|
+
expect(Mongo::MongoClient).to receive(:new).with('127.0.0.1', 27017, :logger => logger, :ssl => true)
|
84
84
|
MongoMapper.connect('development', :logger => logger)
|
85
85
|
end
|
86
86
|
|
@@ -89,7 +89,7 @@ describe "MongoMapper" do
|
|
89
89
|
'development' => {'host' => '127.0.0.1', 'port' => 27017, 'database' => 'test', 'ssl' => false}
|
90
90
|
}
|
91
91
|
connection, logger = double('connection'), double('logger')
|
92
|
-
Mongo::MongoClient.
|
92
|
+
expect(Mongo::MongoClient).to receive(:new).with('127.0.0.1', 27017, :logger => logger, :ssl => false)
|
93
93
|
MongoMapper.connect('development', :logger => logger)
|
94
94
|
end
|
95
95
|
|
@@ -98,7 +98,7 @@ describe "MongoMapper" do
|
|
98
98
|
'development' => {'host' => '127.0.0.1', 'port' => 27017, 'database' => 'test', 'options' => {'read' => 'primary'}}
|
99
99
|
}
|
100
100
|
connection, logger = double('connection'), double('logger')
|
101
|
-
Mongo::MongoClient.
|
101
|
+
expect(Mongo::MongoClient).to receive(:new).with('127.0.0.1', 27017, :logger => logger, :read => :primary)
|
102
102
|
MongoMapper.connect('development', :logger => logger)
|
103
103
|
end
|
104
104
|
|
@@ -107,7 +107,7 @@ describe "MongoMapper" do
|
|
107
107
|
'development' => {'host' => '192.168.1.1', 'port' => 2222, 'database' => 'test', 'options' => {'safe' => true}}
|
108
108
|
}
|
109
109
|
connection, logger = double('connection'), double('logger')
|
110
|
-
Mongo::MongoClient.
|
110
|
+
expect(Mongo::MongoClient).to receive(:new).with('192.168.1.1', 2222, :logger => logger, :safe => true)
|
111
111
|
MongoMapper.connect('development', :logger => logger)
|
112
112
|
end
|
113
113
|
|
@@ -116,7 +116,7 @@ describe "MongoMapper" do
|
|
116
116
|
'development' => {'uri' => 'mongodb://127.0.0.1:27017/test'}
|
117
117
|
}
|
118
118
|
connection, logger = double('connection'), double('logger')
|
119
|
-
Mongo::MongoClient.
|
119
|
+
expect(Mongo::MongoClient).to receive(:new).with('127.0.0.1', 27017, :logger => logger)
|
120
120
|
MongoMapper.connect('development', :logger => logger)
|
121
121
|
end
|
122
122
|
|
@@ -124,7 +124,7 @@ describe "MongoMapper" do
|
|
124
124
|
MongoMapper.config = {
|
125
125
|
'development' => {'host' => '127.0.0.1', 'port' => 27017, 'database' => 'test', 'username' => 'john', 'password' => 'secret'}
|
126
126
|
}
|
127
|
-
Mongo::DB.
|
127
|
+
expect_any_instance_of(Mongo::DB).to receive(:authenticate).with('john', 'secret')
|
128
128
|
MongoMapper.connect('development')
|
129
129
|
end
|
130
130
|
|
@@ -132,7 +132,7 @@ describe "MongoMapper" do
|
|
132
132
|
MongoMapper.config = {
|
133
133
|
'development' => {'uri' => 'mongodb://john:secret@127.0.0.1:27017/test'}
|
134
134
|
}
|
135
|
-
Mongo::DB.
|
135
|
+
expect_any_instance_of(Mongo::DB).to receive(:authenticate).with('john', 'secret')
|
136
136
|
MongoMapper.connect('development')
|
137
137
|
end
|
138
138
|
|
@@ -151,9 +151,9 @@ describe "MongoMapper" do
|
|
151
151
|
}
|
152
152
|
}
|
153
153
|
|
154
|
-
Mongo::MongoReplicaSetClient.
|
155
|
-
MongoMapper.
|
156
|
-
Mongo::DB.
|
154
|
+
expect(Mongo::MongoReplicaSetClient).to receive(:new).with( ['127.0.0.1', 27017], ['localhost', 27017], {'read_secondary' => true} )
|
155
|
+
expect(MongoMapper).to receive(:database=).with('test')
|
156
|
+
expect_any_instance_of(Mongo::DB).to receive(:authenticate).never
|
157
157
|
MongoMapper.connect('development', 'read_secondary' => true)
|
158
158
|
end
|
159
159
|
|
@@ -165,9 +165,9 @@ describe "MongoMapper" do
|
|
165
165
|
}
|
166
166
|
}
|
167
167
|
|
168
|
-
Mongo::MongoReplicaSetClient.
|
169
|
-
MongoMapper.
|
170
|
-
Mongo::DB.
|
168
|
+
expect(Mongo::MongoReplicaSetClient).to receive(:new).with( ['127.0.0.1:27017', 'localhost:27017'], {'read_secondary' => true} )
|
169
|
+
expect(MongoMapper).to receive(:database=).with('test')
|
170
|
+
expect_any_instance_of(Mongo::DB).to receive(:authenticate).never
|
171
171
|
MongoMapper.connect('development', 'read_secondary' => true)
|
172
172
|
end
|
173
173
|
end
|
@@ -175,9 +175,9 @@ describe "MongoMapper" do
|
|
175
175
|
context "setup" do
|
176
176
|
it "should work as shortcut for setting config, environment and options" do
|
177
177
|
config, logger = double('config'), double('logger')
|
178
|
-
MongoMapper.
|
179
|
-
MongoMapper.
|
180
|
-
MongoMapper.
|
178
|
+
expect(MongoMapper).to receive(:config=).with(config)
|
179
|
+
expect(MongoMapper).to receive(:connect).with('development', :logger => logger)
|
180
|
+
expect(MongoMapper).to receive(:handle_passenger_forking).once
|
181
181
|
MongoMapper.setup(config, 'development', :logger => logger)
|
182
182
|
end
|
183
183
|
end
|
data/spec/unit/rails_spec.rb
CHANGED
@@ -163,7 +163,7 @@ describe "Rails integration" do
|
|
163
163
|
|
164
164
|
it "should array representation of id if persisted" do
|
165
165
|
@klass.new.tap do |doc|
|
166
|
-
doc.
|
166
|
+
expect(doc).to receive(:persisted?).and_return(true)
|
167
167
|
doc.to_param.should == doc.id.to_s
|
168
168
|
end
|
169
169
|
end
|
@@ -178,7 +178,7 @@ describe "Rails integration" do
|
|
178
178
|
|
179
179
|
it "should array representation of id if persisted" do
|
180
180
|
@klass.new.tap do |doc|
|
181
|
-
doc.
|
181
|
+
expect(doc).to receive(:persisted?).and_return(true)
|
182
182
|
doc.to_key.should == [doc.id]
|
183
183
|
end
|
184
184
|
end
|
@@ -151,7 +151,7 @@ module Serialization
|
|
151
151
|
|
152
152
|
@instance.name.should == unserialized.name
|
153
153
|
@instance.age.should == unserialized.age
|
154
|
-
unserialized.awesome.should
|
154
|
+
unserialized.awesome.should be_falsey
|
155
155
|
unserialized.created_at.should be_nil
|
156
156
|
end
|
157
157
|
|
@@ -25,7 +25,7 @@ describe "TimeZones" do
|
|
25
25
|
Time.zone = 'UTC'
|
26
26
|
|
27
27
|
doc = @document.new(:created_at => "2009-08-15 14:00:00")
|
28
|
-
doc.created_at.is_a?(ActiveSupport::TimeWithZone).should
|
28
|
+
doc.created_at.is_a?(ActiveSupport::TimeWithZone).should be_truthy
|
29
29
|
doc.created_at.should == Time.utc(2009, 8, 15, 14)
|
30
30
|
|
31
31
|
Time.zone = nil
|
@@ -35,7 +35,7 @@ describe "TimeZones" do
|
|
35
35
|
Time.zone = 'Hawaii'
|
36
36
|
|
37
37
|
doc = @document.new(:created_at => "2009-08-15 14:00:00")
|
38
|
-
doc.created_at.is_a?(ActiveSupport::TimeWithZone).should
|
38
|
+
doc.created_at.is_a?(ActiveSupport::TimeWithZone).should be_truthy
|
39
39
|
doc.created_at.should == Time.utc(2009, 8, 16)
|
40
40
|
|
41
41
|
Time.zone = nil
|
@@ -27,7 +27,7 @@ describe "Validations" do
|
|
27
27
|
doc = @document.new
|
28
28
|
doc.password = 'foobar'
|
29
29
|
doc.password_confirmation = 'foobar1'
|
30
|
-
doc.should have_error_on(:
|
30
|
+
doc.should have_error_on(:password).or(have_error_on(:password_confirmation))
|
31
31
|
|
32
32
|
doc.password_confirmation = 'foobar'
|
33
33
|
doc.should_not have_error_on(:password)
|
@@ -190,7 +190,8 @@ describe "Validations" do
|
|
190
190
|
doc.should_not have_error_on(:action)
|
191
191
|
|
192
192
|
doc.action = 'kick'
|
193
|
-
doc.should have_error_on(:action
|
193
|
+
doc.should have_error_on(:action)
|
194
|
+
doc.errors[:action].should == ['is reserved']
|
194
195
|
end
|
195
196
|
|
196
197
|
it "should work with :not_in shortcut on key definition" do
|
@@ -203,7 +204,8 @@ describe "Validations" do
|
|
203
204
|
doc.should_not have_error_on(:action)
|
204
205
|
|
205
206
|
doc.action = 'kick'
|
206
|
-
doc.should have_error_on(:action
|
207
|
+
doc.should have_error_on(:action)
|
208
|
+
doc.errors[:action].should == ['is reserved']
|
207
209
|
end
|
208
210
|
|
209
211
|
it "should not have error if allow nil is true and value is nil" do
|
@@ -236,10 +238,12 @@ describe "Validations" do
|
|
236
238
|
@document.validates_inclusion_of :action, :in => %w(kick run)
|
237
239
|
|
238
240
|
doc = @document.new
|
239
|
-
doc.should have_error_on(:action
|
241
|
+
doc.should have_error_on(:action)
|
242
|
+
doc.errors[:action].should == ['is not included in the list']
|
240
243
|
|
241
244
|
doc.action = 'fart'
|
242
|
-
doc.should have_error_on(:action
|
245
|
+
doc.should have_error_on(:action)
|
246
|
+
doc.errors[:action].should == ['is not included in the list']
|
243
247
|
|
244
248
|
doc.action = 'kick'
|
245
249
|
doc.should_not have_error_on(:action)
|
@@ -249,10 +253,12 @@ describe "Validations" do
|
|
249
253
|
@document.key :action, String, :in => %w(kick run)
|
250
254
|
|
251
255
|
doc = @document.new
|
252
|
-
doc.should have_error_on(:action
|
256
|
+
doc.should have_error_on(:action)
|
257
|
+
doc.errors[:action].should == ['is not included in the list']
|
253
258
|
|
254
259
|
doc.action = 'fart'
|
255
|
-
doc.should have_error_on(:action
|
260
|
+
doc.should have_error_on(:action)
|
261
|
+
doc.errors[:action].should == ['is not included in the list']
|
256
262
|
|
257
263
|
doc.action = 'kick'
|
258
264
|
doc.should_not have_error_on(:action)
|
@@ -262,7 +268,8 @@ describe "Validations" do
|
|
262
268
|
@document.key :flag, Boolean, :required => true
|
263
269
|
|
264
270
|
doc = @document.new
|
265
|
-
doc.should have_error_on(:flag
|
271
|
+
doc.should have_error_on(:flag)
|
272
|
+
doc.errors[:flag].should == ['is not included in the list']
|
266
273
|
|
267
274
|
doc.flag = true
|
268
275
|
doc.should_not have_error_on(:action)
|
@@ -313,7 +320,7 @@ describe "Validations" do
|
|
313
320
|
doc = @embedded_doc.new
|
314
321
|
doc.password = 'foobar'
|
315
322
|
doc.password_confirmation = 'foobar1'
|
316
|
-
doc.should have_error_on(:password).or(:password_confirmation)
|
323
|
+
doc.should have_error_on(:password).or(have_error_on(:password_confirmation))
|
317
324
|
doc.password_confirmation = 'foobar'
|
318
325
|
doc.should_not have_error_on(:password)
|
319
326
|
end
|
@@ -462,7 +469,8 @@ describe "Validations" do
|
|
462
469
|
doc.should_not have_error_on(:action)
|
463
470
|
|
464
471
|
doc.action = 'kick'
|
465
|
-
doc.should have_error_on(:action
|
472
|
+
doc.should have_error_on(:action)
|
473
|
+
doc.errors[:action].should == ['is reserved']
|
466
474
|
end
|
467
475
|
|
468
476
|
it "should work with :not_in shortcut on key definition" do
|
@@ -475,7 +483,8 @@ describe "Validations" do
|
|
475
483
|
doc.should_not have_error_on(:action)
|
476
484
|
|
477
485
|
doc.action = 'kick'
|
478
|
-
doc.should have_error_on(:action
|
486
|
+
doc.should have_error_on(:action)
|
487
|
+
doc.errors[:action].should == ['is reserved']
|
479
488
|
end
|
480
489
|
|
481
490
|
it "should not have error if allow nil is true and value is nil" do
|
@@ -508,10 +517,12 @@ describe "Validations" do
|
|
508
517
|
@embedded_doc.validates_inclusion_of :action, :in => %w(kick run)
|
509
518
|
|
510
519
|
doc = @embedded_doc.new
|
511
|
-
doc.should have_error_on(:action
|
520
|
+
doc.should have_error_on(:action)
|
521
|
+
doc.errors[:action].should == ['is not included in the list']
|
512
522
|
|
513
523
|
doc.action = 'fart'
|
514
|
-
doc.should have_error_on(:action
|
524
|
+
doc.should have_error_on(:action)
|
525
|
+
doc.errors[:action].should == ['is not included in the list']
|
515
526
|
|
516
527
|
doc.action = 'kick'
|
517
528
|
doc.should_not have_error_on(:action)
|
@@ -521,10 +532,12 @@ describe "Validations" do
|
|
521
532
|
@embedded_doc.key :action, String, :in => %w(kick run)
|
522
533
|
|
523
534
|
doc = @embedded_doc.new
|
524
|
-
doc.should have_error_on(:action
|
535
|
+
doc.should have_error_on(:action)
|
536
|
+
doc.errors[:action].should == ['is not included in the list']
|
525
537
|
|
526
538
|
doc.action = 'fart'
|
527
|
-
doc.should have_error_on(:action
|
539
|
+
doc.should have_error_on(:action)
|
540
|
+
doc.errors[:action].should == ['is not included in the list']
|
528
541
|
|
529
542
|
doc.action = 'kick'
|
530
543
|
doc.should_not have_error_on(:action)
|