Commit 15262820cb734169a381ac0c25fe02083949cac2
1 parent
0bee68c8
Exists in
master
and in
28 other branches
ActionItem8: displaying profile
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@420 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
2 changed files
with
81 additions
and
0 deletions
Show diff stats
| ... | ... | @@ -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 | ... | ... |
| ... | ... | @@ -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 | ... | ... |