mongo_mapper-unstable 2010.2.28 → 2010.3.3

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.
@@ -1,6 +1,14 @@
1
1
  require 'test_helper'
2
+ require 'active_support/version'
2
3
 
3
4
  class JsonSerializationTest < Test::Unit::TestCase
5
+
6
+ # Helper function in case things change in the future
7
+ # - replacing all those to_json calls was a nightmare
8
+ def convert_to_json object, options = {}
9
+ ActiveSupport::JSON.encode(object, options)
10
+ end
11
+
4
12
  class Tag
5
13
  include MongoMapper::EmbeddedDocument
6
14
  key :name, String
@@ -30,11 +38,11 @@ class JsonSerializationTest < Test::Unit::TestCase
30
38
 
31
39
  should "include demodulized root" do
32
40
  Contact.include_root_in_json = true
33
- assert_match %r{^\{"contact": \{}, @contact.to_json
41
+ assert_match %r{^\{"contact":\s?\{}, convert_to_json(@contact)
34
42
  end
35
43
 
36
44
  should "encode all encodable attributes" do
37
- json = @contact.to_json
45
+ json = convert_to_json(@contact)
38
46
 
39
47
  assert_no_match %r{"_id"}, json
40
48
  assert_match %r{"name":"Konata Izumi"}, json
@@ -45,7 +53,7 @@ class JsonSerializationTest < Test::Unit::TestCase
45
53
  end
46
54
 
47
55
  should "allow attribute filtering with only" do
48
- json = @contact.to_json(:only => [:name, :age])
56
+ json = convert_to_json(@contact, :only => [:name, :age])
49
57
 
50
58
  assert_no_match %r{"_id"}, json
51
59
  assert_match %r{"name":"Konata Izumi"}, json
@@ -56,7 +64,7 @@ class JsonSerializationTest < Test::Unit::TestCase
56
64
  end
57
65
 
58
66
  should "allow attribute filtering with except" do
59
- json = @contact.to_json(:except => [:name, :age])
67
+ json = convert_to_json(@contact, :except => [:name, :age])
60
68
 
61
69
  assert_no_match %r{"_id"}, json
62
70
  assert_no_match %r{"name"}, json
@@ -68,12 +76,12 @@ class JsonSerializationTest < Test::Unit::TestCase
68
76
 
69
77
  context "_id key" do
70
78
  should "not be included by default" do
71
- json = @contact.to_json
79
+ json = convert_to_json(@contact)
72
80
  assert_no_match %r{"_id":}, json
73
81
  end
74
82
 
75
83
  should "not be included even if :except is used" do
76
- json = @contact.to_json(:except => :name)
84
+ json = convert_to_json(@contact, :except => :name)
77
85
  assert_no_match %r{"_id":}, json
78
86
  end
79
87
  end
@@ -85,12 +93,12 @@ class JsonSerializationTest < Test::Unit::TestCase
85
93
  end
86
94
 
87
95
  should "be included by default" do
88
- json = @contact.to_json
96
+ json = convert_to_json(@contact)
89
97
  assert_match %r{"id"}, json
90
98
  end
91
99
 
92
100
  should "be included when single method included" do
93
- json = @contact.to_json(:methods => :label)
101
+ json = convert_to_json(@contact, :methods => :label)
94
102
  assert_match %r{"id"}, json
95
103
  assert_match %r{"label":"Has cheezburger"}, json
96
104
  assert_match %r{"name":"Konata Izumi"}, json
@@ -98,7 +106,7 @@ class JsonSerializationTest < Test::Unit::TestCase
98
106
  end
99
107
 
100
108
  should "be included when multiple methods included" do
101
- json = @contact.to_json(:methods => [:label, :favorite_quote])
109
+ json = convert_to_json(@contact, :methods => [:label, :favorite_quote])
102
110
  assert_match %r{"id"}, json
103
111
  assert_match %r{"label":"Has cheezburger"}, json
104
112
  assert_match %r{"favorite_quote":"Constraints are liberating"}, json
@@ -106,9 +114,14 @@ class JsonSerializationTest < Test::Unit::TestCase
106
114
  end
107
115
 
108
116
  should "not be included if :only is present" do
109
- json = @contact.to_json(:only => :name)
117
+ json = convert_to_json(@contact, :only => :name)
110
118
  assert_no_match %r{"id":}, json
111
119
  end
120
+
121
+ should "be represented by a string" do
122
+ json = convert_to_json(@contact)
123
+ assert_match %r{"id":"}, json
124
+ end
112
125
  end
113
126
 
114
127
  context "including methods" do
@@ -118,12 +131,12 @@ class JsonSerializationTest < Test::Unit::TestCase
118
131
  end
119
132
 
120
133
  should "include single method" do
121
- json = @contact.to_json(:methods => :label)
134
+ json = convert_to_json(@contact, :methods => :label)
122
135
  assert_match %r{"label":"Has cheezburger"}, json
123
136
  end
124
137
 
125
138
  should "include multiple methods" do
126
- json = @contact.to_json(:only => :name, :methods => [:label, :favorite_quote])
139
+ json = convert_to_json(@contact, :only => :name, :methods => [:label, :favorite_quote])
127
140
  assert_match %r{"label":"Has cheezburger"}, json
128
141
  assert_match %r{"favorite_quote":"Constraints are liberating"}, json
129
142
  assert_match %r{"name":"Konata Izumi"}, json
@@ -143,13 +156,13 @@ class JsonSerializationTest < Test::Unit::TestCase
143
156
  end
144
157
 
145
158
  should "allow attribute filtering with only" do
146
- json = @contacts.to_json(:only => :name)
159
+ json =convert_to_json(@contacts, :only => :name)
147
160
  assert_match %r{\{"name":"David"\}}, json
148
161
  assert_match %r{\{"name":"Mary"\}}, json
149
162
  end
150
163
 
151
164
  should "allow attribute filtering with except" do
152
- json = @contacts.to_json(:except => [:name, :preferences, :awesome, :created_at, :updated_at])
165
+ json = convert_to_json(@contacts, :except => [:name, :preferences, :awesome, :created_at, :updated_at])
153
166
  assert_match %r{"age":39}, json
154
167
  assert_match %r{"age":14}, json
155
168
  assert_no_match %r{"name":}, json
@@ -165,7 +178,7 @@ class JsonSerializationTest < Test::Unit::TestCase
165
178
  1 => Contact.new(:name => 'David', :age => 39),
166
179
  2 => Contact.new(:name => 'Mary', :age => 14)
167
180
  }
168
- json = contacts.to_json(:only => [1, :name])
181
+ json = convert_to_json(contacts, :only => [1, :name])
169
182
  assert_match %r{"1":}, json
170
183
  assert_match %r{\{"name":"David"\}}, json
171
184
  assert_no_match %r{"2":}, json
@@ -174,7 +187,7 @@ class JsonSerializationTest < Test::Unit::TestCase
174
187
  should "include embedded attributes" do
175
188
  contact = Contact.new(:name => 'John', :age => 27)
176
189
  contact.tags = [Tag.new(:name => 'awesome'), Tag.new(:name => 'ruby')]
177
- json = contact.to_json
190
+ json = convert_to_json(contact)
178
191
  assert_match %r{"tags":}, json
179
192
  assert_match %r{"name":"awesome"}, json
180
193
  assert_match %r{"name":"ruby"}, json
@@ -183,7 +196,7 @@ class JsonSerializationTest < Test::Unit::TestCase
183
196
  should "include dynamic attributes" do
184
197
  contact = Contact.new(:name => 'John', :age => 27, :foo => 'bar')
185
198
  contact['smell'] = 'stinky'
186
- json = contact.to_json
199
+ json = convert_to_json(contact)
187
200
  assert_match %r{"smell":"stinky"}, json
188
201
  end
189
202
  end
@@ -23,14 +23,14 @@ class SerializationTest < Test::Unit::TestCase
23
23
  context format do
24
24
  should "be reversable" do
25
25
  serialized = @instance.send("to_#{format}")
26
- unserialized = @document.new.send("from_#{format}", serialized)
26
+ unserialized = @document.send("from_#{format}", serialized)
27
27
 
28
28
  assert_equal @instance, unserialized
29
29
  end
30
30
 
31
31
  should "allow attribute only filtering" do
32
32
  serialized = @instance.send("to_#{format}", :only => [ :age, :name ])
33
- unserialized = @document.new.send("from_#{format}", serialized)
33
+ unserialized = @document.send("from_#{format}", serialized)
34
34
 
35
35
  assert_equal @instance.name, unserialized.name
36
36
  assert_equal @instance.age, unserialized.age
@@ -40,7 +40,7 @@ class SerializationTest < Test::Unit::TestCase
40
40
 
41
41
  should "allow attribute except filtering" do
42
42
  serialized = @instance.send("to_#{format}", :except => [ :age, :name ])
43
- unserialized = @document.new.send("from_#{format}", serialized)
43
+ unserialized = @document.send("from_#{format}", serialized)
44
44
 
45
45
  assert_nil unserialized.name
46
46
  assert_nil unserialized.age
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongo_mapper-unstable
3
3
  version: !ruby/object:Gem::Version
4
- version: 2010.2.28
4
+ prerelease: false
5
+ segments:
6
+ - 2010
7
+ - 3
8
+ - 3
9
+ version: 2010.3.3
5
10
  platform: ruby
6
11
  authors:
7
12
  - John Nunemaker
@@ -9,79 +14,106 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2010-02-28 00:00:00 -05:00
17
+ date: 2010-03-03 00:00:00 -05:00
13
18
  default_executable: mmconsole
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: activesupport
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
20
24
  requirements:
21
25
  - - ">="
22
26
  - !ruby/object:Gem::Version
27
+ segments:
28
+ - 2
29
+ - 3
23
30
  version: "2.3"
24
- version:
31
+ type: :runtime
32
+ version_requirements: *id001
25
33
  - !ruby/object:Gem::Dependency
26
34
  name: mongo
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
35
+ prerelease: false
36
+ requirement: &id002 !ruby/object:Gem::Requirement
30
37
  requirements:
31
38
  - - "="
32
39
  - !ruby/object:Gem::Version
33
- version: 0.18.3
34
- version:
40
+ segments:
41
+ - 0
42
+ - 19
43
+ - 1
44
+ version: 0.19.1
45
+ type: :runtime
46
+ version_requirements: *id002
35
47
  - !ruby/object:Gem::Dependency
36
48
  name: jnunemaker-validatable
37
- type: :runtime
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
49
+ prerelease: false
50
+ requirement: &id003 !ruby/object:Gem::Requirement
40
51
  requirements:
41
52
  - - "="
42
53
  - !ruby/object:Gem::Version
43
- version: 1.8.1
44
- version:
54
+ segments:
55
+ - 1
56
+ - 8
57
+ - 3
58
+ version: 1.8.3
59
+ type: :runtime
60
+ version_requirements: *id003
45
61
  - !ruby/object:Gem::Dependency
46
62
  name: jnunemaker-matchy
47
- type: :development
48
- version_requirement:
49
- version_requirements: !ruby/object:Gem::Requirement
63
+ prerelease: false
64
+ requirement: &id004 !ruby/object:Gem::Requirement
50
65
  requirements:
51
66
  - - "="
52
67
  - !ruby/object:Gem::Version
68
+ segments:
69
+ - 0
70
+ - 4
71
+ - 0
53
72
  version: 0.4.0
54
- version:
73
+ type: :development
74
+ version_requirements: *id004
55
75
  - !ruby/object:Gem::Dependency
56
76
  name: shoulda
57
- type: :development
58
- version_requirement:
59
- version_requirements: !ruby/object:Gem::Requirement
77
+ prerelease: false
78
+ requirement: &id005 !ruby/object:Gem::Requirement
60
79
  requirements:
61
80
  - - "="
62
81
  - !ruby/object:Gem::Version
82
+ segments:
83
+ - 2
84
+ - 10
85
+ - 2
63
86
  version: 2.10.2
64
- version:
87
+ type: :development
88
+ version_requirements: *id005
65
89
  - !ruby/object:Gem::Dependency
66
90
  name: timecop
67
- type: :development
68
- version_requirement:
69
- version_requirements: !ruby/object:Gem::Requirement
91
+ prerelease: false
92
+ requirement: &id006 !ruby/object:Gem::Requirement
70
93
  requirements:
71
94
  - - "="
72
95
  - !ruby/object:Gem::Version
96
+ segments:
97
+ - 0
98
+ - 3
99
+ - 1
73
100
  version: 0.3.1
74
- version:
101
+ type: :development
102
+ version_requirements: *id006
75
103
  - !ruby/object:Gem::Dependency
76
104
  name: mocha
77
- type: :development
78
- version_requirement:
79
- version_requirements: !ruby/object:Gem::Requirement
105
+ prerelease: false
106
+ requirement: &id007 !ruby/object:Gem::Requirement
80
107
  requirements:
81
108
  - - "="
82
109
  - !ruby/object:Gem::Version
110
+ segments:
111
+ - 0
112
+ - 9
113
+ - 8
83
114
  version: 0.9.8
84
- version:
115
+ type: :development
116
+ version_requirements: *id007
85
117
  description:
86
118
  email: nunemaker@gmail.com
87
119
  executables:
@@ -125,11 +157,14 @@ files:
125
157
  - lib/mongo_mapper/plugins/inspect.rb
126
158
  - lib/mongo_mapper/plugins/keys.rb
127
159
  - lib/mongo_mapper/plugins/logger.rb
160
+ - lib/mongo_mapper/plugins/modifiers.rb
128
161
  - lib/mongo_mapper/plugins/pagination.rb
129
162
  - lib/mongo_mapper/plugins/pagination/proxy.rb
130
163
  - lib/mongo_mapper/plugins/protected.rb
131
164
  - lib/mongo_mapper/plugins/rails.rb
132
165
  - lib/mongo_mapper/plugins/serialization.rb
166
+ - lib/mongo_mapper/plugins/timestamps.rb
167
+ - lib/mongo_mapper/plugins/userstamps.rb
133
168
  - lib/mongo_mapper/plugins/validations.rb
134
169
  - lib/mongo_mapper/query.rb
135
170
  - lib/mongo_mapper/support.rb
@@ -139,6 +174,7 @@ files:
139
174
  - performance/read_write.rb
140
175
  - specs.watchr
141
176
  - test/NOTE_ON_TESTING
177
+ - test/active_model_lint_test.rb
142
178
  - test/functional/associations/test_belongs_to_polymorphic_proxy.rb
143
179
  - test/functional/associations/test_belongs_to_proxy.rb
144
180
  - test/functional/associations/test_in_array_proxy.rb
@@ -155,11 +191,14 @@ files:
155
191
  - test/functional/test_document.rb
156
192
  - test/functional/test_embedded_document.rb
157
193
  - test/functional/test_identity_map.rb
194
+ - test/functional/test_indexing.rb
158
195
  - test/functional/test_logger.rb
159
196
  - test/functional/test_modifiers.rb
160
197
  - test/functional/test_pagination.rb
161
198
  - test/functional/test_protected.rb
162
199
  - test/functional/test_string_id_compatibility.rb
200
+ - test/functional/test_timestamps.rb
201
+ - test/functional/test_userstamps.rb
163
202
  - test/functional/test_validations.rb
164
203
  - test/models.rb
165
204
  - test/support/custom_matchers.rb
@@ -196,18 +235,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
196
235
  requirements:
197
236
  - - ">="
198
237
  - !ruby/object:Gem::Version
238
+ segments:
239
+ - 0
199
240
  version: "0"
200
- version:
201
241
  required_rubygems_version: !ruby/object:Gem::Requirement
202
242
  requirements:
203
243
  - - ">="
204
244
  - !ruby/object:Gem::Version
245
+ segments:
246
+ - 0
205
247
  version: "0"
206
- version:
207
248
  requirements: []
208
249
 
209
250
  rubyforge_project:
210
- rubygems_version: 1.3.5
251
+ rubygems_version: 1.3.6
211
252
  signing_key:
212
253
  specification_version: 3
213
254
  summary: A Ruby Object Mapper for Mongo
@@ -233,10 +274,12 @@ test_files:
233
274
  - test/test_helper.rb
234
275
  - test/support/custom_matchers.rb
235
276
  - test/support/timing.rb
277
+ - test/functional/test_timestamps.rb
236
278
  - test/functional/test_modifiers.rb
237
279
  - test/functional/test_embedded_document.rb
238
280
  - test/functional/test_protected.rb
239
281
  - test/functional/test_string_id_compatibility.rb
282
+ - test/functional/test_indexing.rb
240
283
  - test/functional/test_associations.rb
241
284
  - test/functional/associations/test_belongs_to_proxy.rb
242
285
  - test/functional/associations/test_in_array_proxy.rb
@@ -251,8 +294,10 @@ test_files:
251
294
  - test/functional/test_binary.rb
252
295
  - test/functional/test_dirty.rb
253
296
  - test/functional/test_callbacks.rb
297
+ - test/functional/test_userstamps.rb
254
298
  - test/functional/test_validations.rb
255
299
  - test/functional/test_logger.rb
256
300
  - test/functional/test_document.rb
257
301
  - test/functional/test_pagination.rb
258
302
  - test/models.rb
303
+ - test/active_model_lint_test.rb