Commit 15262820cb734169a381ac0c25fe02083949cac2

Authored by AntonioTerceiro
1 parent 0bee68c8

ActionItem8: displaying profile



git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@420 3f533792-8f58-4932-b0fe-aaf55b0a4547
app/helpers/profile_helper.rb 0 → 100644
... ... @@ -0,0 +1,28 @@
  1 +module ProfileHelper
  2 +
  3 + def display_profile_info(profile)
  4 + info = profile.info
  5 + if info.nil?
  6 + content_tag('div', _('This profile does not have any public information'))
  7 + else
  8 + table_rows = ''
  9 + info.each do |item|
  10 + name = item[0]
  11 + value = item[1]
  12 + if value.is_a?(Proc)
  13 + value = self.instance_eval(value)
  14 + end
  15 +
  16 + table_rows << content_tag('tr', content_tag('th', name) + content_tag('td', value))
  17 + table_rows << "\n"
  18 + end
  19 +
  20 + content_tag(
  21 + 'table',
  22 + table_rows,
  23 + :class => 'profile_info'
  24 + )
  25 + end
  26 + end
  27 +
  28 +end
... ...
test/unit/profile_helper_test.rb 0 → 100644
... ... @@ -0,0 +1,53 @@
  1 +require File.dirname(__FILE__) + '/../test_helper'
  2 +
  3 +class ProfileHelperTest < Test::Unit::TestCase
  4 +
  5 + def setup
  6 + @profile = Profile.new
  7 + @helper = mock
  8 + helper.extend(ProfileHelper)
  9 + end
  10 + attr_reader :profile, :helper
  11 +
  12 + def test_should_ignore_nil
  13 + profile.stubs(:info).returns(nil)
  14 +
  15 + helper.expects(:content_tag)
  16 + helper.expects(:_)
  17 +
  18 + helper.display_profile_info(profile)
  19 + end
  20 +
  21 + def test_should_display_info
  22 + f1 = 'Field 1'
  23 + v1 = 'value 1'
  24 + f2 = 'Field 2'
  25 + v2 = 'value 2'
  26 + array = [
  27 + [ f1, v1 ],
  28 + [ f2, v2 ]
  29 + ]
  30 + profile.stubs(:info).returns(array)
  31 +
  32 + helper.expects(:content_tag).with('th', f1).returns(f1)
  33 + helper.expects(:content_tag).with('td', v1).returns(v1)
  34 + helper.expects(:content_tag).with('tr', f1 + v1).returns('r1')
  35 + helper.expects(:content_tag).with('th', f2).returns(f2)
  36 + helper.expects(:content_tag).with('td', v2).returns(v2)
  37 + helper.expects(:content_tag).with('tr', f2 + v2).returns('r2')
  38 + helper.expects(:content_tag).with('table', "r1\nr2\n", :class => 'profile_info' ).returns('final')
  39 +
  40 + assert_equal 'final', helper.display_profile_info(profile)
  41 + end
  42 +
  43 + def test_should_call_blocks
  44 + myproc = lambda { content_tag('div', 'lalala') }
  45 + profile.stubs(:info).returns([['f1', myproc ]])
  46 + helper.stubs(:content_tag).returns('')
  47 +
  48 + helper.expects(:instance_eval).with(myproc)
  49 +
  50 + helper.display_profile_info(profile)
  51 + end
  52 +
  53 +end
... ...