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 20  
21 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 24 return render(:partial => 'display_results')
25 25 end
26 26  
... ...
app/models/google_maps.rb
... ... @@ -14,20 +14,20 @@ class GoogleMaps
14 14 @config ||= (web2_conf['googlemaps'] || {})
15 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 19 end
20 20  
21   - def key
22   - config['key'] || ''
  21 + def key(domain)
  22 + Domain.find_by_name(domain).google_maps_key || ''
23 23 end
24 24  
25 25 def initial_zoom
26 26 config['initial_zoom'] || 4
27 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 31 end
32 32  
33 33 end
... ...
app/models/location_block.rb
... ... @@ -20,7 +20,7 @@ class LocationBlock < Block
20 20 '<img src="http://maps.google.com/staticmap?center=' + profile.lat.to_s() +
21 21 ',' + profile.lng.to_s() + '&zoom=' + zoom.to_s() +
22 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 24 :class => 'the-localization-map' )
25 25 else
26 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 3 <script type="text/javascript" >
4 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 4 <div style='text-align: center;'>
... ...
db/migrate/078_add_google_maps_key_to_domain.rb 0 → 100644
... ... @@ -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 45 assert_tag :tag => 'input', :attributes => { :name => 'profile_data[city]' }
46 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 57 end
... ...
test/functional/search_controller_test.rb
... ... @@ -13,6 +13,10 @@ class SearchControllerTest &lt; Test::Unit::TestCase
13 13 @category = Category.create!(:name => 'my category', :environment => Environment.default)
14 14 Profile.rebuild_index
15 15 Article.rebuild_index
  16 +
  17 + domain = Environment.default.domains.first
  18 + domain.google_maps_key = 'ENVIRONMENT_KEY'
  19 + domain.save!
16 20 end
17 21  
18 22 def test_local_files_reference
... ... @@ -1001,6 +1005,36 @@ class SearchControllerTest &lt; Test::Unit::TestCase
1001 1005 assert_includes assigns(:results)[:products], prod
1002 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 1038 should 'show events of specific day' do
1005 1039 person = create_user('anotheruser').person
1006 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 100 assert_equal false, Domain.hosting_profile_at('example.com')
101 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 113 end
... ...
test/unit/google_maps_test.rb
... ... @@ -3,28 +3,29 @@ require File.dirname(__FILE__) + &#39;/../test_helper&#39;
3 3 class GoogleMapsTest < Test::Unit::TestCase
4 4  
5 5 def setup
  6 + @domain = fast_create(Domain, :name => 'example-domain', :google_maps_key => 'DOMAIN_KEY')
6 7 # force loading of config at every test
7 8 GoogleMaps.erase_config
8 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 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 20 end
19 21  
20 22 should 'not crash if config not informed' do
21 23 GoogleMaps.stubs(:config).returns({})
22   - assert_equal '', GoogleMaps.key
  24 + assert_equal({}, GoogleMaps.config)
23 25 end
24 26  
25 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 29 end
29 30  
30 31 should 'provide initial_zoom setting' do
... ... @@ -37,4 +38,10 @@ class GoogleMapsTest &lt; Test::Unit::TestCase
37 38 assert_equal 4, GoogleMaps.initial_zoom
38 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 47 end
... ...