mongoid_geospatial 2.0.0 → 2.2.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 (41) hide show
  1. data/Gemfile +2 -1
  2. data/README.md +84 -60
  3. data/lib/mongoid_geospatial.rb +3 -7
  4. data/lib/mongoid_geospatial/{geospatial → extensions}/core_ext.rb +0 -0
  5. data/lib/mongoid_geospatial/field_option.rb +3 -4
  6. data/lib/mongoid_geospatial/fields/geometry_field.rb +34 -0
  7. data/lib/mongoid_geospatial/fields/line_string.rb +5 -7
  8. data/lib/mongoid_geospatial/fields/point.rb +18 -33
  9. data/lib/mongoid_geospatial/fields/polygon.rb +6 -14
  10. data/lib/mongoid_geospatial/geospatial.rb +20 -25
  11. data/lib/mongoid_geospatial/version.rb +1 -1
  12. data/lib/mongoid_geospatial/wrappers/georuby.rb +28 -0
  13. data/lib/mongoid_geospatial/wrappers/rgeo.rb +32 -0
  14. data/spec/models/farm.rb +5 -2
  15. data/spec/models/person.rb +4 -14
  16. data/spec/models/phone.rb +1 -3
  17. data/spec/mongoid_geospatial/extensions/core_ext_spec.rb +20 -0
  18. data/spec/mongoid_geospatial/field_option_spec.rb +11 -0
  19. data/spec/mongoid_geospatial/fields/line_string_spec.rb +40 -0
  20. data/spec/mongoid_geospatial/fields/point_spec.rb +136 -10
  21. data/spec/mongoid_geospatial/fields/polygon_spec.rb +75 -0
  22. data/spec/mongoid_geospatial/geospatial_spec.rb +88 -3
  23. data/spec/mongoid_geospatial/wrappers/rgeo_spec.rb +43 -0
  24. data/spec/spec_helper.rb +5 -21
  25. metadata +14 -26
  26. data/lib/mongoid_geospatial/contextual/mongo.rb +0 -118
  27. data/lib/mongoid_geospatial/criteria.rb +0 -10
  28. data/lib/mongoid_geospatial/criterion/complex.rb +0 -26
  29. data/lib/mongoid_geospatial/criterion/inclusion.rb +0 -14
  30. data/lib/mongoid_geospatial/criterion/near_spatial.rb +0 -52
  31. data/lib/mongoid_geospatial/criterion/within_spatial.rb +0 -62
  32. data/lib/mongoid_geospatial/extensions/symbol.rb +0 -46
  33. data/lib/mongoid_geospatial/finders.rb +0 -5
  34. data/lib/mongoid_geospatial/geospatial/geo_near_results.rb +0 -140
  35. data/spec/mongoid_geospatial/contextual/mongo_spec.rb +0 -135
  36. data/spec/mongoid_geospatial/criterion/complex_spec.rb +0 -15
  37. data/spec/mongoid_geospatial/criterion/inclusion_spec.rb +0 -375
  38. data/spec/mongoid_geospatial/criterion/near_spatial_spec.rb +0 -39
  39. data/spec/mongoid_geospatial/criterion/within_spatial_spec.rb +0 -54
  40. data/spec/mongoid_geospatial/geospatial/geo_near_results_spec.rb +0 -78
  41. data/spec/mongoid_geospatial/mongoid_geospatial_spec.rb +0 -83
@@ -1,78 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Geospatial::GeoNearResults do
4
- before do
5
- Bar.delete_all
6
- Bar.create_indexes
7
-
8
- 50.times do |i|
9
- Bar.create!(:name => i.to_s, :location => [rand(358)-179,rand(358)-179])
10
- end
11
- end
12
-
13
-
14
-
15
- context ":paginator :array" do
16
- let(:bars) { Bar.geo_near([1,1]) }
17
- let(:sorted_bars) {
18
- bars = Bar.geo_near([1,1])
19
- bars.sort_by! {|b| b.name.to_i}
20
- bars
21
- }
22
- [nil,1,2].each do |page|
23
- it "page=#{page} should have 25" do
24
- bars.page(page).size.should == 25
25
- end
26
- end
27
-
28
- [1,2].each do |page|
29
- it "modified result should keep order after pagination" do
30
- sorted_bars.page(page).should == sorted_bars.slice((page-1)*25,25)
31
- end
32
- end
33
-
34
- { nil => 25, 20 => 20 , 30 => 20, 50 => 0}.each do |per, total|
35
- it "page=2 per=#{per} should have #{total}" do
36
- bars.per(per).page(2).size.should == total
37
- bars.page(2).per(per).size.should == total
38
- end
39
- end
40
-
41
- it "page=3 should have 0" do
42
- bars.page(3).size.should == 0
43
- end
44
-
45
- it "per=5" do
46
- bars.per(5).size.should == 5
47
- end
48
-
49
- it "page=10 per=5" do
50
- bars.per(5).page(10).should == bars[45..50]
51
- end
52
-
53
- end
54
-
55
- context ":paginator :kaminari" do
56
- let!(:near) {Bar.geo_near([1,1]).page(1)}
57
- it "should have current_page" do
58
- near.current_page.should == 1
59
- end
60
-
61
- it "should have num_pages" do
62
- near.total_entries.should == 50
63
- near.num_pages.should == 2
64
- end
65
-
66
- it "should have limit_value" do
67
- near.limit_value.should == 25
68
- end
69
- end
70
-
71
-
72
- context ":paginator :num_pages" do
73
- it "when total=55 per=10 ,num_pages should be 6" do
74
- 5.times { |i| Bar.create(:name => i.to_s, :location => [rand(358)-179,rand(358)-179]) }
75
- Bar.geo_near([1,1]).per(10).num_pages.should == 6
76
- end
77
- end
78
- end
@@ -1,83 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Geospatial do
4
-
5
- it "should not inferfer with mongoid" do
6
- Bar.create!(name: "Moe's")
7
- Bar.count.should eql(1)
8
- end
9
-
10
- describe "fields" do
11
-
12
- it "should have a field mapped as point" do
13
- bar = Bar.create!(location: [5,5])
14
- bar.location.should be_a RGeo::Geographic::SphericalPointImpl
15
- end
16
-
17
- it "should support a field mapped as linestring" do
18
- river = River.create!(source: [[5,5],[6,5],[6,6],[5,6]])
19
- river.source.should be_a RGeo::Geographic::SphericalPolygonImpl
20
- end
21
-
22
- it "should support a field mapped as polygon" do
23
- farm = Farm.create!(area: [[5,5],[6,5],[6,6],[5,6]])
24
- farm.area.should be_a RGeo::Geographic::SphericalPolygonImpl
25
- end
26
-
27
-
28
- it "should accept an RGeo object" do
29
- point = RGeo::Geographic.spherical_factory.point 1, 2
30
- bar = Bar.create!(location: point)
31
- bar.location.x.should be_within(0.1).of(1)
32
- bar.location.y.should be_within(0.1).of(2)
33
- end
34
- end
35
-
36
- describe "methods" do
37
-
38
- it "should have a .to_a" do
39
- bar = Bar.create!(location: [3,2])
40
- bar.location.to_a[0..1].should == [3.0, 2.0]
41
- end
42
-
43
- it "should have an array [] accessor" do
44
- bar = Bar.create!(location: [3,2])
45
- bar.location[0].should == 3.0
46
- end
47
-
48
- it "should have an ActiveModel symbol accessor" do
49
- bar = Bar.create!(location: [3,2])
50
- bar[:location].should == [3,2]
51
- end
52
-
53
- end
54
-
55
-
56
- it "should calculate distance between points" do
57
- bar = Bar.create!(location: [5,5])
58
- bar2 = Bar.create!(location: [15,15])
59
- bar.location.distance(bar2.location).should be_within(1).of(1561283.8)
60
- end
61
-
62
- it "should calculate distance between points miles" do
63
- pending
64
- bar = Bar.create!(location: [5,5])
65
- bar2 = Bar.create!(location: [15,15])
66
- bar.location.distance(bar2.location).should be_within(1).of(1561283.8)
67
- end
68
-
69
- it "should calculate 3d distances by default" do
70
- bar = Bar.create! location: [-73.77694444, 40.63861111 ]
71
- bar2 = Bar.create! location: [-118.40, 33.94] #,:unit=>:mi, :spherical => true)
72
- bar.location.distance(bar2.location).to_i.should be_within(1).of(2469)
73
- end
74
-
75
- it "should have a nice simple way to ovewrite geo factory" do
76
- pending
77
- bar = Bar.create!(location: [5,5])
78
- bar2 = Bar.create!(location: [15,15])
79
- bar.location.distance(bar2.location).should be_within(1).of(1561283.8)
80
- end
81
-
82
-
83
- end