Commit d9815552bdc52d453b47cf3e57ea90f7602770ff

Authored by Aurelio A. Heckert
Committed by Antonio Terceiro
1 parent 73f9889f

More Beauty around web2.0conf code

- Remove unnecessary config file tests for GoogleMaps
- Also add the default gravatar configuration

(ActionItem1324)
app/helpers/application_helper.rb
... ... @@ -26,6 +26,17 @@ module ApplicationHelper
26 26  
27 27 include AccountHelper
28 28  
  29 + def load_web2_conf
  30 + if File.exists?( RAILS_ROOT + '/config/web2.0.yml')
  31 + YAML.load_file( RAILS_ROOT + '/config/web2.0.yml' )
  32 + else
  33 + {}
  34 + end
  35 + end
  36 + def web2_conf
  37 + @web_conf ||= load_web2_conf
  38 + end
  39 +
29 40 # Displays context help. You can pass the content of the help message as the
30 41 # first parameter or using template code inside a block passed to this
31 42 # method. *Note*: the block is ignored if <tt>content</tt> is not
... ... @@ -500,18 +511,21 @@ module ApplicationHelper
500 511 :host => 'www.gravatar.com',
501 512 :protocol => 'http://',
502 513 :only_path => false,
503   - :controller => 'avatar.php'
  514 + :controller => 'avatar.php',
  515 + :d => web2_conf['gravatar'] ? web2_conf['gravatar']['default'] : nil
504 516 }.merge(options) )
505 517 end
506   -
  518 +
507 519 def str_gravatar_url_for(email, options = {})
  520 + default = web2_conf['gravatar'] ? web2_conf['gravatar']['default'] : nil
508 521 url = 'http://www.gravatar.com/avatar.php?gravatar_id=' +
509 522 Digest::MD5.hexdigest(email)
510   - { :only_path => false }.merge(options).each { |k,v|
  523 + {
  524 + :only_path => false,
  525 + :d => default
  526 + }.merge(options).each { |k,v|
511 527 url += ( '&%s=%s' % [ k,v ] )
512 528 }
513   - # we can set the default imgage with this:
514   - # :default => 'DOMAIN/images/icons-app/gravatar-minor.gif'
515 529 url
516 530 end
517 531  
... ...
app/models/google_maps.rb
... ... @@ -4,22 +4,14 @@ class GoogleMaps
4 4  
5 5 class << self
6 6  
  7 + include ApplicationHelper
  8 +
7 9 def erase_config
8 10 @config = nil
9 11 end
10 12  
11   - def config_file
12   - File.join(RAILS_ROOT, 'config', 'web2.0.yml')
13   - end
14   -
15 13 def config
16   - if @config.nil?
17   - if File.exists?(config_file)
18   - yaml = YAML.load_file(config_file)
19   - @config = yaml['googlemaps']
20   - end
21   - end
22   -
  14 + @config = web2_conf['googlemaps'] if @config.nil?
23 15 @config ||= {}
24 16 end
25 17  
... ...
app/views/content_viewer/view_page.rhtml
... ... @@ -2,10 +2,8 @@
2 2  
3 3 <%
4 4 # AddThis Button
5   - if block_given? and File.exists?( RAILS_ROOT + '/config/web2.0.yml')
6   - opts = YAML.load_file( RAILS_ROOT + '/config/web2.0.yml' )
7   - if opts['addthis']
8   - opts = opts['addthis']
  5 + if block_given? and web2_conf['addthis']
  6 + opts = web2_conf['addthis']
9 7 %>
10 8 <div id="addThis">
11 9 <script type="text/javascript">
... ... @@ -19,7 +17,7 @@
19 17 %></script>
20 18 <a href="http://www.addthis.com/bookmark.php" id="bt_addThis" target="_blank" onmouseover="return addthis_open(this, '', '[URL]')" onmouseout="addthis_close()" onclick="return addthis_sendto()"><img src="/images/bt-bookmark.gif" width="53" height="16" border="0" alt="" /></a><script type="text/javascript" src="http://s7.addthis.com/js/152/addthis_widget.js"></script>
21 19 </div>
22   -<% end; end %>
  20 +<% end %>
23 21  
24 22 <div>
25 23 <%= article_title(@page, :no_link => true) %>
... ...
config/web2.0.yml.dist
... ... @@ -8,3 +8,5 @@ addthis:
8 8 options: favorites, email, digg, delicious, technorati, slashdot, twitter, more
9 9 googlemaps:
10 10 key: <id google>
  11 +gravatar:
  12 + default: wavatar
... ...
test/unit/application_helper_test.rb
... ... @@ -8,6 +8,18 @@ class ApplicationHelperTest &lt; Test::Unit::TestCase
8 8 self.stubs(:session).returns({})
9 9 end
10 10  
  11 + should 'retrieve conf from "web2.0" config file' do
  12 + yml = RAILS_ROOT + '/config/web2.0.yml'
  13 + conf = {
  14 + 'addthis'=>{'pub'=>'mylogin', 'options'=>'favorites, email'},
  15 + 'gravatar'=>{'default'=>'wavatar'}
  16 + }
  17 + # does not work!
  18 + File.stubs(:exists?).with(yml).returns(true)
  19 + YAML.stubs(:load_file).with(yml).returns(conf)
  20 + assert_equal conf, web2_conf
  21 + end
  22 +
11 23 should 'calculate correctly partial for object' do
12 24 self.stubs(:params).returns({:controller => 'test'})
13 25  
... ... @@ -518,6 +530,14 @@ class ApplicationHelperTest &lt; Test::Unit::TestCase
518 530 assert_match(/Community nickname/, page_title)
519 531 end
520 532  
  533 + should 'generate a gravatar url' do
  534 + url = str_gravatar_url_for( 'rms@gnu.org', :size => 50 )
  535 + assert_match(/^http:\/\/www\.gravatar\.com\/avatar\.php\?/, url)
  536 + assert_match(/(\?|&)gravatar_id=ed5214d4b49154ba0dc397a28ee90eb7(&|$)/, url)
  537 + assert_match(/(\?|&)d=wavatar(&|$)/, url)
  538 + assert_match(/(\?|&)size=50(&|$)/, url)
  539 + end
  540 +
521 541 protected
522 542  
523 543 def url_for(args = {})
... ...
test/unit/google_maps_test.rb
... ... @@ -2,45 +2,23 @@ require File.dirname(__FILE__) + &#39;/../test_helper&#39;
2 2  
3 3 class GoogleMapsTest < Test::Unit::TestCase
4 4  
5   - CONFIG_FILE = '/not/existing.yml'
6   -
7 5 def setup
8 6 # force loading of config at every test
9 7 GoogleMaps.erase_config
10   - GoogleMaps.stubs(:config_file).returns(CONFIG_FILE)
11   - end
12   -
13   - should 'retrieve key from "web2.0" config file' do
14   - File.expects(:exists?).with(CONFIG_FILE).returns(true)
15   - YAML.expects(:load_file).with(CONFIG_FILE).returns({'googlemaps' => { 'key' => 'MYKEY' }})
16   - assert_equal 'MYKEY', GoogleMaps.key
17 8 end
18 9  
19 10 should 'enable when key is defined' do
20   - File.expects(:exists?).with(CONFIG_FILE).returns(true)
21   - YAML.expects(:load_file).with(CONFIG_FILE).returns({'googlemaps' => { 'key' => 'MYKEY' }})
  11 + GoogleMaps.stubs(:config).returns({ 'key' => 'MYKEY' })
22 12 assert GoogleMaps.enabled?
23 13 end
24 14  
25   - should 'disable if config file not present' do
26   - File.expects(:exists?).with(CONFIG_FILE).returns(false)
27   - assert !GoogleMaps.enabled?
28   - end
29   -
30 15 should 'disable if key not defined' do
31   - File.expects(:exists?).with(CONFIG_FILE).returns(true)
32   - YAML.expects(:load_file).with(CONFIG_FILE).returns({})
  16 + GoogleMaps.stubs(:config).returns({})
33 17 assert !GoogleMaps.enabled?
34 18 end
35   -
36   - should 'not crash if config not informed' do
37   - File.expects(:exists?).with(CONFIG_FILE).returns(true)
38   - YAML.expects(:load_file).with(CONFIG_FILE).returns({})
39   - assert_equal '', GoogleMaps.key
40   - end
41 19  
42   - should 'not crash if config file not found' do
43   - GoogleMaps.expects(:config_file).returns('/not/present.yml')
  20 + should 'not crash if config not informed' do
  21 + GoogleMaps.stubs(:config).returns({})
44 22 assert_equal '', GoogleMaps.key
45 23 end
46 24  
... ... @@ -50,14 +28,12 @@ class GoogleMapsTest &lt; Test::Unit::TestCase
50 28 end
51 29  
52 30 should 'provide initial_zoom setting' do
53   - File.expects(:exists?).with(CONFIG_FILE).returns(true)
54   - YAML.expects(:load_file).with(CONFIG_FILE).returns({'googlemaps' => { 'initial_zoom' => 2}})
  31 + GoogleMaps.stubs(:config).returns({'initial_zoom' => 2})
55 32 assert_equal 2, GoogleMaps.initial_zoom
56 33 end
57 34  
58 35 should 'use 4 as default initial_zoom' do
59   - File.expects(:exists?).with(CONFIG_FILE).returns(true)
60   - YAML.expects(:load_file).with(CONFIG_FILE).returns({'googlemaps' => { }})
  36 + GoogleMaps.stubs(:config).returns({})
61 37 assert_equal 4, GoogleMaps.initial_zoom
62 38 end
63 39  
... ...