cloudwow-not_relational 0.1.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 (78) hide show
  1. data/README.rdoc +7 -0
  2. data/VERSION.yml +4 -0
  3. data/lib/not_relational/acts_as_not_relational_application.rb +11 -0
  4. data/lib/not_relational/and_condition.rb +10 -0
  5. data/lib/not_relational/attribute_range.rb +57 -0
  6. data/lib/not_relational/berkeley_repository.rb +48 -0
  7. data/lib/not_relational/configuration.rb +111 -0
  8. data/lib/not_relational/crypto.rb +58 -0
  9. data/lib/not_relational/domain_model.rb +855 -0
  10. data/lib/not_relational/domain_model_cache_item.rb +14 -0
  11. data/lib/not_relational/equals_condition.rb +18 -0
  12. data/lib/not_relational/geo.rb +188 -0
  13. data/lib/not_relational/index_description.rb +41 -0
  14. data/lib/not_relational/is_null_transform.rb +16 -0
  15. data/lib/not_relational/lazy_loading_text.rb +29 -0
  16. data/lib/not_relational/local_storage.rb +38 -0
  17. data/lib/not_relational/memcache_repository.rb +91 -0
  18. data/lib/not_relational/memory_repository.rb +273 -0
  19. data/lib/not_relational/memory_storage.rb +33 -0
  20. data/lib/not_relational/or_condition.rb +53 -0
  21. data/lib/not_relational/property_description.rb +102 -0
  22. data/lib/not_relational/query_string_auth_generator.rb +166 -0
  23. data/lib/not_relational/reference.rb +28 -0
  24. data/lib/not_relational/repository.rb +419 -0
  25. data/lib/not_relational/repository_factory.rb +67 -0
  26. data/lib/not_relational/repository_interface.rb +48 -0
  27. data/lib/not_relational/s3.rb +581 -0
  28. data/lib/not_relational/sdb_formatter.rb +119 -0
  29. data/lib/not_relational/sdb_monkey_patch.rb +47 -0
  30. data/lib/not_relational/starts_with_condition.rb +21 -0
  31. data/lib/not_relational/storage.rb +223 -0
  32. data/lib/not_relational/tag_cloud.rb +56 -0
  33. data/lib/not_relational/tracker_description.rb +26 -0
  34. data/lib/not_relational/uuid.rb +285 -0
  35. data/lib/not_relational.rb +17 -0
  36. data/test/models/album.rb +206 -0
  37. data/test/models/blurb.rb +65 -0
  38. data/test/models/blurb_wording.rb +18 -0
  39. data/test/models/comment.rb +27 -0
  40. data/test/models/error.rb +14 -0
  41. data/test/models/friend.rb +27 -0
  42. data/test/models/friend_request.rb +34 -0
  43. data/test/models/geo.rb +186 -0
  44. data/test/models/group.rb +283 -0
  45. data/test/models/language.rb +16 -0
  46. data/test/models/media_file.rb +32 -0
  47. data/test/models/media_item.rb +258 -0
  48. data/test/models/message.rb +26 -0
  49. data/test/models/node.rb +282 -0
  50. data/test/models/outgoing_email.rb +26 -0
  51. data/test/models/page_view_detail.rb +15 -0
  52. data/test/models/page_view_summary.rb +15 -0
  53. data/test/models/place.rb +103 -0
  54. data/test/models/rating.rb +21 -0
  55. data/test/models/tag.rb +89 -0
  56. data/test/models/user.rb +289 -0
  57. data/test/models/user_event.rb +67 -0
  58. data/test/models/weblab.rb +17 -0
  59. data/test/unit_tests/album_test.rb +181 -0
  60. data/test/unit_tests/bdb_test.rb +34 -0
  61. data/test/unit_tests/blurb_test.rb +110 -0
  62. data/test/unit_tests/comment_test.rb +42 -0
  63. data/test/unit_tests/composite_key_test.rb +75 -0
  64. data/test/unit_tests/enum_test.rb +32 -0
  65. data/test/unit_tests/group_test.rb +214 -0
  66. data/test/unit_tests/mediaitem_test.rb +412 -0
  67. data/test/unit_tests/memcache_repository_test.rb +40 -0
  68. data/test/unit_tests/memory_repository_test.rb +69 -0
  69. data/test/unit_tests/node_test.rb +490 -0
  70. data/test/unit_tests/place_test.rb +219 -0
  71. data/test/unit_tests/reference_set_test.rb +66 -0
  72. data/test/unit_tests/repository_factory_test.rb +16 -0
  73. data/test/unit_tests/tag_test.rb +86 -0
  74. data/test/unit_tests/user_test.rb +102 -0
  75. data/test/unit_tests/uuid.state +3 -0
  76. data/test/utils/create_sdb_domains.rb +44 -0
  77. data/test/utils/whack_domains.rb +32 -0
  78. metadata +134 -0
@@ -0,0 +1,490 @@
1
+
2
+ require 'rubygems'
3
+ require 'test/unit'
4
+ $:.push(File.dirname(__FILE__) +'/../../test/models')
5
+ $:.push(File.dirname(__FILE__) +'/../../lib/not_relational')
6
+ require File.dirname(__FILE__) +'/../../lib/not_relational/domain_model.rb'
7
+ require File.dirname(__FILE__) +'/../../lib/not_relational/attribute_range.rb'
8
+ require File.dirname(__FILE__) +'/../../lib/not_relational/repository.rb'
9
+ require File.dirname(__FILE__) +'/../../lib/not_relational/memory_repository.rb'
10
+ require File.dirname(__FILE__) +'/../../test/models/node.rb'
11
+ require File.dirname(__FILE__) +'/../../test/models/user.rb'
12
+ require File.dirname(__FILE__) +'/../../test/models/place.rb'
13
+ require File.dirname(__FILE__) +'/../../test/models/album.rb'
14
+ require File.dirname(__FILE__) +'/../../test/models/media_item.rb'
15
+ require File.dirname(__FILE__) +'/../../test/models/media_file.rb'
16
+ require File.dirname(__FILE__) +'/../../test/models/tag.rb'
17
+ require File.dirname(__FILE__) +'/../../test/models/rating.rb'
18
+ require File.dirname(__FILE__) +'/../../test/models/comment.rb'
19
+
20
+ ENV['not_relational_ENV']='testing'
21
+
22
+ class NodeTest < Test::Unit::TestCase
23
+
24
+ def NodeTest.set_up
25
+ Node.find(:all).each do |node|
26
+ node.destroy
27
+ end
28
+ Place.find(:all).each do |node|
29
+ node.destroy
30
+ end
31
+ Album.find(:all).each do |node|
32
+ node.destroy
33
+ end
34
+ Mediaitem.find(:all).each do |node|
35
+ node.destroy
36
+ end
37
+ User.find(:all).each do |node|
38
+ node.destroy
39
+ end
40
+ NotRelational::RepositoryFactory.instance.clear
41
+ end
42
+ def test_content_persists
43
+
44
+ node= Node.fill_new_node('david', "my title", 'hello world')
45
+ node.save
46
+
47
+ found=Node.find(node.id)
48
+ assert_not_nil(found)
49
+ assert(!found.is_dirty(:latestContent))
50
+ assert_equal('hello world',found.latestContent)
51
+ assert(!found.is_dirty(:latestContent))
52
+ found.latestContent="goodbye"
53
+ assert(found.is_dirty(:latestContent))
54
+ end
55
+ def test_select_by_clicks
56
+ NodeTest.set_up
57
+ (0..5).each do | i|
58
+ node= Node.fill_new_node('david', "#{i}", 'hello world')
59
+ node.clicks=i
60
+ node.save
61
+ end
62
+ found=Node.find(:all,:conditions=>{:clicks=>NotRelational::AttributeRange.new(:greater_than=>3)})
63
+ assert_equal(2,found.length)
64
+ end
65
+ def test_recent
66
+ NodeTest.set_up
67
+ nodes=[]
68
+ (0..5).each do | i|
69
+
70
+ node= Node.fill_new_node('david', "#{i}", 'hello world')
71
+ node.language_id='en'
72
+ node.publicRead=true
73
+ node.save
74
+
75
+ nodes<<node
76
+ NotRelational::RepositoryFactory.instance.pause()
77
+ end
78
+
79
+
80
+ recent=Node.recent('en',2)
81
+ assert_equal(2,recent.length)
82
+ assert_equal(nodes[5].id,recent[0].id)
83
+ assert_equal(nodes[4].id,recent[1].id)
84
+ assert_equal('5',recent[0].latestTitle )
85
+ assert_equal('4',recent[1].latestTitle )
86
+ end
87
+ def test_get_nearby_features
88
+ NodeTest.set_up
89
+ node= Node.fill_new_node('david', 'my new post', 'hello world')
90
+ node.longitude=50
91
+ node.latitude=-50
92
+ node.address=node.location.to_address
93
+ node.save
94
+ node2= Node.fill_new_node('david', 'my new post', 'hello world')
95
+ node2.longitude=51
96
+ node2.latitude=-51
97
+ node2.address=node2.location.to_address
98
+ node2.save
99
+ node2= Node.fill_new_node('david', 'my new post', 'hello world')
100
+ node2.longitude=80
101
+ node2.latitude=-80
102
+ node2.address=node2.location.to_address
103
+ node2.save
104
+ NotRelational::RepositoryFactory.instance.pause()
105
+ results=Node.find_near(NotRelational::Geo::Location.new(-51,51),4)
106
+ assert_equal(2,results.length)
107
+
108
+ results=Node.find_near(NotRelational::Geo::Location.new(-51,51),12)
109
+ assert_equal(1,results.length)
110
+
111
+
112
+ end
113
+
114
+
115
+
116
+ def test_set_up
117
+ NodeTest.set_up
118
+ end
119
+ def test_children
120
+ NodeTest.set_up
121
+ node= Node.fill_new_node('david', 'my new post', 'hello world')
122
+ node.save
123
+ child=Node.fill_new_node('david2', 'my new post2', 'hello world2')
124
+ child.parent_id=node.id
125
+ child.save
126
+ child2=Node.fill_new_node('david3', 'my new post3', 'hello world3')
127
+ child2.parent_id=node.id
128
+ child2.save
129
+ not_child=Node.fill_new_node('n', 'n', 'n3')
130
+
131
+ not_child.save
132
+ NotRelational::RepositoryFactory.instance.pause()
133
+ assert_equal(2,node.children.length)
134
+ end
135
+
136
+
137
+ def test_child_count
138
+ node= Node.fill_new_node('david', 'my new post', 'hello world')
139
+ node.save
140
+ child=Node.fill_new_node('david2', 'my new post2', 'hello world2')
141
+ child.parent_id=node.id
142
+ child.save
143
+ child2=Node.fill_new_node('david3', 'my new post3', 'hello world3')
144
+ child2.parent_id=node.id
145
+ child2.save
146
+ not_child=Node.fill_new_node('n', 'n', 'n3')
147
+
148
+ not_child.save
149
+ NotRelational::RepositoryFactory.instance.pause()
150
+ assert_equal(2,node.child_count)
151
+ end
152
+
153
+ def test_parent
154
+ NodeTest.set_up
155
+ node= Node.fill_new_node('david', 'my new post', 'hello world')
156
+ node.save
157
+ child=Node.fill_new_node('david2', 'my new post2', 'hello world2')
158
+ child.parent_id=node.id
159
+ child.save
160
+ parent=child.parent
161
+ assert(parent!=nil)
162
+ assert_equal(parent.id,node.id)
163
+
164
+ end
165
+ def test_author
166
+ joe=User.find('joe')
167
+ if joe
168
+ joe.destroy
169
+ end
170
+ NodeTest.set_up
171
+
172
+ user=User.new
173
+ user.login='joe'
174
+ user.save!
175
+
176
+ node1= Node.fill_new_node('222', 'title222', 'content222')
177
+ node1.save
178
+ node= Node.fill_new_node('joe', 'title', 'content')
179
+ node.save
180
+
181
+
182
+
183
+ author=node.author
184
+ assert(author!=nil)
185
+ assert_equal('joe',author.login)
186
+ author_nodes=author.nodes
187
+ assert(author_nodes!=nil)
188
+ assert_equal(1,author_nodes.length)
189
+ assert_equal('title',author_nodes[0].latestTitle)
190
+
191
+ end
192
+
193
+
194
+ def test_place
195
+ NodeTest.set_up
196
+ place=Place.new
197
+ place.name='Paris'
198
+ place.longitude=-10
199
+ place.latitude=10
200
+ place.address=place.location.to_address
201
+ place.save!
202
+
203
+ node1= Node.fill_new_node('222', 'title222', 'content222')
204
+ node1.place_id=place.id
205
+ node1.save
206
+
207
+ found_place=node1.place
208
+ assert(found_place!=nil)
209
+ assert_equal(place.id,found_place.id)
210
+
211
+ end
212
+
213
+
214
+ def test_get_nearby_places
215
+ NodeTest.set_up
216
+ place=Place.new
217
+ place.name='Paris'
218
+ place.longitude=-10
219
+ place.latitude=10
220
+ place.address=place.location.to_address
221
+ place.save!
222
+
223
+ place=Place.new
224
+ place.name='Paris'
225
+ place.longitude=-11
226
+ place.latitude=11
227
+ place.address=place.location.to_address
228
+ place.save!
229
+
230
+ place=Place.new
231
+ place.name='Paris'
232
+ place.longitude=-50
233
+ place.latitude=50
234
+ place.address=place.location.to_address
235
+ place.save!
236
+
237
+ node1= Node.fill_new_node('222', 'title222', 'content222')
238
+
239
+ node1.longitude=-10
240
+ node1.latitude=10
241
+ node1.address=node1.location.to_address
242
+ node1.save
243
+
244
+ NotRelational::RepositoryFactory.instance.pause()
245
+ results=node1.get_nearby_places(4)
246
+ assert_equal(2,results.length)
247
+
248
+ results=node1.get_nearby_places(12)
249
+ assert_equal(1,results.length)
250
+ end
251
+
252
+ def test_ancestor_place
253
+ NodeTest.set_up
254
+ place=Place.new
255
+ place.name='Paris'
256
+ place.save!
257
+ place2=Place.new
258
+ place2.name='London'
259
+ place2.save!
260
+
261
+ node1= Node.fill_new_node('222', 'title222', 'content222')
262
+ node1.place_id=place.id
263
+ node1.AncestorPlace=place2.id
264
+ node1.save
265
+
266
+ found_place=node1.ancestor_place
267
+ assert(found_place!=nil)
268
+ assert_equal(place2.id,found_place.id)
269
+ end
270
+
271
+ def test_Album
272
+ NodeTest.set_up
273
+ node= Node.fill_new_node('david', 'my new post', 'hello world')
274
+ node.save
275
+ node_album=Album.new
276
+ node_album.guid=node.album_guid
277
+ node_album.user_name='david'
278
+ node_album.save
279
+
280
+ found=node.Album
281
+ assert(found!=nil)
282
+ assert_equal(node_album.id,found.id)
283
+ end
284
+
285
+
286
+
287
+ def test_mediaitems
288
+ NodeTest.set_up
289
+ node= Node.fill_new_node('david', 'my new post', 'hello world')
290
+ node.save
291
+ node2= Node.fill_new_node('david2', 'my new post2', 'hello world2')
292
+ node2.save
293
+
294
+ node_album=Album.new
295
+ node_album.guid=node.album_guid
296
+ node_album.user_name='david'
297
+ node_album.save
298
+
299
+ mediaitem1=Mediaitem.new
300
+ mediaitem1.title="mediaitem1"
301
+ mediaitem1.save!
302
+ mediaitem2=Mediaitem.new
303
+ mediaitem2.title="mediaitem2"
304
+ mediaitem2.save!
305
+ mediaitem3=Mediaitem.new
306
+ mediaitem3.title="mediaitem3"
307
+ mediaitem3.save!
308
+
309
+ node_album.connect_mediaitem(mediaitem1)
310
+ NotRelational::RepositoryFactory.instance.pause()
311
+ found=node.mediaitems
312
+ assert(found!=nil)
313
+
314
+ assert_equal(1,found.length)
315
+ assert_equal(mediaitem1.id,found[0].id)
316
+
317
+ node_album2=Album.new
318
+ node_album2.guid=node2.album_guid
319
+ node_album2.user_name='david2'
320
+ node_album2.save
321
+
322
+ node_album.connect_mediaitem(mediaitem2)
323
+ node_album2.connect_mediaitem(mediaitem3)
324
+ NotRelational::RepositoryFactory.instance.pause()
325
+ found=node.mediaitems
326
+ assert(found!=nil)
327
+ assert_equal(2,found.length)
328
+
329
+ found=node2.mediaitems
330
+ assert(found!=nil)
331
+ assert_equal(1,found.length)
332
+ assert_equal(mediaitem3.id,found[0].id)
333
+
334
+ end
335
+ def test_duh
336
+ NodeTest.set_up
337
+ node= Node.fill_new_node('david', 'dogs', 'cats')
338
+ node.publicRead=true
339
+ node.isChannel=true
340
+ node.save
341
+ NotRelational::RepositoryFactory.instance.pause()
342
+
343
+ found=Node.find_by_public_channel(true,true,:order_by =>:id)
344
+ assert_equal(1,found.length)
345
+ assert_equal(node.id,found[0].id)
346
+
347
+
348
+
349
+ end
350
+ def test_segmented_media
351
+ NodeTest.set_up
352
+ node= Node.fill_new_node('david', 'my new post', 'hello world')
353
+ node.save
354
+
355
+ node2= Node.fill_new_node('david2', 'my new post2', 'hello world2')
356
+ node2.save
357
+
358
+ node_album=Album.new
359
+ node_album.guid=node.album_guid
360
+ node_album.user_name='david'
361
+ node_album.save
362
+
363
+ mediaitem1=Mediaitem.new
364
+ mediaitem1.title="mediaitem1"
365
+ mediaitem1.HasVideo=true
366
+ mediaitem1.save!
367
+
368
+ mediaitem2=Mediaitem.new
369
+ mediaitem2.title="mediaitem1"
370
+ mediaitem2.HasVideo=true
371
+ mediaitem2.save!
372
+
373
+ mediaitem3=Mediaitem.new
374
+ mediaitem3.title="mediaitem1"
375
+ mediaitem3.HasAudio=true
376
+ mediaitem3.save!
377
+
378
+ mediaitem4=Mediaitem.new
379
+ mediaitem4.title="mediaitem1"
380
+ mediaitem4.HasImage=true
381
+ mediaitem4.save!
382
+
383
+ #no flag means image
384
+ mediaitem5=Mediaitem.new
385
+ mediaitem5.title="mediaitem1"
386
+ mediaitem5.save!
387
+
388
+ node_album.connect_mediaitem(mediaitem1)
389
+ node_album.connect_mediaitem(mediaitem2)
390
+ node_album.connect_mediaitem(mediaitem3)
391
+ node_album.connect_mediaitem(mediaitem4)
392
+ node_album.connect_mediaitem(mediaitem5)
393
+ NotRelational::RepositoryFactory.instance.pause()
394
+ found=node.video_media
395
+ assert(found!=nil)
396
+ assert_equal(2,found.length)
397
+
398
+ found=node.still_image_media
399
+ assert(found!=nil)
400
+ assert_equal(2,found.length)
401
+
402
+ found=node.audio_media
403
+ assert(found!=nil)
404
+ assert_equal(1,found.length)
405
+
406
+
407
+ end
408
+ def test_recent_public_for_user
409
+ joe=User.find('joe')
410
+ if joe
411
+ joe.destroy
412
+ end
413
+ NodeTest.set_up
414
+
415
+ user=User.new
416
+ user.login='joe'
417
+ user.save!
418
+
419
+ node_x= Node.fill_new_node('222', 'title222', 'content222')
420
+ node_x.save
421
+ node1= Node.fill_new_node('joe', 'title', 'content')
422
+ node1.save
423
+ node2= Node.fill_new_node('joe', 'title', 'content')
424
+ node2.isChannel=true
425
+ node2.save
426
+ node3= Node.fill_new_node('joe', 'title', 'content')
427
+ node3.publicRead=false
428
+ node3.save
429
+ NotRelational::RepositoryFactory.instance.clear_session_cache
430
+ found=Node.recent_public_for_user('joe', 50)
431
+ assert_equal(1,found .length)
432
+ assert_equal(node1.id,found[0].id)
433
+ found=Node.recent_public_for_user('Joe', 50)
434
+ assert_equal(1,found.length)
435
+ assert_equal(node1.id,found[0].id)
436
+
437
+ found=Node.recent_for_user('Joe', 50)
438
+ assert_equal(3,found.length)
439
+
440
+ found=Node.channels_for_user('Joe', 50)
441
+ assert_equal(1,found.length)
442
+ assert_equal(node2.id,found[0].id)
443
+
444
+
445
+ end
446
+ # def test_trackers
447
+ # User.find(:all).each do |old_user |
448
+ # old_user.destroy
449
+ #
450
+ # end
451
+ # Node.find(:all).each do |old_node |
452
+ # old_node.destroy
453
+ # end
454
+ #
455
+ # user = User.new(
456
+ # :login=>'aaa',
457
+ # :last_login => Time.now.gmtime,
458
+ # :created_at => Time.now.gmtime,
459
+ # :password=>"guid2",
460
+ # :profile_mediaitem_guid=>"duh1"
461
+ # )
462
+ #
463
+ # user.save
464
+ # parent_node=Node.fill_new_node(user.login, "my title", 'hello world')
465
+ # user.add_to_nodes(parent_node)
466
+ #
467
+ # node= Node.fill_new_node(user.login, "my title", 'hello world')
468
+ # user.add_to_nodes(node)
469
+ # user.save!
470
+ # parent_node.add_to_child_nodes(node)
471
+ # parent_node.save!
472
+ # found=user.nodes
473
+ # assert_equal(2,found.length)
474
+ #
475
+ #
476
+ # user=User.find(user.login)
477
+ #
478
+ # found=user.nodes
479
+ # assert_equal(2,found.length)
480
+ #
481
+ #
482
+ #
483
+ # parent_node=Node.find(parent_node.id)
484
+ #
485
+ # found=parent_node.child_nodes
486
+ # assert_equal(1,found.length)
487
+ #
488
+ # assert_equal(node.id,found[0].id)
489
+ # end
490
+ end
@@ -0,0 +1,219 @@
1
+
2
+ require 'rubygems'
3
+ require 'test/unit'
4
+ $:.push(File.dirname(__FILE__) +'/../../test/models')
5
+ $:.push(File.dirname(__FILE__) +'/../../lib/not_relational')
6
+ require File.dirname(__FILE__) +'/../../lib/not_relational/domain_model.rb'
7
+ require File.dirname(__FILE__) +'/../../lib/not_relational/attribute_range.rb'
8
+ require File.dirname(__FILE__) +'/../../lib/not_relational/repository.rb'
9
+ require File.dirname(__FILE__) +'/../../lib/not_relational/memory_repository.rb'
10
+ require File.dirname(__FILE__) +'/../../test/models/node.rb'
11
+ require File.dirname(__FILE__) +'/../../test/models/user.rb'
12
+ require File.dirname(__FILE__) +'/../../test/models/place.rb'
13
+ require File.dirname(__FILE__) +'/../../test/models/album.rb'
14
+ require File.dirname(__FILE__) +'/../../test/models/media_item.rb'
15
+ require File.dirname(__FILE__) +'/../../test/models/media_file.rb'
16
+ require File.dirname(__FILE__) +'/../../test/models/tag.rb'
17
+ require File.dirname(__FILE__) +'/../../test/models/rating.rb'
18
+ require File.dirname(__FILE__) +'/../../test/models/comment.rb'
19
+
20
+ ENV['not_relational_ENV']='testing'
21
+
22
+ class PlaceTest < Test::Unit::TestCase
23
+ def PlaceTest.set_up
24
+ Node.find(:all).each do |node|
25
+ node.destroy
26
+ end
27
+ Place.find(:all).each do |node|
28
+ node.destroy
29
+ end
30
+ Album.find(:all).each do |node|
31
+ node.destroy
32
+ end
33
+ Mediaitem.find(:all).each do |node|
34
+ node.destroy
35
+ end
36
+ User.find(:all).each do |node|
37
+ node.destroy
38
+ end
39
+
40
+ end
41
+ def test_get_nearby_features(zoom_level)
42
+ PlaceTest.set_up
43
+ place= Place.new
44
+ place.longitude=50
45
+ place.latitude=-50
46
+ place.address=place.location.to_address
47
+ place.save
48
+ place2= Place.new
49
+ place2.longitude=51
50
+ place2.latitude=-51
51
+ place2.address=place2.location.to_address
52
+ place2.save
53
+ place2= Place.new
54
+ place2.longitude=80
55
+ place2.latitude=-80
56
+ place2.address=place2.location.to_address
57
+ place2.save
58
+ results=place.find_near(Geo::Location.new(-51,51),4)
59
+ assert_equal(2,results.length)
60
+
61
+ results=place.find_near(Geo::Location.new(-51,51),12)
62
+ assert_equal(1,results.length)
63
+
64
+ end
65
+ def test_get_nearby_nodes(zoom_level)
66
+ PlaceTest.set_up
67
+
68
+ node=Node.fill_new_node('222', 'title222', 'content222')
69
+ node.longitude=-10
70
+ node.latitude=10
71
+ node.address=node.location.to_address
72
+ node.save!
73
+
74
+ node=Node.fill_new_node('222', 'title222', 'content222')
75
+ node.name='Paris'
76
+ node.longitude=-11
77
+ node.latitude=11
78
+ node.address=node.location.to_address
79
+ node.save!
80
+
81
+ node=Node.fill_new_node('222', 'title222', 'content222')
82
+ node.name='Paris'
83
+ node.longitude=-50
84
+ node.latitude=50
85
+ node.address=node.location.to_address
86
+ node.save!
87
+
88
+ place= Place.new
89
+
90
+ place.longitude=-10
91
+ place.latitude=10
92
+ place.address=node1.location.to_address
93
+ place.save
94
+
95
+
96
+ results=place.get_nearby_nodes(4)
97
+ assert_equal(2,results.length)
98
+
99
+ results=node1.get_nearby_places(12)
100
+ assert_equal(1,results.length)
101
+ end
102
+
103
+ def test_Album
104
+ PlaceTest.set_up
105
+ node= Place.new
106
+ node.save
107
+ node_album=Album.new
108
+ node_album.guid=node.album_guid
109
+ node_album.save
110
+
111
+ found=node.Album
112
+ assert(found!=nil)
113
+ assert_equal(node_album.id,found.id)
114
+ end
115
+ def test_mediaitems
116
+ PlaceTest.set_up
117
+
118
+ node= Place.new
119
+ node.save
120
+ node2= Place.new
121
+ node2.save
122
+
123
+ node_album=Album.new
124
+ node_album.guid=node.album_guid
125
+ node_album.save
126
+
127
+ mediaitem1=Mediaitem.new
128
+ mediaitem1.title="mediaitem1"
129
+ mediaitem1.save!
130
+ mediaitem2=Mediaitem.new
131
+ mediaitem2.title="mediaitem2"
132
+ mediaitem2.save!
133
+ mediaitem3=Mediaitem.new
134
+ mediaitem3.title="mediaitem3"
135
+ mediaitem3.save!
136
+
137
+ node_album.connect_mediaitem(mediaitem1)
138
+
139
+ found=node.mediaitems
140
+ assert(found!=nil)
141
+
142
+ assert_equal(1,found.length)
143
+ assert_equal(mediaitem1.id,found[0].id)
144
+
145
+ node_album2=Album.new
146
+ node_album2.guid=node2.album_guid
147
+ node_album2.user_name='david2'
148
+ node_album2.save
149
+
150
+ node_album.connect_mediaitem(mediaitem2)
151
+ node_album2.connect_mediaitem(mediaitem3)
152
+
153
+ found=node.mediaitems
154
+ assert(found!=nil)
155
+ assert_equal(2,found.length)
156
+
157
+ found=node2.mediaitems
158
+ assert(found!=nil)
159
+ assert_equal(1,found.length)
160
+ assert_equal(mediaitem3.id,found[0].id)
161
+ end
162
+
163
+ def test_segmented_media
164
+ PlaceTest.set_up
165
+ node= Place.new
166
+ node.save
167
+
168
+ node2= Place.new
169
+ node2.save
170
+
171
+ node_album=Album.new
172
+ node_album.guid=node.album_guid
173
+ node_album.user_name='david'
174
+ node_album.save
175
+
176
+ mediaitem1=Mediaitem.new
177
+ mediaitem1.title="mediaitem1"
178
+ mediaitem1.HasVideo=true
179
+ mediaitem1.save!
180
+
181
+ mediaitem2=Mediaitem.new
182
+ mediaitem2.title="mediaitem1"
183
+ mediaitem2.HasVideo=true
184
+ mediaitem2.save!
185
+
186
+ mediaitem3=Mediaitem.new
187
+ mediaitem3.title="mediaitem1"
188
+ mediaitem3.HasAudio=true
189
+ mediaitem3.save!
190
+
191
+ mediaitem4=Mediaitem.new
192
+ mediaitem4.title="mediaitem1"
193
+ mediaitem4.HasImage=true
194
+ mediaitem4.save!
195
+
196
+ #no flag means image
197
+ mediaitem5=Mediaitem.new
198
+ mediaitem5.title="mediaitem1"
199
+ mediaitem5.save!
200
+
201
+ node_album.connect_mediaitem(mediaitem1)
202
+ node_album.connect_mediaitem(mediaitem2)
203
+ node_album.connect_mediaitem(mediaitem3)
204
+ node_album.connect_mediaitem(mediaitem4)
205
+ node_album.connect_mediaitem(mediaitem5)
206
+
207
+ found=node.video_media
208
+ assert(found!=nil)
209
+ assert_equal(2,found.length)
210
+
211
+ found=node.still_image_media
212
+ assert(found!=nil)
213
+ assert_equal(2,found.length)
214
+
215
+ found=node.audio_media
216
+ assert(found!=nil)
217
+ assert_equal(1,found.length)
218
+ end
219
+ end