parse_resource 1.7.3 → 1.8.0

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.
Files changed (65) hide show
  1. data/.DS_Store +0 -0
  2. data/.travis.yml +1 -1
  3. data/Gemfile +4 -8
  4. data/Gemfile.lock +27 -23
  5. data/README.md +81 -2
  6. data/Rakefile +9 -8
  7. data/VERSION +1 -1
  8. data/fixtures/.DS_Store +0 -0
  9. data/fixtures/vcr_cassettes/.DS_Store +0 -0
  10. data/fixtures/vcr_cassettes/test_all.yml +319 -34
  11. data/fixtures/vcr_cassettes/test_attribute_getters.yml +256 -12
  12. data/fixtures/vcr_cassettes/test_attribute_setters.yml +256 -12
  13. data/fixtures/vcr_cassettes/test_authenticate.yml +260 -32
  14. data/fixtures/vcr_cassettes/test_chained_wheres.yml +320 -35
  15. data/fixtures/vcr_cassettes/test_chunk.yml +1359 -0
  16. data/fixtures/vcr_cassettes/test_count.yml +495 -84
  17. data/fixtures/vcr_cassettes/test_create.yml +154 -12
  18. data/fixtures/vcr_cassettes/test_created_at.yml +256 -12
  19. data/fixtures/vcr_cassettes/test_destroy.yml +364 -32
  20. data/fixtures/vcr_cassettes/test_destroy_all.yml +236 -48
  21. data/fixtures/vcr_cassettes/test_each.yml +488 -56
  22. data/fixtures/vcr_cassettes/test_fetching_closest_10.yml +1509 -0
  23. data/fixtures/vcr_cassettes/test_fetching_closest_by_kilometers.yml +1509 -0
  24. data/fixtures/vcr_cassettes/test_fetching_closest_by_miles.yml +1509 -0
  25. data/fixtures/vcr_cassettes/test_fetching_closest_by_radians.yml +1509 -0
  26. data/fixtures/vcr_cassettes/test_fetching_closest_within_box.yml +489 -0
  27. data/fixtures/vcr_cassettes/test_fetching_geopoint_field.yml +489 -0
  28. data/fixtures/vcr_cassettes/test_find.yml +312 -24
  29. data/fixtures/vcr_cassettes/test_find_all_by.yml +170 -34
  30. data/fixtures/vcr_cassettes/test_find_by.yml +174 -38
  31. data/fixtures/vcr_cassettes/test_first.yml +260 -23
  32. data/fixtures/vcr_cassettes/test_id.yml +256 -12
  33. data/fixtures/vcr_cassettes/test_installation_creation.yml +199 -0
  34. data/fixtures/vcr_cassettes/test_installation_creation_validation_check.yml +297 -0
  35. data/fixtures/vcr_cassettes/test_limit.yml +1138 -179
  36. data/fixtures/vcr_cassettes/test_map.yml +488 -56
  37. data/fixtures/vcr_cassettes/test_order_ascending.yml +395 -0
  38. data/fixtures/vcr_cassettes/test_order_descending.yml +446 -0
  39. data/fixtures/vcr_cassettes/test_save.yml +316 -24
  40. data/fixtures/vcr_cassettes/test_save_all_and_destroy_all.yml +869 -0
  41. data/fixtures/vcr_cassettes/test_saving_geo_point_with_quick_init.yml +395 -0
  42. data/fixtures/vcr_cassettes/test_saving_geopoint_with_coords.yml +395 -0
  43. data/fixtures/vcr_cassettes/test_skip.yml +120 -525
  44. data/fixtures/vcr_cassettes/test_update.yml +316 -24
  45. data/fixtures/vcr_cassettes/test_updated_at.yml +316 -24
  46. data/fixtures/vcr_cassettes/test_username_should_be_unique.yml +311 -21
  47. data/fixtures/vcr_cassettes/test_where.yml +117 -25
  48. data/lib/kaminari_extension.rb +60 -0
  49. data/lib/parse_resource.rb +4 -2
  50. data/lib/parse_resource/base.rb +262 -163
  51. data/lib/parse_resource/client.rb +8 -0
  52. data/lib/parse_resource/parse_error.rb +36 -22
  53. data/lib/parse_resource/query.rb +99 -7
  54. data/lib/parse_resource/query_methods.rb +64 -0
  55. data/lib/parse_resource/types/parse_geopoint.rb +19 -0
  56. data/parse_resource.gemspec +29 -9
  57. data/parse_resource.yml +2 -2
  58. data/test/active_model_lint_test.rb +0 -2
  59. data/test/helper.rb +13 -3
  60. data/test/test_parse_installation.rb +41 -0
  61. data/test/test_parse_resource.rb +108 -20
  62. data/test/test_parse_user.rb +4 -7
  63. data/test/test_query_options.rb +0 -38
  64. data/test/test_types.rb +186 -0
  65. metadata +38 -31
@@ -0,0 +1,186 @@
1
+ require 'helper'
2
+ require 'parse_resource'
3
+
4
+ ParseResource::Base.load!(ENV["PARSE_RESOURCE_APPLICATION_ID"], ENV["PARSE_RESOURCE_MASTER_KEY"])
5
+
6
+ class Place < ParseResource::Base
7
+ fields :name, :location
8
+ end
9
+
10
+ class TestParseResource < Test::Unit::TestCase
11
+ def test_saving_geopoint_with_coords
12
+ VCR.use_cassette('test_saving_geopoint_with_coords', :record => :new_episodes) do
13
+ Place.destroy_all(Place.all)
14
+ place = Place.new
15
+ place.name = "Office"
16
+ place.location = ParseGeoPoint.new
17
+ place.location.latitude = 34.09300844216167
18
+ place.location.longitude = -118.3780094460731
19
+ place.save
20
+ assert_equal Place.count, 1
21
+ end
22
+ end
23
+
24
+ def test_saving_geo_point_with_quick_init
25
+ VCR.use_cassette('test_saving_geo_point_with_quick_init', :record => :new_episodes) do
26
+ Place.destroy_all(Place.all)
27
+ place = Place.new
28
+ place.location = ParseGeoPoint.new :latitude => 34.09300844216167, :longitude => -118.3780094460731
29
+ place.save
30
+ assert_equal Place.count, 1
31
+ end
32
+ end
33
+
34
+ def test_fetching_geopoint_field
35
+ VCR.use_cassette('test_fetching_geopoint_field', :record => :new_episodes) do
36
+ Place.destroy_all(Place.all)
37
+ place = Place.new
38
+ place.location = ParseGeoPoint.new :latitude => 34.09300844216167, :longitude => -118.3780094460731
39
+ place.save
40
+ assert_equal Place.count, 1
41
+
42
+ server_place = Place.find(place.objectId)
43
+ assert_equal server_place.location.latitude, 34.09300844216167
44
+ assert_equal server_place.location.longitude, -118.3780094460731
45
+ end
46
+ end
47
+
48
+ def test_fetching_closest_10
49
+ VCR.use_cassette('test_fetching_closest_10', :record => :new_episodes) do
50
+ Place.destroy_all(Place.all)
51
+ [[34.09300844216167, -118.3780094460731],
52
+ [34.09297074516132, -118.3779001235962],
53
+ [34.09291733023489, -118.3780601208767],
54
+ [34.09291733023489, -118.3780601208767],
55
+ [34.10020829969745, -118.2852727109533 ],
56
+ [33.81637559726026, -118.3783150233789 ],
57
+ [36.11837535750446, -115.1759274967512],
58
+ [48.0284736030277, 37.79059904775168 ],
59
+ [48.02790593385819, 37.78864582772938 ],
60
+ [48.02776282648577, 37.78850555419922 ],
61
+ [48.02750452121758, 37.78846263885498 ]
62
+ ].each do |location|
63
+ place = Place.new
64
+ place.location = ParseGeoPoint.new :latitude => location[0], :longitude => location[1]
65
+ place.save
66
+ end
67
+ assert_equal Place.count, 11
68
+ assert_equal Place.near(:location, [34.09300844216167, -118.3780094460731]).limit(10).all.count, 10
69
+ end
70
+ end
71
+
72
+ def test_fetching_closest_by_miles
73
+ VCR.use_cassette('test_fetching_closest_by_miles', :record => :new_episodes) do
74
+ Place.destroy_all(Place.all)
75
+ [[34.09300844216167, -118.3780094460731],
76
+ [34.09297074516132, -118.3779001235962],
77
+ [34.09291733023489, -118.3780601208767],
78
+ [34.09291733023489, -118.3780601208767],
79
+ [34.10020829969745, -118.2852727109533 ],
80
+ [33.81637559726026, -118.3783150233789 ],
81
+ [36.11837535750446, -115.1759274967512],
82
+ [48.0284736030277, 37.79059904775168 ],
83
+ [48.02790593385819, 37.78864582772938 ],
84
+ [48.02776282648577, 37.78850555419922 ],
85
+ [48.02750452121758, 37.78846263885498 ]
86
+ ].each do |location|
87
+ place = Place.new
88
+ place.location = ParseGeoPoint.new :latitude => location[0], :longitude => location[1]
89
+ place.save
90
+ end
91
+ assert_equal Place.count, 11
92
+ within_10_miles = Place.near(:location, [34.09300844216167, -118.3780094460731], :maxDistanceInMiles => 10).all
93
+ assert_equal within_10_miles.count, 5
94
+ within_10_miles.map(&:location).each do |local|
95
+ assert_equal local.longitude > -119 && local.longitude < -118, true
96
+ assert_equal local.latitude > 34 && local.latitude < 35, true
97
+ end
98
+ end
99
+ end
100
+
101
+ def test_fetching_closest_by_kilometers
102
+ VCR.use_cassette('test_fetching_closest_by_kilometers', :record => :new_episodes) do
103
+ Place.destroy_all(Place.all)
104
+ [[34.09300844216167, -118.3780094460731],
105
+ [34.09297074516132, -118.3779001235962],
106
+ [34.09291733023489, -118.3780601208767],
107
+ [34.09291733023489, -118.3780601208767],
108
+ [34.10020829969745, -118.2852727109533 ],
109
+ [33.81637559726026, -118.3783150233789 ],
110
+ [36.11837535750446, -115.1759274967512],
111
+ [48.0284736030277, 37.79059904775168 ],
112
+ [48.02790593385819, 37.78864582772938 ],
113
+ [48.02776282648577, 37.78850555419922 ],
114
+ [48.02750452121758, 37.78846263885498 ]
115
+ ].each do |location|
116
+ place = Place.new
117
+ place.location = ParseGeoPoint.new :latitude => location[0], :longitude => location[1]
118
+ place.save
119
+ end
120
+ assert_equal Place.count, 11
121
+ within_10_kms = Place.near(:location, [34.09300844216167, -118.3780094460731], :maxDistanceInKilometers => 10).all
122
+ assert_equal within_10_kms.count, 5
123
+ within_10_kms.map(&:location).each do |local|
124
+ assert_equal local.longitude > -119 && local.longitude < -118, true
125
+ assert_equal local.latitude > 34 && local.latitude < 35, true
126
+ end
127
+ end
128
+ end
129
+
130
+ def test_fetching_closest_by_radians
131
+ VCR.use_cassette('test_fetching_closest_by_radians', :record => :new_episodes) do
132
+ Place.destroy_all(Place.all)
133
+ [[34.09300844216167, -118.3780094460731],
134
+ [34.09297074516132, -118.3779001235962],
135
+ [34.09291733023489, -118.3780601208767],
136
+ [34.09291733023489, -118.3780601208767],
137
+ [34.10020829969745, -118.2852727109533 ],
138
+ [33.81637559726026, -118.3783150233789 ],
139
+ [36.11837535750446, -115.1759274967512],
140
+ [48.0284736030277, 37.79059904775168 ],
141
+ [48.02790593385819, 37.78864582772938 ],
142
+ [48.02776282648577, 37.78850555419922 ],
143
+ [48.02750452121758, 37.78846263885498 ]
144
+ ].each do |location|
145
+ place = Place.new
146
+ place.location = ParseGeoPoint.new :latitude => location[0], :longitude => location[1]
147
+ place.save
148
+ end
149
+ assert_equal Place.count, 11
150
+ within_10_radians = Place.near(:location, [34.09300844216167, -118.3780094460731], :maxDistanceInRadians => 10/3959).all
151
+ assert_equal within_10_radians.count, 1
152
+ within_10_radians.map(&:location).each do |local|
153
+ assert_equal local.longitude > -119 && local.longitude < -118, true
154
+ assert_equal local.latitude > 34 && local.latitude < 35, true
155
+ end
156
+ end
157
+ end
158
+
159
+ def test_fetching_closest_within_box
160
+ VCR.use_cassette('test_fetching_closest_within_box', :record => :new_episodes) do
161
+ Place.destroy_all(Place.all)
162
+ places = []
163
+ [[34.09300844216167, -118.3780094460731],
164
+ [34.09297074516132, -118.3779001235962],
165
+ [34.09291733023489, -118.3780601208767],
166
+ [34.09291733023489, -118.3780601208767],
167
+ [34.10020829969745, -118.2852727109533 ],
168
+ [33.81637559726026, -118.3783150233789 ],
169
+ [36.11837535750446, -115.1759274967512],
170
+ [48.0284736030277, 37.79059904775168 ],
171
+ [48.02790593385819, 37.78864582772938 ],
172
+ [48.02776282648577, 37.78850555419922 ],
173
+ [48.02750452121758, 37.78846263885498 ]
174
+ ].each do |location|
175
+ place = Place.new
176
+ place.location = ParseGeoPoint.new :latitude => location[0], :longitude => location[1]
177
+ places << place
178
+ end
179
+ Place.save_all(places)
180
+ assert_equal Place.count, 11
181
+ within_box = Place.within_box(:location, [33.81637559726026, -118.3783150233789], [34.09300844216167, -118.3780094460731]).all
182
+ assert_equal within_box.count, 4
183
+ end
184
+ end
185
+
186
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parse_resource
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.3
4
+ version: 1.8.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-20 00:00:00.000000000 Z
12
+ date: 2013-04-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client
@@ -76,13 +76,13 @@ dependencies:
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0'
78
78
  - !ruby/object:Gem::Dependency
79
- name: bundler
79
+ name: jeweler
80
80
  requirement: !ruby/object:Gem::Requirement
81
81
  none: false
82
82
  requirements:
83
83
  - - ~>
84
84
  - !ruby/object:Gem::Version
85
- version: 1.1.5
85
+ version: 1.6.4
86
86
  type: :development
87
87
  prerelease: false
88
88
  version_requirements: !ruby/object:Gem::Requirement
@@ -90,15 +90,15 @@ dependencies:
90
90
  requirements:
91
91
  - - ~>
92
92
  - !ruby/object:Gem::Version
93
- version: 1.1.5
93
+ version: 1.6.4
94
94
  - !ruby/object:Gem::Dependency
95
- name: jeweler
95
+ name: reek
96
96
  requirement: !ruby/object:Gem::Requirement
97
97
  none: false
98
98
  requirements:
99
99
  - - ~>
100
100
  - !ruby/object:Gem::Version
101
- version: 1.6.4
101
+ version: 1.2.8
102
102
  type: :development
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
@@ -106,9 +106,9 @@ dependencies:
106
106
  requirements:
107
107
  - - ~>
108
108
  - !ruby/object:Gem::Version
109
- version: 1.6.4
109
+ version: 1.2.8
110
110
  - !ruby/object:Gem::Dependency
111
- name: rcov
111
+ name: rest-client
112
112
  requirement: !ruby/object:Gem::Requirement
113
113
  none: false
114
114
  requirements:
@@ -124,23 +124,7 @@ dependencies:
124
124
  - !ruby/object:Gem::Version
125
125
  version: '0'
126
126
  - !ruby/object:Gem::Dependency
127
- name: reek
128
- requirement: !ruby/object:Gem::Requirement
129
- none: false
130
- requirements:
131
- - - ~>
132
- - !ruby/object:Gem::Version
133
- version: 1.2.8
134
- type: :development
135
- prerelease: false
136
- version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
- requirements:
139
- - - ~>
140
- - !ruby/object:Gem::Version
141
- version: 1.2.8
142
- - !ruby/object:Gem::Dependency
143
- name: rest-client
127
+ name: activesupport
144
128
  requirement: !ruby/object:Gem::Requirement
145
129
  none: false
146
130
  requirements:
@@ -156,7 +140,7 @@ dependencies:
156
140
  - !ruby/object:Gem::Version
157
141
  version: '0'
158
142
  - !ruby/object:Gem::Dependency
159
- name: activesupport
143
+ name: activemodel
160
144
  requirement: !ruby/object:Gem::Requirement
161
145
  none: false
162
146
  requirements:
@@ -172,7 +156,7 @@ dependencies:
172
156
  - !ruby/object:Gem::Version
173
157
  version: '0'
174
158
  - !ruby/object:Gem::Dependency
175
- name: activemodel
159
+ name: vcr
176
160
  requirement: !ruby/object:Gem::Requirement
177
161
  none: false
178
162
  requirements:
@@ -188,7 +172,7 @@ dependencies:
188
172
  - !ruby/object:Gem::Version
189
173
  version: '0'
190
174
  - !ruby/object:Gem::Dependency
191
- name: vcr
175
+ name: webmock
192
176
  requirement: !ruby/object:Gem::Requirement
193
177
  none: false
194
178
  requirements:
@@ -204,7 +188,7 @@ dependencies:
204
188
  - !ruby/object:Gem::Version
205
189
  version: '0'
206
190
  - !ruby/object:Gem::Dependency
207
- name: webmock
191
+ name: turn
208
192
  requirement: !ruby/object:Gem::Requirement
209
193
  none: false
210
194
  requirements:
@@ -227,6 +211,7 @@ extra_rdoc_files:
227
211
  - LICENSE.txt
228
212
  - README.md
229
213
  files:
214
+ - .DS_Store
230
215
  - .document
231
216
  - .travis.yml
232
217
  - Gemfile
@@ -235,38 +220,58 @@ files:
235
220
  - README.md
236
221
  - Rakefile
237
222
  - VERSION
223
+ - fixtures/.DS_Store
224
+ - fixtures/vcr_cassettes/.DS_Store
238
225
  - fixtures/vcr_cassettes/test_all.yml
239
226
  - fixtures/vcr_cassettes/test_attribute_getters.yml
240
227
  - fixtures/vcr_cassettes/test_attribute_setters.yml
241
228
  - fixtures/vcr_cassettes/test_authenticate.yml
242
229
  - fixtures/vcr_cassettes/test_chained_wheres.yml
230
+ - fixtures/vcr_cassettes/test_chunk.yml
243
231
  - fixtures/vcr_cassettes/test_count.yml
244
232
  - fixtures/vcr_cassettes/test_create.yml
245
233
  - fixtures/vcr_cassettes/test_created_at.yml
246
234
  - fixtures/vcr_cassettes/test_destroy.yml
247
235
  - fixtures/vcr_cassettes/test_destroy_all.yml
248
236
  - fixtures/vcr_cassettes/test_each.yml
237
+ - fixtures/vcr_cassettes/test_fetching_closest_10.yml
238
+ - fixtures/vcr_cassettes/test_fetching_closest_by_kilometers.yml
239
+ - fixtures/vcr_cassettes/test_fetching_closest_by_miles.yml
240
+ - fixtures/vcr_cassettes/test_fetching_closest_by_radians.yml
241
+ - fixtures/vcr_cassettes/test_fetching_closest_within_box.yml
242
+ - fixtures/vcr_cassettes/test_fetching_geopoint_field.yml
249
243
  - fixtures/vcr_cassettes/test_find.yml
250
244
  - fixtures/vcr_cassettes/test_find_all_by.yml
251
245
  - fixtures/vcr_cassettes/test_find_by.yml
252
246
  - fixtures/vcr_cassettes/test_first.yml
253
247
  - fixtures/vcr_cassettes/test_id.yml
248
+ - fixtures/vcr_cassettes/test_installation_creation.yml
249
+ - fixtures/vcr_cassettes/test_installation_creation_validation_check.yml
254
250
  - fixtures/vcr_cassettes/test_limit.yml
255
251
  - fixtures/vcr_cassettes/test_map.yml
252
+ - fixtures/vcr_cassettes/test_order_ascending.yml
253
+ - fixtures/vcr_cassettes/test_order_descending.yml
256
254
  - fixtures/vcr_cassettes/test_save.yml
255
+ - fixtures/vcr_cassettes/test_save_all_and_destroy_all.yml
256
+ - fixtures/vcr_cassettes/test_saving_geo_point_with_quick_init.yml
257
+ - fixtures/vcr_cassettes/test_saving_geopoint_with_coords.yml
257
258
  - fixtures/vcr_cassettes/test_skip.yml
258
259
  - fixtures/vcr_cassettes/test_update.yml
259
260
  - fixtures/vcr_cassettes/test_updated_at.yml
260
261
  - fixtures/vcr_cassettes/test_username_should_be_unique.yml
261
262
  - fixtures/vcr_cassettes/test_where.yml
262
263
  - lib/.DS_Store
264
+ - lib/kaminari_extension.rb
263
265
  - lib/parse_resource.rb
264
266
  - lib/parse_resource/base.rb
267
+ - lib/parse_resource/client.rb
265
268
  - lib/parse_resource/parse_error.rb
266
269
  - lib/parse_resource/parse_exceptions.rb
267
270
  - lib/parse_resource/parse_user.rb
268
271
  - lib/parse_resource/parse_user_validator.rb
269
272
  - lib/parse_resource/query.rb
273
+ - lib/parse_resource/query_methods.rb
274
+ - lib/parse_resource/types/parse_geopoint.rb
270
275
  - parse_resource.gemspec
271
276
  - parse_resource.yml
272
277
  - rdoc/ParseResource.html
@@ -276,10 +281,12 @@ files:
276
281
  - rdoc/rdoc.css
277
282
  - test/active_model_lint_test.rb
278
283
  - test/helper.rb
284
+ - test/test_parse_installation.rb
279
285
  - test/test_parse_resource.rb
280
286
  - test/test_parse_user.rb
281
287
  - test/test_query.rb
282
288
  - test/test_query_options.rb
289
+ - test/test_types.rb
283
290
  homepage: http://github.com/adelevie/parse_resource
284
291
  licenses:
285
292
  - MIT
@@ -295,7 +302,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
295
302
  version: '0'
296
303
  segments:
297
304
  - 0
298
- hash: -319004342774090314
305
+ hash: -1213870950460644404
299
306
  required_rubygems_version: !ruby/object:Gem::Requirement
300
307
  none: false
301
308
  requirements: