mongo_mapper 0.12.0 → 0.13.0.beta1
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 +7 -0
- data/README.rdoc +35 -13
- data/bin/mmconsole +1 -1
- data/lib/mongo_mapper.rb +4 -0
- data/lib/mongo_mapper/connection.rb +17 -6
- data/lib/mongo_mapper/document.rb +1 -0
- data/lib/mongo_mapper/exceptions.rb +4 -1
- data/lib/mongo_mapper/extensions/binary.rb +1 -1
- data/lib/mongo_mapper/extensions/boolean.rb +20 -23
- data/lib/mongo_mapper/extensions/date.rb +3 -3
- data/lib/mongo_mapper/extensions/integer.rb +5 -1
- data/lib/mongo_mapper/extensions/kernel.rb +2 -0
- data/lib/mongo_mapper/extensions/ordered_hash.rb +23 -0
- data/lib/mongo_mapper/extensions/string.rb +2 -2
- data/lib/mongo_mapper/extensions/time.rb +7 -5
- data/lib/mongo_mapper/middleware/identity_map.rb +3 -4
- data/lib/mongo_mapper/plugins.rb +1 -1
- data/lib/mongo_mapper/plugins/associations.rb +11 -5
- data/lib/mongo_mapper/plugins/associations/base.rb +5 -3
- data/lib/mongo_mapper/plugins/associations/belongs_to_polymorphic_proxy.rb +0 -0
- data/lib/mongo_mapper/plugins/associations/belongs_to_proxy.rb +8 -8
- data/lib/mongo_mapper/plugins/associations/collection.rb +2 -0
- data/lib/mongo_mapper/plugins/associations/many_documents_proxy.rb +32 -7
- data/lib/mongo_mapper/plugins/associations/many_embedded_proxy.rb +2 -2
- data/lib/mongo_mapper/plugins/associations/one_proxy.rb +12 -12
- data/lib/mongo_mapper/plugins/associations/proxy.rb +5 -1
- data/lib/mongo_mapper/plugins/associations/single_association.rb +6 -6
- data/lib/mongo_mapper/plugins/clone.rb +4 -2
- data/lib/mongo_mapper/plugins/dirty.rb +22 -21
- data/lib/mongo_mapper/plugins/document.rb +4 -4
- data/lib/mongo_mapper/plugins/dumpable.rb +22 -0
- data/lib/mongo_mapper/plugins/embedded_callbacks.rb +58 -9
- data/lib/mongo_mapper/plugins/identity_map.rb +42 -32
- data/lib/mongo_mapper/plugins/keys.rb +133 -54
- data/lib/mongo_mapper/plugins/keys/key.rb +68 -22
- data/lib/mongo_mapper/plugins/modifiers.rb +26 -19
- data/lib/mongo_mapper/plugins/persistence.rb +15 -5
- data/lib/mongo_mapper/plugins/querying.rb +15 -40
- data/lib/mongo_mapper/plugins/querying/{decorator.rb → decorated_plucky_query.rb} +24 -4
- data/lib/mongo_mapper/plugins/rails.rb +22 -2
- data/lib/mongo_mapper/plugins/safe.rb +8 -5
- data/lib/mongo_mapper/plugins/sci.rb +26 -4
- data/lib/mongo_mapper/plugins/scopes.rb +5 -4
- data/lib/mongo_mapper/plugins/timestamps.rb +11 -4
- data/lib/mongo_mapper/plugins/validations.rb +1 -1
- data/lib/mongo_mapper/utils.rb +12 -0
- data/lib/mongo_mapper/version.rb +1 -1
- data/lib/rails/generators/mongo_mapper/config/config_generator.rb +20 -7
- data/lib/rails/generators/mongo_mapper/config/templates/mongo.yml +6 -0
- data/lib/rails/generators/mongo_mapper/model/model_generator.rb +18 -1
- data/lib/rails/generators/mongo_mapper/model/templates/model.rb +9 -5
- data/{test/functional/test_accessible.rb → spec/functional/accessible_spec.rb} +29 -29
- data/{test/functional/associations/test_belongs_to_polymorphic_proxy.rb → spec/functional/associations/belongs_to_polymorphic_proxy_spec.rb} +10 -10
- data/{test/functional/associations/test_belongs_to_proxy.rb → spec/functional/associations/belongs_to_proxy_spec.rb} +82 -64
- data/{test/functional/associations/test_in_array_proxy.rb → spec/functional/associations/in_array_proxy_spec.rb} +68 -68
- data/{test/functional/associations/test_many_documents_as_proxy.rb → spec/functional/associations/many_documents_as_proxy_spec.rb} +37 -38
- data/{test/functional/associations/test_many_documents_proxy.rb → spec/functional/associations/many_documents_proxy_spec.rb} +233 -146
- data/{test/functional/associations/test_many_embedded_polymorphic_proxy.rb → spec/functional/associations/many_embedded_polymorphic_proxy_spec.rb} +19 -20
- data/{test/functional/associations/test_many_embedded_proxy.rb → spec/functional/associations/many_embedded_proxy_spec.rb} +23 -24
- data/{test/functional/associations/test_many_polymorphic_proxy.rb → spec/functional/associations/many_polymorphic_proxy_spec.rb} +45 -46
- data/{test/functional/associations/test_one_as_proxy.rb → spec/functional/associations/one_as_proxy_spec.rb} +75 -77
- data/{test/functional/associations/test_one_embedded_polymorphic_proxy.rb → spec/functional/associations/one_embedded_polymorphic_proxy_spec.rb} +31 -32
- data/{test/functional/associations/test_one_embedded_proxy.rb → spec/functional/associations/one_embedded_proxy_spec.rb} +10 -10
- data/{test/functional/associations/test_one_proxy.rb → spec/functional/associations/one_proxy_spec.rb} +125 -102
- data/spec/functional/associations_spec.rb +48 -0
- data/{test/functional/test_binary.rb → spec/functional/binary_spec.rb} +6 -6
- data/spec/functional/caching_spec.rb +75 -0
- data/{test/functional/test_callbacks.rb → spec/functional/callbacks_spec.rb} +84 -26
- data/{test/functional/test_dirty.rb → spec/functional/dirty_spec.rb} +57 -42
- data/{test/functional/test_document.rb → spec/functional/document_spec.rb} +52 -52
- data/spec/functional/dumpable_spec.rb +24 -0
- data/{test/functional/test_dynamic_querying.rb → spec/functional/dynamic_querying_spec.rb} +14 -14
- data/{test/functional/test_embedded_document.rb → spec/functional/embedded_document_spec.rb} +51 -42
- data/{test/functional/test_equality.rb → spec/functional/equality_spec.rb} +4 -4
- data/spec/functional/extensions_spec.rb +16 -0
- data/{test/functional/test_identity_map.rb → spec/functional/identity_map_spec.rb} +73 -61
- data/spec/functional/indexes_spec.rb +48 -0
- data/spec/functional/keys_spec.rb +224 -0
- data/{test/functional/test_logger.rb → spec/functional/logger_spec.rb} +6 -6
- data/spec/functional/modifiers_spec.rb +550 -0
- data/spec/functional/pagination_spec.rb +89 -0
- data/spec/functional/protected_spec.rb +199 -0
- data/spec/functional/querying_spec.rb +1003 -0
- data/spec/functional/rails_spec.rb +55 -0
- data/spec/functional/safe_spec.rb +163 -0
- data/{test/functional/test_sci.rb → spec/functional/sci_spec.rb} +123 -34
- data/{test/functional/test_scopes.rb → spec/functional/scopes_spec.rb} +59 -26
- data/spec/functional/timestamps_spec.rb +97 -0
- data/{test/functional/test_touch.rb → spec/functional/touch_spec.rb} +13 -13
- data/spec/functional/userstamps_spec.rb +46 -0
- data/{test/functional/test_validations.rb → spec/functional/validations_spec.rb} +64 -64
- data/spec/spec_helper.rb +81 -0
- data/spec/support/matchers.rb +24 -0
- data/{test → spec/support}/models.rb +1 -6
- data/spec/unit/associations/base_spec.rb +146 -0
- data/spec/unit/associations/belongs_to_association_spec.rb +30 -0
- data/spec/unit/associations/many_association_spec.rb +64 -0
- data/spec/unit/associations/one_association_spec.rb +48 -0
- data/{test/unit/associations/test_proxy.rb → spec/unit/associations/proxy_spec.rb} +21 -21
- data/{test/unit/test_clone.rb → spec/unit/clone_spec.rb} +21 -11
- data/spec/unit/config_generator_spec.rb +24 -0
- data/{test/unit/test_document.rb → spec/unit/document_spec.rb} +42 -42
- data/{test/unit/test_dynamic_finder.rb → spec/unit/dynamic_finder_spec.rb} +28 -28
- data/{test/unit/test_embedded_document.rb → spec/unit/embedded_document_spec.rb} +102 -108
- data/{test/unit/test_equality.rb → spec/unit/equality_spec.rb} +7 -7
- data/{test/unit/test_exceptions.rb → spec/unit/exceptions_spec.rb} +3 -3
- data/{test/unit/test_extensions.rb → spec/unit/extensions_spec.rb} +85 -71
- data/spec/unit/identity_map_middleware_spec.rb +134 -0
- data/{test/unit/test_inspect.rb → spec/unit/inspect_spec.rb} +8 -8
- data/{test/unit/test_key.rb → spec/unit/key_spec.rb} +82 -52
- data/spec/unit/keys_spec.rb +155 -0
- data/spec/unit/model_generator_spec.rb +47 -0
- data/spec/unit/mongo_mapper_spec.rb +184 -0
- data/spec/unit/pagination_spec.rb +11 -0
- data/{test/unit/test_plugins.rb → spec/unit/plugins_spec.rb} +14 -14
- data/spec/unit/rails_compatibility_spec.rb +40 -0
- data/{test/unit/test_rails_reflect_on_association.rb → spec/unit/rails_reflect_on_association_spec.rb} +9 -9
- data/{test/unit/test_rails.rb → spec/unit/rails_spec.rb} +31 -31
- data/spec/unit/serialization_spec.rb +169 -0
- data/spec/unit/serializers/json_serializer_spec.rb +218 -0
- data/spec/unit/serializers/xml_serializer_spec.rb +198 -0
- data/{test/unit/test_time_zones.rb → spec/unit/time_zones_spec.rb} +8 -8
- data/{test/unit/test_translation.rb → spec/unit/translation_spec.rb} +6 -6
- data/{test/unit/test_validations.rb → spec/unit/validations_spec.rb} +72 -59
- metadata +199 -179
- data/test/_NOTE_ON_TESTING +0 -1
- data/test/functional/test_associations.rb +0 -46
- data/test/functional/test_caching.rb +0 -77
- data/test/functional/test_indexes.rb +0 -50
- data/test/functional/test_modifiers.rb +0 -537
- data/test/functional/test_pagination.rb +0 -91
- data/test/functional/test_protected.rb +0 -201
- data/test/functional/test_querying.rb +0 -935
- data/test/functional/test_safe.rb +0 -76
- data/test/functional/test_timestamps.rb +0 -62
- data/test/functional/test_userstamps.rb +0 -44
- data/test/support/railtie.rb +0 -4
- data/test/support/railtie/autoloaded.rb +0 -2
- data/test/support/railtie/not_autoloaded.rb +0 -3
- data/test/support/railtie/parent.rb +0 -3
- data/test/test_active_model_lint.rb +0 -18
- data/test/test_helper.rb +0 -93
- data/test/unit/associations/test_base.rb +0 -146
- data/test/unit/associations/test_belongs_to_association.rb +0 -29
- data/test/unit/associations/test_many_association.rb +0 -63
- data/test/unit/associations/test_one_association.rb +0 -47
- data/test/unit/serializers/test_json_serializer.rb +0 -216
- data/test/unit/serializers/test_xml_serializer.rb +0 -196
- data/test/unit/test_identity_map_middleware.rb +0 -132
- data/test/unit/test_keys.rb +0 -65
- data/test/unit/test_mongo_mapper.rb +0 -157
- data/test/unit/test_pagination.rb +0 -11
- data/test/unit/test_rails_compatibility.rb +0 -38
- data/test/unit/test_serialization.rb +0 -166
@@ -1,15 +1,15 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
|
-
|
4
|
-
should
|
3
|
+
describe "Translation" do
|
4
|
+
it "should translate add mongo_mapper translations" do
|
5
5
|
I18n.translate("mongo_mapper.errors.messages.taken").should == "has already been taken"
|
6
6
|
end
|
7
7
|
|
8
|
-
should
|
8
|
+
it "should set i18n_scope" do
|
9
9
|
Doc().i18n_scope.should == :mongo_mapper
|
10
10
|
end
|
11
11
|
|
12
|
-
should
|
12
|
+
it "should translate document attributes" do
|
13
13
|
I18n.config.backend.store_translations(:en, :mongo_mapper => {:attributes => {:thing => {:foo => 'Bar'}}})
|
14
14
|
doc = Doc('Thing') do
|
15
15
|
key :foo, String
|
@@ -17,7 +17,7 @@ class TranslationTest < Test::Unit::TestCase
|
|
17
17
|
doc.human_attribute_name(:foo).should == 'Bar'
|
18
18
|
end
|
19
19
|
|
20
|
-
should
|
20
|
+
it "should translate embedded document attributes" do
|
21
21
|
I18n.config.backend.store_translations(:en, :mongo_mapper => {:attributes => {:thing => {:foo => 'Bar'}}})
|
22
22
|
doc = EDoc('Thing') do
|
23
23
|
key :foo, String
|
@@ -1,14 +1,14 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
|
-
|
3
|
+
describe "Validations" do
|
4
4
|
context "Validations" do
|
5
5
|
context "on a Document" do
|
6
|
-
|
6
|
+
before do
|
7
7
|
@document = Doc('John')
|
8
8
|
end
|
9
9
|
|
10
10
|
context "Validating acceptance of" do
|
11
|
-
should
|
11
|
+
it "should work with validates_acceptance_of macro" do
|
12
12
|
@document.key :terms, String
|
13
13
|
@document.validates_acceptance_of :terms
|
14
14
|
doc = @document.new(:terms => '')
|
@@ -19,7 +19,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
19
19
|
end
|
20
20
|
|
21
21
|
context "validating confirmation of" do
|
22
|
-
should
|
22
|
+
it "should work with validates_confirmation_of macro" do
|
23
23
|
@document.key :password, String
|
24
24
|
@document.validates_confirmation_of :password
|
25
25
|
|
@@ -27,15 +27,28 @@ class ValidationsTest < Test::Unit::TestCase
|
|
27
27
|
doc = @document.new
|
28
28
|
doc.password = 'foobar'
|
29
29
|
doc.password_confirmation = 'foobar1'
|
30
|
-
doc.should have_error_on(:password)
|
30
|
+
doc.should have_error_on(:password_confirmation).or(:password)
|
31
31
|
|
32
32
|
doc.password_confirmation = 'foobar'
|
33
33
|
doc.should_not have_error_on(:password)
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
+
context "validating uniqueness of" do
|
38
|
+
it "should work with :unique => true passed to ::key" do
|
39
|
+
@document.key :email, String, :unique => true
|
40
|
+
|
41
|
+
@document.create(:email => "cheald@gmail.com")
|
42
|
+
doc = @document.new :email => "cheald@gmail.com"
|
43
|
+
doc.should_not be_valid
|
44
|
+
doc.should have_error_on(:email)
|
45
|
+
doc.email = "cheald@mashable.com"
|
46
|
+
doc.should be_valid
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
37
50
|
context "validating format of" do
|
38
|
-
should
|
51
|
+
it "should work with validates_format_of macro" do
|
39
52
|
@document.key :name, String
|
40
53
|
@document.validates_format_of :name, :with => /.+/
|
41
54
|
doc = @document.new
|
@@ -44,7 +57,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
44
57
|
doc.should_not have_error_on(:name)
|
45
58
|
end
|
46
59
|
|
47
|
-
should
|
60
|
+
it "should work with :format shorcut key" do
|
48
61
|
@document.key :name, String, :format => /.+/
|
49
62
|
doc = @document.new
|
50
63
|
doc.should have_error_on(:name)
|
@@ -54,7 +67,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
54
67
|
end
|
55
68
|
|
56
69
|
context "validating length of" do
|
57
|
-
should
|
70
|
+
it "should work with validates_length_of macro" do
|
58
71
|
@document.key :name, String
|
59
72
|
@document.validates_length_of :name, :minimum => 5
|
60
73
|
doc = @document.new
|
@@ -62,7 +75,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
62
75
|
end
|
63
76
|
|
64
77
|
context "with :length => integer shortcut" do
|
65
|
-
should
|
78
|
+
it "should set maximum of integer provided" do
|
66
79
|
@document.key :name, String, :length => 5
|
67
80
|
doc = @document.new
|
68
81
|
doc.name = '123456'
|
@@ -73,18 +86,18 @@ class ValidationsTest < Test::Unit::TestCase
|
|
73
86
|
end
|
74
87
|
|
75
88
|
context "with :length => range shortcut" do
|
76
|
-
|
89
|
+
before do
|
77
90
|
@document.key :name, String, :length => 5..7
|
78
91
|
end
|
79
92
|
|
80
|
-
should
|
93
|
+
it "should set minimum of range min" do
|
81
94
|
doc = @document.new
|
82
95
|
doc.should have_error_on(:name)
|
83
96
|
doc.name = '123456'
|
84
97
|
doc.should_not have_error_on(:name)
|
85
98
|
end
|
86
99
|
|
87
|
-
should
|
100
|
+
it "should set maximum of range max" do
|
88
101
|
doc = @document.new
|
89
102
|
doc.should have_error_on(:name)
|
90
103
|
doc.name = '12345678'
|
@@ -95,7 +108,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
95
108
|
end
|
96
109
|
|
97
110
|
context "with :length => hash shortcut" do
|
98
|
-
should
|
111
|
+
it "should pass options through" do
|
99
112
|
@document.key :name, String, :length => {:minimum => 2}
|
100
113
|
doc = @document.new
|
101
114
|
doc.should have_error_on(:name)
|
@@ -106,7 +119,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
106
119
|
end # validates_length_of
|
107
120
|
|
108
121
|
context "Validating numericality of" do
|
109
|
-
should
|
122
|
+
it "should work with validates_numericality_of macro" do
|
110
123
|
@document.key :age, Integer
|
111
124
|
@document.validates_numericality_of :age
|
112
125
|
doc = @document.new
|
@@ -117,7 +130,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
117
130
|
end
|
118
131
|
|
119
132
|
context "with :numeric shortcut" do
|
120
|
-
should
|
133
|
+
it "should work with integer or float" do
|
121
134
|
@document.key :weight, Float, :numeric => true
|
122
135
|
doc = @document.new
|
123
136
|
doc.weight = 'String'
|
@@ -130,7 +143,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
130
143
|
end
|
131
144
|
|
132
145
|
context "with :numeric shortcut on Integer key" do
|
133
|
-
should
|
146
|
+
it "should only work with integers" do
|
134
147
|
@document.key :age, Integer, :numeric => true
|
135
148
|
doc = @document.new
|
136
149
|
doc.age = 'String'
|
@@ -144,14 +157,14 @@ class ValidationsTest < Test::Unit::TestCase
|
|
144
157
|
end # numericality of
|
145
158
|
|
146
159
|
context "validating presence of" do
|
147
|
-
should
|
160
|
+
it "should work with validates_presence_of macro" do
|
148
161
|
@document.key :name, String
|
149
162
|
@document.validates_presence_of :name
|
150
163
|
doc = @document.new
|
151
164
|
doc.should have_error_on(:name)
|
152
165
|
end
|
153
166
|
|
154
|
-
should
|
167
|
+
it "should work with :required shortcut on key definition" do
|
155
168
|
@document.key :name, String, :required => true
|
156
169
|
doc = @document.new
|
157
170
|
doc.should have_error_on(:name)
|
@@ -159,14 +172,14 @@ class ValidationsTest < Test::Unit::TestCase
|
|
159
172
|
end
|
160
173
|
|
161
174
|
context "validating exclusion of" do
|
162
|
-
should
|
175
|
+
it "should throw error if enumerator not provided" do
|
163
176
|
@document.key :action, String
|
164
177
|
lambda {
|
165
178
|
@document.validates_exclusion_of :action
|
166
179
|
}.should raise_error(ArgumentError)
|
167
180
|
end
|
168
181
|
|
169
|
-
should
|
182
|
+
it "should work with validates_exclusion_of macro" do
|
170
183
|
@document.key :action, String
|
171
184
|
@document.validates_exclusion_of :action, :in => %w(kick run)
|
172
185
|
|
@@ -180,7 +193,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
180
193
|
doc.should have_error_on(:action, 'is reserved')
|
181
194
|
end
|
182
195
|
|
183
|
-
should
|
196
|
+
it "should work with :not_in shortcut on key definition" do
|
184
197
|
@document.key :action, String, :not_in => %w(kick run)
|
185
198
|
|
186
199
|
doc = @document.new
|
@@ -193,7 +206,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
193
206
|
doc.should have_error_on(:action, 'is reserved')
|
194
207
|
end
|
195
208
|
|
196
|
-
should
|
209
|
+
it "should not have error if allow nil is true and value is nil" do
|
197
210
|
@document.key :action, String
|
198
211
|
@document.validates_exclusion_of :action, :in => %w(kick run), :allow_nil => true
|
199
212
|
|
@@ -201,7 +214,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
201
214
|
doc.should_not have_error_on(:action)
|
202
215
|
end
|
203
216
|
|
204
|
-
should
|
217
|
+
it "should not have error if allow blank is true and value is blank" do
|
205
218
|
@document.key :action, String
|
206
219
|
@document.validates_exclusion_of :action, :in => %w(kick run), :allow_nil => true
|
207
220
|
|
@@ -211,14 +224,14 @@ class ValidationsTest < Test::Unit::TestCase
|
|
211
224
|
end
|
212
225
|
|
213
226
|
context "validating inclusion of" do
|
214
|
-
should
|
227
|
+
it "should throw error if enumerator not provided" do
|
215
228
|
@document.key :action, String
|
216
229
|
lambda {
|
217
230
|
@document.validates_inclusion_of :action
|
218
231
|
}.should raise_error(ArgumentError)
|
219
232
|
end
|
220
233
|
|
221
|
-
should
|
234
|
+
it "should work with validates_inclusion_of macro" do
|
222
235
|
@document.key :action, String
|
223
236
|
@document.validates_inclusion_of :action, :in => %w(kick run)
|
224
237
|
|
@@ -232,7 +245,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
232
245
|
doc.should_not have_error_on(:action)
|
233
246
|
end
|
234
247
|
|
235
|
-
should
|
248
|
+
it "should work with :in shortcut on key definition" do
|
236
249
|
@document.key :action, String, :in => %w(kick run)
|
237
250
|
|
238
251
|
doc = @document.new
|
@@ -245,7 +258,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
245
258
|
doc.should_not have_error_on(:action)
|
246
259
|
end
|
247
260
|
|
248
|
-
should
|
261
|
+
it "should work with :required shortcut on Boolean type" do
|
249
262
|
@document.key :flag, Boolean, :required => true
|
250
263
|
|
251
264
|
doc = @document.new
|
@@ -258,7 +271,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
258
271
|
doc.should_not have_error_on(:action)
|
259
272
|
end
|
260
273
|
|
261
|
-
should
|
274
|
+
it "should not have error if allow nil is true and value is nil" do
|
262
275
|
@document.key :action, String
|
263
276
|
@document.validates_inclusion_of :action, :in => %w(kick run), :allow_nil => true
|
264
277
|
|
@@ -266,7 +279,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
266
279
|
doc.should_not have_error_on(:action)
|
267
280
|
end
|
268
281
|
|
269
|
-
should
|
282
|
+
it "should not have error if allow blank is true and value is blank" do
|
270
283
|
@document.key :action, String
|
271
284
|
@document.validates_inclusion_of :action, :in => %w(kick run), :allow_blank => true
|
272
285
|
|
@@ -278,12 +291,12 @@ class ValidationsTest < Test::Unit::TestCase
|
|
278
291
|
end # End on a Document
|
279
292
|
|
280
293
|
context "On an EmbeddedDocument" do
|
281
|
-
|
294
|
+
before do
|
282
295
|
@embedded_doc = EDoc()
|
283
296
|
end
|
284
297
|
|
285
298
|
context "Validating acceptance of" do
|
286
|
-
should
|
299
|
+
it "should work with validates_acceptance_of macro" do
|
287
300
|
@embedded_doc.key :terms, String
|
288
301
|
@embedded_doc.validates_acceptance_of :terms
|
289
302
|
doc = @embedded_doc.new(:terms => '')
|
@@ -294,20 +307,20 @@ class ValidationsTest < Test::Unit::TestCase
|
|
294
307
|
end
|
295
308
|
|
296
309
|
context "validating confirmation of" do
|
297
|
-
should
|
310
|
+
it "should work with validates_confirmation_of macro" do
|
298
311
|
@embedded_doc.key :password, String
|
299
312
|
@embedded_doc.validates_confirmation_of :password
|
300
313
|
doc = @embedded_doc.new
|
301
314
|
doc.password = 'foobar'
|
302
315
|
doc.password_confirmation = 'foobar1'
|
303
|
-
doc.should have_error_on(:password)
|
316
|
+
doc.should have_error_on(:password).or(:password_confirmation)
|
304
317
|
doc.password_confirmation = 'foobar'
|
305
318
|
doc.should_not have_error_on(:password)
|
306
319
|
end
|
307
320
|
end
|
308
321
|
|
309
322
|
context "validating format of" do
|
310
|
-
should
|
323
|
+
it "should work with validates_format_of macro" do
|
311
324
|
@embedded_doc.key :name, String
|
312
325
|
@embedded_doc.validates_format_of :name, :with => /.+/
|
313
326
|
doc = @embedded_doc.new
|
@@ -316,7 +329,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
316
329
|
doc.should_not have_error_on(:name)
|
317
330
|
end
|
318
331
|
|
319
|
-
should
|
332
|
+
it "should work with :format shorcut key" do
|
320
333
|
@embedded_doc.key :name, String, :format => /.+/
|
321
334
|
doc = @embedded_doc.new
|
322
335
|
doc.should have_error_on(:name)
|
@@ -326,7 +339,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
326
339
|
end
|
327
340
|
|
328
341
|
context "validating length of" do
|
329
|
-
should
|
342
|
+
it "should work with validates_length_of macro" do
|
330
343
|
@embedded_doc.key :name, String
|
331
344
|
@embedded_doc.validates_length_of :name, :minimum => 5
|
332
345
|
doc = @embedded_doc.new
|
@@ -334,7 +347,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
334
347
|
end
|
335
348
|
|
336
349
|
context "with :length => integer shortcut" do
|
337
|
-
should
|
350
|
+
it "should set maximum of integer provided" do
|
338
351
|
@embedded_doc.key :name, String, :length => 5
|
339
352
|
doc = @embedded_doc.new
|
340
353
|
doc.name = '123456'
|
@@ -345,18 +358,18 @@ class ValidationsTest < Test::Unit::TestCase
|
|
345
358
|
end
|
346
359
|
|
347
360
|
context "with :length => range shortcut" do
|
348
|
-
|
361
|
+
before do
|
349
362
|
@embedded_doc.key :name, String, :length => 5..7
|
350
363
|
end
|
351
364
|
|
352
|
-
should
|
365
|
+
it "should set minimum of range min" do
|
353
366
|
doc = @embedded_doc.new
|
354
367
|
doc.should have_error_on(:name)
|
355
368
|
doc.name = '123456'
|
356
369
|
doc.should_not have_error_on(:name)
|
357
370
|
end
|
358
371
|
|
359
|
-
should
|
372
|
+
it "should set maximum of range max" do
|
360
373
|
doc = @embedded_doc.new
|
361
374
|
doc.should have_error_on(:name)
|
362
375
|
doc.name = '12345678'
|
@@ -367,7 +380,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
367
380
|
end
|
368
381
|
|
369
382
|
context "with :length => hash shortcut" do
|
370
|
-
should
|
383
|
+
it "should pass options through" do
|
371
384
|
@embedded_doc.key :name, String, :length => {:minimum => 2}
|
372
385
|
doc = @embedded_doc.new
|
373
386
|
doc.should have_error_on(:name)
|
@@ -378,7 +391,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
378
391
|
end # validates_length_of
|
379
392
|
|
380
393
|
context "Validating numericality of" do
|
381
|
-
should
|
394
|
+
it "should work with validates_numericality_of macro" do
|
382
395
|
@embedded_doc.key :age, Integer
|
383
396
|
@embedded_doc.validates_numericality_of :age
|
384
397
|
doc = @embedded_doc.new
|
@@ -389,7 +402,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
389
402
|
end
|
390
403
|
|
391
404
|
context "with :numeric shortcut" do
|
392
|
-
should
|
405
|
+
it "should work with integer or float" do
|
393
406
|
@embedded_doc.key :weight, Float, :numeric => true
|
394
407
|
doc = @embedded_doc.new
|
395
408
|
doc.weight = 'String'
|
@@ -402,7 +415,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
402
415
|
end
|
403
416
|
|
404
417
|
context "with :numeric shortcut on Integer key" do
|
405
|
-
should
|
418
|
+
it "should only work with integers" do
|
406
419
|
@embedded_doc.key :age, Integer, :numeric => true
|
407
420
|
doc = @embedded_doc.new
|
408
421
|
doc.age = 'String'
|
@@ -416,14 +429,14 @@ class ValidationsTest < Test::Unit::TestCase
|
|
416
429
|
end # numericality of
|
417
430
|
|
418
431
|
context "validating presence of" do
|
419
|
-
should
|
432
|
+
it "should work with validates_presence_of macro" do
|
420
433
|
@embedded_doc.key :name, String
|
421
434
|
@embedded_doc.validates_presence_of :name
|
422
435
|
doc = @embedded_doc.new
|
423
436
|
doc.should have_error_on(:name)
|
424
437
|
end
|
425
438
|
|
426
|
-
should
|
439
|
+
it "should work with :required shortcut on key definition" do
|
427
440
|
@embedded_doc.key :name, String, :required => true
|
428
441
|
doc = @embedded_doc.new
|
429
442
|
doc.should have_error_on(:name)
|
@@ -431,14 +444,14 @@ class ValidationsTest < Test::Unit::TestCase
|
|
431
444
|
end
|
432
445
|
|
433
446
|
context "validating exclusion of" do
|
434
|
-
should
|
447
|
+
it "should throw error if enumerator not provided" do
|
435
448
|
@embedded_doc.key :action, String
|
436
449
|
lambda {
|
437
450
|
@embedded_doc.validates_exclusion_of :action
|
438
451
|
}.should raise_error(ArgumentError)
|
439
452
|
end
|
440
453
|
|
441
|
-
should
|
454
|
+
it "should work with validates_exclusion_of macro" do
|
442
455
|
@embedded_doc.key :action, String
|
443
456
|
@embedded_doc.validates_exclusion_of :action, :in => %w(kick run)
|
444
457
|
|
@@ -452,7 +465,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
452
465
|
doc.should have_error_on(:action, 'is reserved')
|
453
466
|
end
|
454
467
|
|
455
|
-
should
|
468
|
+
it "should work with :not_in shortcut on key definition" do
|
456
469
|
@embedded_doc.key :action, String, :not_in => %w(kick run)
|
457
470
|
|
458
471
|
doc = @embedded_doc.new
|
@@ -465,7 +478,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
465
478
|
doc.should have_error_on(:action, 'is reserved')
|
466
479
|
end
|
467
480
|
|
468
|
-
should
|
481
|
+
it "should not have error if allow nil is true and value is nil" do
|
469
482
|
@embedded_doc.key :action, String
|
470
483
|
@embedded_doc.validates_exclusion_of :action, :in => %w(kick run), :allow_nil => true
|
471
484
|
|
@@ -473,7 +486,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
473
486
|
doc.should_not have_error_on(:action)
|
474
487
|
end
|
475
488
|
|
476
|
-
should
|
489
|
+
it "should not have error if allow blank is true and value is blank" do
|
477
490
|
@embedded_doc.key :action, String
|
478
491
|
@embedded_doc.validates_exclusion_of :action, :in => %w(kick run), :allow_nil => true
|
479
492
|
|
@@ -483,14 +496,14 @@ class ValidationsTest < Test::Unit::TestCase
|
|
483
496
|
end
|
484
497
|
|
485
498
|
context "validating inclusion of" do
|
486
|
-
should
|
499
|
+
it "should throw error if enumerator not provided" do
|
487
500
|
@embedded_doc.key :action, String
|
488
501
|
lambda {
|
489
502
|
@embedded_doc.validates_inclusion_of :action
|
490
503
|
}.should raise_error(ArgumentError)
|
491
504
|
end
|
492
505
|
|
493
|
-
should
|
506
|
+
it "should work with validates_inclusion_of macro" do
|
494
507
|
@embedded_doc.key :action, String
|
495
508
|
@embedded_doc.validates_inclusion_of :action, :in => %w(kick run)
|
496
509
|
|
@@ -504,7 +517,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
504
517
|
doc.should_not have_error_on(:action)
|
505
518
|
end
|
506
519
|
|
507
|
-
should
|
520
|
+
it "should work with :in shortcut on key definition" do
|
508
521
|
@embedded_doc.key :action, String, :in => %w(kick run)
|
509
522
|
|
510
523
|
doc = @embedded_doc.new
|
@@ -517,7 +530,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
517
530
|
doc.should_not have_error_on(:action)
|
518
531
|
end
|
519
532
|
|
520
|
-
should
|
533
|
+
it "should not have error if allow nil is true and value is nil" do
|
521
534
|
@embedded_doc.key :action, String
|
522
535
|
@embedded_doc.validates_inclusion_of :action, :in => %w(kick run), :allow_nil => true
|
523
536
|
|
@@ -525,7 +538,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
525
538
|
doc.should_not have_error_on(:action)
|
526
539
|
end
|
527
540
|
|
528
|
-
should
|
541
|
+
it "should not have error if allow blank is true and value is blank" do
|
529
542
|
@embedded_doc.key :action, String
|
530
543
|
@embedded_doc.validates_inclusion_of :action, :in => %w(kick run), :allow_blank => true
|
531
544
|
|
@@ -539,7 +552,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
539
552
|
end # Validations
|
540
553
|
|
541
554
|
context "Adding validation errors" do
|
542
|
-
|
555
|
+
before do
|
543
556
|
@document = Doc do
|
544
557
|
key :action, String
|
545
558
|
def action_present
|
@@ -548,7 +561,7 @@ class ValidationsTest < Test::Unit::TestCase
|
|
548
561
|
end
|
549
562
|
end
|
550
563
|
|
551
|
-
should
|
564
|
+
it "should work with validate callback" do
|
552
565
|
@document.validate :action_present
|
553
566
|
|
554
567
|
doc = @document.new
|