Commit 55a5a2a5c88e333ed15c53551cbfa7b405ce0516

Authored by Daniela Feitosa
Committed by Antonio Terceiro
1 parent c00a313f

Each domain is alowed to have its own GoogleMap key

  * Added google_maps_key to domain

(ActionItem1341)
app/helpers/search_helper.rb
@@ -20,7 +20,7 @@ module SearchHelper @@ -20,7 +20,7 @@ module SearchHelper
20 20
21 def display_results(use_map = true) 21 def display_results(use_map = true)
22 22
23 - unless use_map && GoogleMaps.enabled? 23 + unless use_map && GoogleMaps.enabled?(environment.default_hostname)
24 return render(:partial => 'display_results') 24 return render(:partial => 'display_results')
25 end 25 end
26 26
app/models/google_maps.rb
@@ -14,20 +14,20 @@ class GoogleMaps @@ -14,20 +14,20 @@ class GoogleMaps
14 @config ||= (web2_conf['googlemaps'] || {}) 14 @config ||= (web2_conf['googlemaps'] || {})
15 end 15 end
16 16
17 - def enabled?  
18 - !config['key'].nil? 17 + def enabled?(domain)
  18 + !Domain.find_by_name(domain).google_maps_key.nil?
19 end 19 end
20 20
21 - def key  
22 - config['key'] || '' 21 + def key(domain)
  22 + Domain.find_by_name(domain).google_maps_key || ''
23 end 23 end
24 24
25 def initial_zoom 25 def initial_zoom
26 config['initial_zoom'] || 4 26 config['initial_zoom'] || 4
27 end 27 end
28 28
29 - def api_url  
30 - "http://maps.google.com/maps?file=api&v=2&key=#{key}" 29 + def api_url(domain)
  30 + "http://maps.google.com/maps?file=api&v=2&key=#{key(domain)}"
31 end 31 end
32 32
33 end 33 end
app/models/location_block.rb
@@ -20,7 +20,7 @@ class LocationBlock < Block @@ -20,7 +20,7 @@ class LocationBlock < Block
20 '<img src="http://maps.google.com/staticmap?center=' + profile.lat.to_s() + 20 '<img src="http://maps.google.com/staticmap?center=' + profile.lat.to_s() +
21 ',' + profile.lng.to_s() + '&zoom=' + zoom.to_s() + 21 ',' + profile.lng.to_s() + '&zoom=' + zoom.to_s() +
22 '&size=205x250&maptype=' + map_type + '&markers=' + profile.lat.to_s() + ',' + 22 '&size=205x250&maptype=' + map_type + '&markers=' + profile.lat.to_s() + ',' +
23 - profile.lng.to_s() + ',green&key=' + GoogleMaps::key + '&sensor=false"/>', 23 + profile.lng.to_s() + ',green&key=' + GoogleMaps::key(profile.default_hostname) + '&sensor=false"/>',
24 :class => 'the-localization-map' ) 24 :class => 'the-localization-map' )
25 else 25 else
26 content_tag('i', _('This profile has no geographical position registered.')) 26 content_tag('i', _('This profile has no geographical position registered.'))
app/views/maps/_google_map.rhtml
1 -<%= content_tag('script', '', :src => GoogleMaps.api_url, :type => 'text/javascript') %> 1 +<%= content_tag('script', '', :src => GoogleMaps.api_url(profile.default_hostname), :type => 'text/javascript') %>
2 2
3 <script type="text/javascript" > 3 <script type="text/javascript" >
4 var geocoder; 4 var geocoder;
app/views/search/_google_maps.rhtml
1 -<%= content_tag('script', '', :src => GoogleMaps.api_url, :type => 'text/javascript') %> 1 +<%= content_tag('script', '', :src => GoogleMaps.api_url(environment.default_hostname), :type => 'text/javascript') %>
2 2
3 3
4 <div style='text-align: center;'> 4 <div style='text-align: center;'>
db/migrate/078_add_google_maps_key_to_domain.rb 0 → 100644
@@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
  1 +class AddGoogleMapsKeyToDomain < ActiveRecord::Migration
  2 +
  3 + def self.up
  4 + add_column :domains, :google_maps_key, :string
  5 + end
  6 +
  7 + def self.down
  8 + remove_column :domains, :google_maps_key
  9 + end
  10 +
  11 +end
test/functional/maps_controller_test.rb
@@ -45,4 +45,13 @@ class MapsControllerTest &lt; Test::Unit::TestCase @@ -45,4 +45,13 @@ class MapsControllerTest &lt; Test::Unit::TestCase
45 assert_tag :tag => 'input', :attributes => { :name => 'profile_data[city]' } 45 assert_tag :tag => 'input', :attributes => { :name => 'profile_data[city]' }
46 end 46 end
47 47
  48 + should 'add script tag for google maps' do
  49 + domain = fast_create(Domain, :name => 'domain-with-key', :google_maps_key => 'DOMAIN_KEY')
  50 + profile.preferred_domain = domain
  51 + profile.save!
  52 +
  53 + get 'edit_location', :profile => profile.identifier
  54 +
  55 + assert_tag :tag => 'script', :attributes => { :src => 'http://maps.google.com/maps?file=api&amp;v=2&amp;key=DOMAIN_KEY'}
  56 + end
48 end 57 end
test/functional/search_controller_test.rb
@@ -13,6 +13,10 @@ class SearchControllerTest &lt; Test::Unit::TestCase @@ -13,6 +13,10 @@ class SearchControllerTest &lt; Test::Unit::TestCase
13 @category = Category.create!(:name => 'my category', :environment => Environment.default) 13 @category = Category.create!(:name => 'my category', :environment => Environment.default)
14 Profile.rebuild_index 14 Profile.rebuild_index
15 Article.rebuild_index 15 Article.rebuild_index
  16 +
  17 + domain = Environment.default.domains.first
  18 + domain.google_maps_key = 'ENVIRONMENT_KEY'
  19 + domain.save!
16 end 20 end
17 21
18 def test_local_files_reference 22 def test_local_files_reference
@@ -1001,6 +1005,36 @@ class SearchControllerTest &lt; Test::Unit::TestCase @@ -1001,6 +1005,36 @@ class SearchControllerTest &lt; Test::Unit::TestCase
1001 assert_includes assigns(:results)[:products], prod 1005 assert_includes assigns(:results)[:products], prod
1002 end 1006 end
1003 1007
  1008 + should 'add script tag for google maps if searching products' do
  1009 + get 'index', :query => 'product', :display => 'map', :find_in => ['products']
  1010 +
  1011 + assert_tag :tag => 'script', :attributes => { :src => 'http://maps.google.com/maps?file=api&amp;v=2&amp;key=ENVIRONMENT_KEY'}
  1012 + end
  1013 +
  1014 + should 'add script tag for google maps if searching enterprises' do
  1015 + get 'index', :query => 'enterprise', :display => 'map', :find_in => ['enterprises']
  1016 +
  1017 + assert_tag :tag => 'script', :attributes => { :src => 'http://maps.google.com/maps?file=api&amp;v=2&amp;key=ENVIRONMENT_KEY'}
  1018 + end
  1019 +
  1020 + should 'not add script tag for google maps if searching articles' do
  1021 + get 'index', :query => 'article', :display => 'map', :find_in => ['articles']
  1022 +
  1023 + assert_no_tag :tag => 'script', :attributes => { :src => 'http://maps.google.com/maps?file=api&amp;v=2&amp;key=ENVIRONMENT_KEY'}
  1024 + end
  1025 +
  1026 + should 'not add script tag for google maps if searching people' do
  1027 + get 'index', :query => 'person', :display => 'map', :find_in => ['people']
  1028 +
  1029 + assert_no_tag :tag => 'script', :attributes => { :src => 'http://maps.google.com/maps?file=api&amp;v=2&amp;key=ENVIRONMENT_KEY'}
  1030 + end
  1031 +
  1032 + should 'not add script tag for google maps if searching communities' do
  1033 + get 'index', :query => 'community', :display => 'map', :find_in => ['communities']
  1034 +
  1035 + assert_no_tag :tag => 'script', :attributes => { :src => 'http://maps.google.com/maps?file=api&amp;v=2&amp;key=ENVIRONMENT_KEY'}
  1036 + end
  1037 +
1004 should 'show events of specific day' do 1038 should 'show events of specific day' do
1005 person = create_user('anotheruser').person 1039 person = create_user('anotheruser').person
1006 event = create_event(person, :name => 'Joao Birthday', :start_date => Date.new(2009, 10, 28)) 1040 event = create_event(person, :name => 'Joao Birthday', :start_date => Date.new(2009, 10, 28))
test/unit/domain_test.rb
@@ -100,4 +100,14 @@ class DomainTest &lt; Test::Unit::TestCase @@ -100,4 +100,14 @@ class DomainTest &lt; Test::Unit::TestCase
100 assert_equal false, Domain.hosting_profile_at('example.com') 100 assert_equal false, Domain.hosting_profile_at('example.com')
101 end 101 end
102 102
  103 + should 'not crash if key is not defined' do
  104 + domain = fast_create(Domain, :name => 'domain-without-key')
  105 + assert_nil domain.google_maps_key
  106 + end
  107 +
  108 + should 'return key if defined' do
  109 + domain = fast_create(Domain, :name => 'domain-with-key', :google_maps_key => 'DOMAIN_KEY')
  110 + assert_equal 'DOMAIN_KEY', domain.google_maps_key
  111 + end
  112 +
103 end 113 end
test/unit/google_maps_test.rb
@@ -3,28 +3,29 @@ require File.dirname(__FILE__) + &#39;/../test_helper&#39; @@ -3,28 +3,29 @@ require File.dirname(__FILE__) + &#39;/../test_helper&#39;
3 class GoogleMapsTest < Test::Unit::TestCase 3 class GoogleMapsTest < Test::Unit::TestCase
4 4
5 def setup 5 def setup
  6 + @domain = fast_create(Domain, :name => 'example-domain', :google_maps_key => 'DOMAIN_KEY')
6 # force loading of config at every test 7 # force loading of config at every test
7 GoogleMaps.erase_config 8 GoogleMaps.erase_config
8 end 9 end
9 10
10 - should 'enable when key is defined' do  
11 - GoogleMaps.stubs(:config).returns({ 'key' => 'MYKEY' })  
12 - assert GoogleMaps.enabled? 11 + attr_reader :domain
  12 +
  13 + should 'enable when key on domain is defined' do
  14 + assert GoogleMaps.enabled?(domain.name)
13 end 15 end
14 16
15 - should 'disable if key not defined' do  
16 - GoogleMaps.stubs(:config).returns({})  
17 - assert !GoogleMaps.enabled? 17 + should 'disable if key on domain is not defined' do
  18 + fast_create(Domain, :name => 'domain-without-key')
  19 + assert !GoogleMaps.enabled?('domain-without-key')
18 end 20 end
19 21
20 should 'not crash if config not informed' do 22 should 'not crash if config not informed' do
21 GoogleMaps.stubs(:config).returns({}) 23 GoogleMaps.stubs(:config).returns({})
22 - assert_equal '', GoogleMaps.key 24 + assert_equal({}, GoogleMaps.config)
23 end 25 end
24 26
25 should 'point correctly to google maps' do 27 should 'point correctly to google maps' do
26 - GoogleMaps.expects(:key).returns('MY_FUCKING_KEY')  
27 - assert_equal 'http://maps.google.com/maps?file=api&amp;v=2&amp;key=MY_FUCKING_KEY', GoogleMaps.api_url 28 + assert_equal 'http://maps.google.com/maps?file=api&amp;v=2&amp;key=DOMAIN_KEY', GoogleMaps.api_url(domain.name)
28 end 29 end
29 30
30 should 'provide initial_zoom setting' do 31 should 'provide initial_zoom setting' do
@@ -37,4 +38,10 @@ class GoogleMapsTest &lt; Test::Unit::TestCase @@ -37,4 +38,10 @@ class GoogleMapsTest &lt; Test::Unit::TestCase
37 assert_equal 4, GoogleMaps.initial_zoom 38 assert_equal 4, GoogleMaps.initial_zoom
38 end 39 end
39 40
  41 + should 'have different keys to different domains' do
  42 + other_domain = fast_create(Domain, :name => 'different-domain', :google_maps_key => 'DIFFERENT_DOMAIN_KEY')
  43 +
  44 + assert_equal 'http://maps.google.com/maps?file=api&amp;v=2&amp;key=DOMAIN_KEY', GoogleMaps.api_url(domain.name)
  45 + assert_equal 'http://maps.google.com/maps?file=api&amp;v=2&amp;key=DIFFERENT_DOMAIN_KEY', GoogleMaps.api_url(other_domain.name)
  46 + end
40 end 47 end