mongo_mapper-unstable 2010.2.28 → 2010.3.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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