gmaps4rails 2.0.0.pre → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (184) hide show
  1. data/.travis.yml +2 -4
  2. data/Gemfile +5 -1
  3. data/Gemfile.lock +31 -113
  4. data/README.rdoc +53 -70
  5. data/Rakefile +21 -1
  6. data/gmaps4rails.gemspec +4 -19
  7. data/js_compilation/gmaps_google.js +961 -0
  8. data/lib/generators/gmaps4rails/copy_coffee_generator.rb +14 -0
  9. data/lib/generators/gmaps4rails/copy_js_generator.rb +15 -0
  10. data/lib/gmaps4rails.rb +12 -22
  11. data/lib/gmaps4rails/markers_builder.rb +74 -0
  12. data/lib/gmaps4rails/rails/engine.rb +6 -0
  13. data/lib/gmaps4rails/rails/railtie.rb +6 -0
  14. data/lib/gmaps4rails/version.rb +2 -2
  15. data/script/compile_coffee_files.rb +19 -0
  16. data/script/gmaps4rails.rake +7 -0
  17. data/spec/javascripts/google/builders/marker_spec.js +96 -0
  18. data/spec/javascripts/helpers/SpecHelper.js +101 -0
  19. data/spec/javascripts/helpers/matchers.js +12 -0
  20. data/spec/javascripts/helpers/underscore.js +6 -0
  21. data/spec/javascripts/objects/handler_spec.js +320 -0
  22. data/spec/javascripts/support/jasmine.yml +86 -0
  23. data/spec/javascripts/support/jasmine_helper.rb +11 -0
  24. data/spec/lib/base_spec.rb +10 -52
  25. data/spec/lib/markers_builder_spec.rb +49 -0
  26. data/spec/spec_helper.rb +1 -25
  27. data/vendor/assets/javascripts/gmaps/base.coffee +16 -0
  28. data/vendor/assets/javascripts/gmaps/base/base.coffee +17 -0
  29. data/vendor/assets/javascripts/gmaps/google.coffee +3 -0
  30. data/vendor/assets/javascripts/gmaps/google/builders/bound.coffee +6 -0
  31. data/vendor/assets/javascripts/gmaps/google/builders/circle.coffee +21 -0
  32. data/vendor/assets/javascripts/gmaps/google/builders/clusterer.coffee +6 -0
  33. data/vendor/assets/javascripts/gmaps/google/builders/kml.coffee +17 -0
  34. data/vendor/assets/javascripts/gmaps/google/builders/map.coffee +27 -0
  35. data/vendor/assets/javascripts/gmaps/google/builders/marker.coffee +100 -0
  36. data/vendor/assets/javascripts/gmaps/google/builders/polygon.coffee +24 -0
  37. data/vendor/assets/javascripts/gmaps/google/builders/polyline.coffee +24 -0
  38. data/vendor/assets/javascripts/gmaps/google/objects/bound.coffee +13 -0
  39. data/vendor/assets/javascripts/gmaps/google/objects/circle.coffee +9 -0
  40. data/vendor/assets/javascripts/gmaps/google/objects/clusterer.coffee +13 -0
  41. data/vendor/assets/javascripts/gmaps/google/objects/common.coffee +23 -0
  42. data/vendor/assets/javascripts/gmaps/google/objects/kml.coffee +15 -0
  43. data/vendor/assets/javascripts/gmaps/google/objects/map.coffee +19 -0
  44. data/vendor/assets/javascripts/gmaps/google/objects/marker.coffee +11 -0
  45. data/vendor/assets/javascripts/gmaps/google/objects/polygon.coffee +8 -0
  46. data/vendor/assets/javascripts/gmaps/google/objects/polyline.coffee +8 -0
  47. data/vendor/assets/javascripts/gmaps/google/primitives.coffee +43 -0
  48. data/vendor/assets/javascripts/gmaps/objects/base_builder.coffee +20 -0
  49. data/vendor/assets/javascripts/gmaps/objects/builder.coffee +12 -0
  50. data/vendor/assets/javascripts/gmaps/objects/handler.coffee +153 -0
  51. data/vendor/assets/javascripts/gmaps/objects/null_clusterer.coffee +4 -0
  52. metadata +66 -299
  53. data/Guardfile.old +0 -24
  54. data/app/views/gmaps4rails/_gmaps4rails.html.erb +0 -20
  55. data/lib/generators/gmaps4rails/install_generator.rb +0 -43
  56. data/lib/generators/templates/README +0 -2
  57. data/lib/gmaps4rails/acts_as_gmappable.rb +0 -54
  58. data/lib/gmaps4rails/api_wrappers/base_net_methods.rb +0 -40
  59. data/lib/gmaps4rails/api_wrappers/direction.rb +0 -87
  60. data/lib/gmaps4rails/api_wrappers/geocoder.rb +0 -54
  61. data/lib/gmaps4rails/api_wrappers/places.rb +0 -74
  62. data/lib/gmaps4rails/base.rb +0 -126
  63. data/lib/gmaps4rails/extensions/enumerable.rb +0 -14
  64. data/lib/gmaps4rails/extensions/hash.rb +0 -9
  65. data/lib/gmaps4rails/helper/gmaps4rails_helper.rb +0 -33
  66. data/lib/gmaps4rails/js_builder.rb +0 -154
  67. data/lib/gmaps4rails/json_builder.rb +0 -140
  68. data/lib/gmaps4rails/model_handler.rb +0 -101
  69. data/lib/gmaps4rails/view_helper.rb +0 -172
  70. data/lib/tasks/jasmine.rake +0 -8
  71. data/public/javascripts/gmaps4rails/all.js +0 -2144
  72. data/public/javascripts/gmaps4rails/base.js +0 -792
  73. data/public/javascripts/gmaps4rails/google.js +0 -556
  74. data/public/javascripts/gmaps4rails/openlayers.js +0 -377
  75. data/public/stylesheets/gmaps4rails.css +0 -24
  76. data/spec/dummy/.gitignore +0 -3
  77. data/spec/dummy/.rspec +0 -1
  78. data/spec/dummy/README.rdoc +0 -261
  79. data/spec/dummy/Rakefile +0 -7
  80. data/spec/dummy/app/assets/javascripts/application.js +0 -18
  81. data/spec/dummy/app/assets/stylesheets/application.css +0 -15
  82. data/spec/dummy/app/assets/stylesheets/gmaps4rails.css +0 -24
  83. data/spec/dummy/app/controllers/application_controller.rb +0 -3
  84. data/spec/dummy/app/controllers/users_controller.rb +0 -105
  85. data/spec/dummy/app/helpers/application_helper.rb +0 -2
  86. data/spec/dummy/app/mailers/.gitkeep +0 -0
  87. data/spec/dummy/app/models/.gitkeep +0 -0
  88. data/spec/dummy/app/models/place.rb +0 -16
  89. data/spec/dummy/app/models/user.rb +0 -12
  90. data/spec/dummy/app/views/layouts/application.html.erb +0 -17
  91. data/spec/dummy/app/views/users/_form.html.erb +0 -37
  92. data/spec/dummy/app/views/users/edit.html.erb +0 -6
  93. data/spec/dummy/app/views/users/index.html.erb +0 -268
  94. data/spec/dummy/app/views/users/new.html.erb +0 -5
  95. data/spec/dummy/app/views/users/show.html.erb +0 -30
  96. data/spec/dummy/config.ru +0 -4
  97. data/spec/dummy/config/application.rb +0 -62
  98. data/spec/dummy/config/boot.rb +0 -10
  99. data/spec/dummy/config/database.yml +0 -25
  100. data/spec/dummy/config/environment.rb +0 -5
  101. data/spec/dummy/config/environments/development.rb +0 -37
  102. data/spec/dummy/config/environments/production.rb +0 -67
  103. data/spec/dummy/config/environments/test.rb +0 -37
  104. data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -7
  105. data/spec/dummy/config/initializers/gmaps4rails.rb +0 -1
  106. data/spec/dummy/config/initializers/inflections.rb +0 -15
  107. data/spec/dummy/config/initializers/mime_types.rb +0 -5
  108. data/spec/dummy/config/initializers/secret_token.rb +0 -7
  109. data/spec/dummy/config/initializers/session_store.rb +0 -8
  110. data/spec/dummy/config/initializers/wrap_parameters.rb +0 -14
  111. data/spec/dummy/config/locales/en.yml +0 -5
  112. data/spec/dummy/config/routes.rb +0 -60
  113. data/spec/dummy/db/migrate/20120408170155_create_users.rb +0 -16
  114. data/spec/dummy/db/schema.rb +0 -29
  115. data/spec/dummy/lib/assets/.gitkeep +0 -0
  116. data/spec/dummy/log/.gitkeep +0 -0
  117. data/spec/dummy/public/404.html +0 -26
  118. data/spec/dummy/public/422.html +0 -26
  119. data/spec/dummy/public/500.html +0 -25
  120. data/spec/dummy/public/favicon.ico +0 -0
  121. data/spec/dummy/public/javascripts/Player.js +0 -22
  122. data/spec/dummy/public/javascripts/Song.js +0 -7
  123. data/spec/dummy/public/logo.png +0 -0
  124. data/spec/dummy/script/rails +0 -6
  125. data/spec/factories/place_factory.rb +0 -16
  126. data/spec/factories/user_factory.rb +0 -23
  127. data/spec/fixtures/google_direction_valid.json +0 -65
  128. data/spec/fixtures/google_geocoding_toulon_france.json +0 -58
  129. data/spec/fixtures/google_places_valid.json +0 -45
  130. data/spec/fixtures/google_wrong_geocoding.json +0 -4
  131. data/spec/launchers/all_but_requests.rb +0 -0
  132. data/spec/launchers/all_specs.rb +0 -0
  133. data/spec/launchers/requests.rb +0 -0
  134. data/spec/lib/direction_spec.rb +0 -53
  135. data/spec/lib/geocoder_spec.rb +0 -46
  136. data/spec/lib/js_builder_spec.rb +0 -134
  137. data/spec/lib/json_builder_spec.rb +0 -232
  138. data/spec/lib/places_spec.rb +0 -25
  139. data/spec/models/place_spec.rb +0 -39
  140. data/spec/models/user_spec.rb +0 -187
  141. data/spec/support/geocoding.rb +0 -40
  142. data/spec/support/matchers.rb +0 -73
  143. data/todo +0 -0
  144. data/vendor/assets/javascripts/gmaps4rails/all.js +0 -1
  145. data/vendor/assets/javascripts/gmaps4rails/base.coffee +0 -1
  146. data/vendor/assets/javascripts/gmaps4rails/base/common.coffee +0 -43
  147. data/vendor/assets/javascripts/gmaps4rails/base/configuration.coffee +0 -7
  148. data/vendor/assets/javascripts/gmaps4rails/base/gmaps.coffee +0 -13
  149. data/vendor/assets/javascripts/gmaps4rails/base/interfaces/basic_interface.coffee +0 -15
  150. data/vendor/assets/javascripts/gmaps4rails/base/interfaces/controller_interface.coffee +0 -15
  151. data/vendor/assets/javascripts/gmaps4rails/base/interfaces/map_interface.coffee +0 -27
  152. data/vendor/assets/javascripts/gmaps4rails/base/interfaces/marker_interface.coffee +0 -15
  153. data/vendor/assets/javascripts/gmaps4rails/base/main.coffee +0 -124
  154. data/vendor/assets/javascripts/gmaps4rails/base/main_controller_extensions/circle_controller.coffee +0 -29
  155. data/vendor/assets/javascripts/gmaps4rails/base/main_controller_extensions/kml_controller.coffee +0 -5
  156. data/vendor/assets/javascripts/gmaps4rails/base/main_controller_extensions/marker_controller.coffee +0 -76
  157. data/vendor/assets/javascripts/gmaps4rails/base/main_controller_extensions/polygon_controller.coffee +0 -29
  158. data/vendor/assets/javascripts/gmaps4rails/base/main_controller_extensions/polyline_controller.coffee +0 -29
  159. data/vendor/assets/javascripts/gmaps4rails/base/objects/circle.coffee +0 -12
  160. data/vendor/assets/javascripts/gmaps4rails/base/objects/kml.coffee +0 -8
  161. data/vendor/assets/javascripts/gmaps4rails/base/objects/map.coffee +0 -62
  162. data/vendor/assets/javascripts/gmaps4rails/base/objects/marker.coffee +0 -24
  163. data/vendor/assets/javascripts/gmaps4rails/base/objects/polygon.coffee +0 -11
  164. data/vendor/assets/javascripts/gmaps4rails/base/objects/polyline.coffee +0 -11
  165. data/vendor/assets/javascripts/gmaps4rails/bing.coffee +0 -1
  166. data/vendor/assets/javascripts/gmaps4rails/bing/main.coffee +0 -29
  167. data/vendor/assets/javascripts/gmaps4rails/bing/objects/map.coffee +0 -63
  168. data/vendor/assets/javascripts/gmaps4rails/bing/objects/marker.coffee +0 -78
  169. data/vendor/assets/javascripts/gmaps4rails/bing/shared.coffee +0 -20
  170. data/vendor/assets/javascripts/gmaps4rails/google.coffee +0 -1
  171. data/vendor/assets/javascripts/gmaps4rails/google/main.coffee +0 -47
  172. data/vendor/assets/javascripts/gmaps4rails/google/objects/circle.coffee +0 -38
  173. data/vendor/assets/javascripts/gmaps4rails/google/objects/kml.coffee +0 -16
  174. data/vendor/assets/javascripts/gmaps4rails/google/objects/map.coffee +0 -71
  175. data/vendor/assets/javascripts/gmaps4rails/google/objects/marker.coffee +0 -114
  176. data/vendor/assets/javascripts/gmaps4rails/google/objects/polygon.coffee +0 -38
  177. data/vendor/assets/javascripts/gmaps4rails/google/objects/polyline.coffee +0 -49
  178. data/vendor/assets/javascripts/gmaps4rails/google/shared.coffee +0 -27
  179. data/vendor/assets/javascripts/gmaps4rails/openlayers.coffee +0 -1
  180. data/vendor/assets/javascripts/gmaps4rails/openlayers/main.coffee +0 -138
  181. data/vendor/assets/javascripts/gmaps4rails/openlayers/objects/map.coffee +0 -49
  182. data/vendor/assets/javascripts/gmaps4rails/openlayers/objects/marker.coffee +0 -68
  183. data/vendor/assets/javascripts/gmaps4rails/openlayers/objects/polyline.coffee +0 -39
  184. data/vendor/assets/javascripts/gmaps4rails/openlayers/shared.coffee +0 -19
@@ -1,187 +0,0 @@
1
- require 'spec_helper'
2
-
3
- include Geocoding
4
-
5
- describe Gmaps4rails::ActsAsGmappable do
6
-
7
- let(:user) { Factory(:user) }
8
- let(:invalid_user) { FactoryGirl.build(:invalid_user) }
9
-
10
- before(:all) do
11
- set_gmaps4rails_options!
12
- end
13
-
14
- before(:each) do
15
- Geocoding.stub_geocoding
16
- end
17
-
18
- context "standard configuration, valid user" do
19
-
20
- it "should have a geocoded position" do
21
- user.should have_same_position_as TOULON
22
- end
23
-
24
- it "should set boolean to true once user is created" do
25
- user.gmaps.should be_true
26
- end
27
-
28
- context "process_geocoding" do
29
- context "Proc" do
30
- it "should prevent geocoding when returns false" do
31
- user.instance_eval do
32
- def gmaps4rails_options
33
- DEFAULT_CONFIG_HASH.merge({ :process_geocoding => lambda {|user| false } })
34
- end
35
- end
36
- Gmaps4rails.should_not_receive(:geocode)
37
- user.update_attributes(:address => "Strasbourg, france")
38
- end
39
-
40
- context "geocoding required" do
41
- it "should trigger the geocoding" do
42
- user.instance_eval do
43
- def gmaps4rails_options
44
- DEFAULT_CONFIG_HASH.merge({ :process_geocoding => lambda {|user| true } })
45
- end
46
- end
47
- Gmaps4rails.should_receive(:geocode)
48
- user.update_attributes(:address => "Strasbourg, france")
49
- end
50
-
51
- it "should update coordinates but not update checker" do
52
- #first default behavior
53
- user.update_attributes(:gmaps => false, :address => "Strasbourg, france")
54
- user.gmaps.should eq true
55
- #then tested behavior
56
- user.instance_eval do
57
- def gmaps4rails_options
58
- DEFAULT_CONFIG_HASH.merge({ :process_geocoding => lambda {|user| true } })
59
- end
60
- end
61
- user.update_attributes(:gmaps => false, :address => "Strasbourg, france")
62
- user.gmaps.should eq false
63
- end
64
- end
65
- end
66
- end
67
-
68
-
69
- it "should not geocode again after address changes if checker is true" do
70
- user.update_attributes({ :address => "Paris, France" })
71
- user.should have_same_position_as TOULON
72
- end
73
-
74
- it "should geocode after address changes if checker is false" do
75
- user.update_attributes({ :address => "Paris, France",
76
- :gmaps => false})
77
- user.should have_same_position_as PARIS
78
- end
79
- end
80
-
81
- context "standard configuration, invalid address" do
82
-
83
- it "should raise an error if validation option is turned on and address incorrect" do
84
- invalid_user.should_not be_valid, "Address invalid"
85
- end
86
-
87
- it "should not set boolean to true when address update fails" do
88
- invalid_user.gmaps.should_not be_true
89
- end
90
- end
91
-
92
-
93
- context "acts_as_gmappable options" do
94
-
95
- after(:all) do
96
- #reset all configuration to default
97
- set_gmaps4rails_options!
98
- end
99
-
100
- it "should call google api with http by default" do
101
- address = "toulon, france"
102
- Gmaps4rails.should_receive(:geocode).with(address, "en", false, "http").and_return [TOULON]
103
- User.create(:address => address)
104
- end
105
-
106
- it "should call google api with https if passed in settings" do
107
- set_gmaps4rails_options!({ :protocol => "https" })
108
- address = "toulon, france"
109
- Gmaps4rails.should_receive(:geocode).with(address, "en", false, "https").and_return [TOULON]
110
- User.create(:address => address)
111
- set_gmaps4rails_options!({ :protocol => "http" })
112
- end
113
-
114
- it "should use indifferently a db column for address if passed in config" do
115
- set_gmaps4rails_options!({:address => "sec_address"})
116
- user = Factory(:user, :sec_address => "Toulon, France")
117
- user.should have_same_position_as TOULON
118
- end
119
-
120
- it "should save the normalized address if requested" do
121
- set_gmaps4rails_options!({ :normalized_address => "norm_address" })
122
- user.norm_address.should == "Toulon, France"
123
- end
124
-
125
- it "should override user's address with normalized address if requested" do
126
- set_gmaps4rails_options!({ :normalized_address => "sec_address" })
127
- user = Factory(:user, :sec_address => "ToUlOn, FrAnCe")
128
- user.sec_address.should == "Toulon, France"
129
- end
130
-
131
- it "should display the proper error message when address is invalid" do
132
- set_gmaps4rails_options!({ :msg => "Custom Address invalid"})
133
- invalid_user.should_not be_valid
134
- invalid_user.errors[:address].should include("Custom Address invalid")
135
- end
136
-
137
- it "should not raise an error if validation option is turned off" do
138
- set_gmaps4rails_options!({ :validation => false })
139
- invalid_user.should be_valid
140
- end
141
-
142
- it "should save longitude and latitude to the customized columns" do
143
- set_gmaps4rails_options!({
144
- :lat_column => "lat_test",
145
- :lng_column => "long_test"
146
- })
147
- user.latitude.should be_nil
148
- user.should have_same_position_as TOULON
149
- end
150
-
151
- it "should not save the boolean if check_process is false" do
152
- set_gmaps4rails_options!({ :check_process => false })
153
- user.gmaps.should be_nil
154
- end
155
-
156
- it "should geocode after each save if 'check_process' is false" do
157
- set_gmaps4rails_options!({ :check_process => false })
158
- user = Factory(:user, :address => "Paris, France")
159
- user.should have_same_position_as PARIS
160
- end
161
-
162
- it "should save to the proper boolean checker set in checker" do
163
- set_gmaps4rails_options!({ :checker => "bool_test" })
164
- user.gmaps.should be_nil
165
- user.bool_test.should be_true
166
- end
167
-
168
- it "should call a callback in the model if asked to" do
169
- User.class_eval do
170
- def gmaps4rails_options
171
- DEFAULT_CONFIG_HASH.merge({ :callback => "save_callback" })
172
- end
173
-
174
- def save_callback(data)
175
- self.called_back = true
176
- end
177
-
178
- attr_accessor :called_back
179
- end
180
- user.called_back.should be_true
181
- end
182
-
183
- end
184
-
185
-
186
-
187
- end
@@ -1,40 +0,0 @@
1
- module Geocoding
2
-
3
- DEFAULT_CONFIG_HASH = {
4
- :lat_column => "latitude",
5
- :lng_column => "longitude",
6
- :check_process => true,
7
- :checker => "gmaps",
8
- :msg => "Address invalid",
9
- :validation => true,
10
- :address => "address",
11
- :language => "en",
12
- :protocol => "http",
13
- :process_geocoding => true
14
- }
15
-
16
- PARIS = { :latitude => 48.856614, :longitude => 2.3522219 }
17
- TOULON = { :latitude => 43.124228, :longitude => 5.928 }
18
-
19
- #set model configuration
20
- def set_gmaps4rails_options!(change_conf = {})
21
- User.class_eval do
22
- define_method "gmaps4rails_options" do
23
- DEFAULT_CONFIG_HASH.merge(change_conf)
24
- end
25
- end
26
- end
27
-
28
- def self.stub_geocoding
29
- Gmaps4rails.stub(:geocode) do |*args|
30
- case args[0]
31
- when "Paris, France"
32
- [{:lat=>48.856614, :lng=>2.3522219, :matched_address=>"Paris, France", :bounds=>{"northeast"=>{"lat"=>48.902145, "lng"=>2.4699209}, "southwest"=>{"lat"=>48.815573, "lng"=>2.224199}}, :full_data=>{"address_components"=>[{"long_name"=>"Paris", "short_name"=>"Paris", "types"=>["locality", "political"]}, {"long_name"=>"Paris", "short_name"=>"75", "types"=>["administrative_area_level_2", "political"]}, {"long_name"=>"Ile-de-France", "short_name"=>"IdF", "types"=>["administrative_area_level_1", "political"]}, {"long_name"=>"France", "short_name"=>"FR", "types"=>["country", "political"]}], "formatted_address"=>"Paris, France", "geometry"=>{"bounds"=>{"northeast"=>{"lat"=>48.902145, "lng"=>2.4699209}, "southwest"=>{"lat"=>48.815573, "lng"=>2.224199}}, "location"=>{"lat"=>48.856614, "lng"=>2.3522219}, "location_type"=>"APPROXIMATE", "viewport"=>{"northeast"=>{"lat"=>48.9153104, "lng"=>2.4802813}, "southwest"=>{"lat"=>48.7978487, "lng"=>2.2241625}}}, "types"=>["locality", "political"]}}]
33
- when "home"
34
- raise Gmaps4rails::GeocodeStatus
35
- else
36
- [{:lat=>43.124228, :lng=>5.928, :matched_address=>"Toulon, France", :bounds=>{"northeast"=>{"lat"=>43.171673, "lng"=>5.987382999999999}, "southwest"=>{"lat"=>43.101049, "lng"=>5.879479}}, :full_data=>{"address_components"=>[{"long_name"=>"Toulon", "short_name"=>"Toulon", "types"=>["locality", "political"]}, {"long_name"=>"Var", "short_name"=>"83", "types"=>["administrative_area_level_2", "political"]}, {"long_name"=>"Provence-Alpes-Cote d'Azur", "short_name"=>"PACA", "types"=>["administrative_area_level_1", "political"]}, {"long_name"=>"France", "short_name"=>"FR", "types"=>["country", "political"]}], "formatted_address"=>"Toulon, France", "geometry"=>{"bounds"=>{"northeast"=>{"lat"=>43.171673, "lng"=>5.987382999999999}, "southwest"=>{"lat"=>43.101049, "lng"=>5.879479}}, "location"=>{"lat"=>43.124228, "lng"=>5.928}, "location_type"=>"APPROXIMATE", "viewport"=>{"northeast"=>{"lat"=>43.156795, "lng"=>5.9920297}, "southwest"=>{"lat"=>43.0916437, "lng"=>5.8639703}}}, "types"=>["locality", "political"]}}]
37
- end
38
- end
39
- end
40
- end
@@ -1,73 +0,0 @@
1
- require 'rspec/expectations'
2
- require 'ostruct'
3
-
4
- def has_same_content_as?(actual, expected)
5
- case actual
6
- when Array
7
- case expected
8
- when Array
9
- result = true
10
- case actual.first
11
- when Array
12
- actual.each do |actual_subarray|
13
- bool = false
14
- expected.each do |expected_subarray|
15
- bool = bool || has_same_content_as?(actual_subarray, expected_subarray)
16
- end
17
- result = result && bool
18
- end
19
- result
20
- else
21
- (actual - expected).empty?
22
- end
23
- else
24
- false
25
- end
26
- else
27
- false
28
- end
29
- end
30
-
31
- class PositionMatcher
32
- attr_reader :object, :position_hash
33
- delegate :position, :lat_column, :lng_column, :to => :@options
34
-
35
- def initialize object, position_hash
36
- @object, @position_hash = object, position_hash
37
- @options = ::OpenStruct.new object.gmaps4rails_options
38
- end
39
-
40
- def same_pos?
41
- position_hash[:latitude] == lat && position_hash[:longitude] == lng
42
- end
43
-
44
- protected
45
-
46
- def lat
47
- position ? object.send("#{position}")[0] : object.send("#{lat_column}")
48
- end
49
-
50
- def lng
51
- position ? object.send("#{position}")[1] : object.send("#{lng_column}")
52
- end
53
-
54
- end
55
-
56
- def position_matcher object, position_hash
57
- PositionMatcher.new object, position_hash
58
- end
59
-
60
- RSpec::Matchers.define :have_same_position_as do |position_hash|
61
- match do |object|
62
- position_matcher(object, position_hash).same_pos?
63
- end
64
- end
65
-
66
- RSpec::Matchers.define :be_same_json_as do |expected|
67
- match do |actual|
68
- has_same_content_as?(JSON.parse(actual), JSON.parse(expected))
69
- end
70
- failure_message_for_should do |actual|
71
- "Both object don't have the same content. Beware though, be sure to compare only arrays."
72
- end
73
- end
data/todo DELETED
File without changes
@@ -1 +0,0 @@
1
- //=require_tree '.'
@@ -1 +0,0 @@
1
- #= require './base/main'
@@ -1,43 +0,0 @@
1
-
2
- moduleKeywords = ['extended', 'included']
3
-
4
- @Gmaps4Rails = {}
5
-
6
- class @Gmaps4Rails.Common
7
-
8
- @extend: (obj) ->
9
- for key, value of obj when key not in moduleKeywords
10
- @[key] = value
11
-
12
- obj.extended?.apply(@)
13
- this
14
-
15
- @include: (obj) ->
16
- for key, value of obj when key not in moduleKeywords
17
- # Assign properties to the prototype
18
- @::[key] = value
19
- obj.included?.apply(@)
20
- this
21
-
22
- #//basic function to check existence of a variable
23
- exists : (var_name) ->
24
- return (var_name != "" and typeof var_name != "undefined")
25
-
26
- mergeObjects: (object, defaultObject) ->
27
- @constructor.mergeObjects(object, defaultObject)
28
-
29
- @mergeObjects: (object, defaultObject) ->
30
- copy_object = {}
31
- for key, value of object
32
- copy_object[key] = value
33
-
34
- for key, value of defaultObject
35
- copy_object[key] = value unless copy_object[key]?
36
- return copy_object
37
-
38
- @mergeWith : (object) ->
39
- for key, value of object
40
- @[key] = value unless @[key]?
41
-
42
- #gives a value between -1 and 1
43
- random : -> return(Math.random() * 2 -1)
@@ -1,7 +0,0 @@
1
- @Gmaps4Rails.Configuration =
2
-
3
- setConf: ->
4
- if @CONF?
5
- @mergeObjects(@CONF, @DEFAULT_CONF)
6
- else
7
- @DEFAULT_CONF
@@ -1,13 +0,0 @@
1
- @Gmaps =
2
- triggerOldOnload: ->
3
- window.Gmaps.oldOnload() if typeof(window.Gmaps.oldOnload) == 'function'
4
-
5
- loadMaps: ->
6
- #loop through all variable names.
7
- #there should only be maps inside so it trigger their load function
8
- for key, value of window.Gmaps
9
- #console.log key, searchLoadIncluded
10
- if /^load_/.test(key)
11
- #load_function_name = "load_" + key
12
- window.Gmaps[key]()
13
-
@@ -1,15 +0,0 @@
1
- Gmaps4Rails.Interfaces ||= {}
2
-
3
- Gmaps4Rails.Interfaces.Basic =
4
-
5
- clear: ()->
6
- throw "clear should be implemented"
7
-
8
- show: () ->
9
- throw "show should be implemented"
10
-
11
- hide: () ->
12
- throw "hide should be implemented"
13
-
14
- isVisible: ->
15
- throw "hide should be implemented"
@@ -1,15 +0,0 @@
1
- Gmaps4Rails.Interfaces ||= {}
2
-
3
- Gmaps4Rails.Interfaces.Controller =
4
-
5
- # module is the namespace of the map provider you implement, ie: Gmaps4Rails.Google
6
- getModule: ->
7
- throw "getModule should be implemented in controller"
8
-
9
- # This method should create and return a clusterer object
10
- createClusterer : (markers_array) ->
11
- throw "createClusterer should be implemented in controller"
12
-
13
- # this method should reset the clusterer
14
- clearClusterer : ->
15
- throw "clearClusterer should be implemented in controller"
@@ -1,27 +0,0 @@
1
- Gmaps4Rails.Interfaces ||= {}
2
-
3
- Gmaps4Rails.Interfaces.Map =
4
-
5
- extendBoundsWithMarker : (marker) ->
6
- throw "extendBoundsWithMarker should be implemented in controller"
7
-
8
- extendBoundsWithPolyline: (polyline)->
9
- throw "extendBoundsWithPolyline should be implemented in controller"
10
-
11
- extendBoundsWithPolygon: (polygon)->
12
- throw "extendBoundsWithPolygon should be implemented in controller"
13
-
14
- extendBoundsWithCircle: (circle)->
15
- throw "extendBoundsWithCircle should be implemented in controller"
16
-
17
- extendBound: (bound)->
18
- throw "extendBound should be implemented in controller"
19
-
20
- adaptToBounds:()->
21
- throw "adaptToBounds should be implemented in controller"
22
-
23
- fitBounds : ->
24
- throw "fitBounds should be implemented in controller"
25
-
26
- centerMapOnUser : (position)->
27
- throw "centerMapOnUser should be implemented in controller"
@@ -1,15 +0,0 @@
1
- Gmaps4Rails.Interfaces ||= {}
2
-
3
- Gmaps4Rails.Interfaces.Marker =
4
-
5
- createInfoWindow : () ->
6
- throw "createInfoWindow should be implemented in marker"
7
-
8
- clear: ()->
9
- throw "clear should be implemented in marker"
10
-
11
- show: () ->
12
- throw "show should be implemented in marker"
13
-
14
- hide: () ->
15
- throw "hide should be implemented in marker"