cirandas.net

ref: master

test/unit/profile_image_helper_test.rb


  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# encoding: UTF-8
require_relative "../test_helper"

class ProfileImageHelperTest < ActionView::TestCase
  include Noosfero::Gravatar
  include ThemeLoaderHelper
  include ProfileImageHelper

  should "Extra info with hash" do
    @plugins = mock
    @plugins.stubs(:dispatch_first).returns(false)
    env = Environment.default
    stubs(:environment).returns(env)
    stubs(:profile).returns(profile)
    profile = fast_create(Person, :environment_id => env.id)
    info = {:value =>_('New'), :class => 'new-profile'}
    html = profile_image_link(profile, size=:portrait, tag='li', extra_info = info)
    assert_tag_in_string html, :tag => 'span', :attributes => { :class => 'profile-image new-profile' }
    assert_tag_in_string html, :tag => 'span', :attributes => { :class => 'extra_info new-profile' }, :content => 'New'
  end

  should "Extra info without hash" do
    @plugins = mock
    @plugins.stubs(:dispatch_first).returns(false)
    env = Environment.default
    stubs(:environment).returns(env)
    stubs(:profile).returns(profile)
    profile = fast_create(Person, :environment_id => env.id)
    info = 'new'
    html = profile_image_link(profile, size=:portrait, tag='li', extra_info = info)
    assert_tag_in_string html, :tag => 'span', :attributes => { :class => 'extra_info' }, :content => 'new'
  end

  should 'return nil when :show_balloon_with_profile_links_when_clicked is not enabled in environment' do
    env = Environment.default
    env.stubs(:enabled?).with(:show_balloon_with_profile_links_when_clicked).returns(false)
    stubs(:environment).returns(env)
    profile = Profile.new
    assert_nil links_for_balloon(profile)
  end

  should 'return ordered list of links to balloon to Person' do
    env = Environment.default
    env.stubs(:enabled?).with(:show_balloon_with_profile_links_when_clicked).returns(true)
    stubs(:environment).returns(env)
    person = Person.new identifier: 'person'
    person.stubs(:url).returns('url for person')
    person.stubs(:public_profile_url).returns('url for person')
    links = links_for_balloon(person)
    assert_equal ['Wall', 'Friends', 'Communities', 'Send an e-mail', 'Add'], links.map{|i| i.keys.first}
  end

  should 'return ordered list of links to balloon to Community' do
    env = Environment.default
    env.stubs(:enabled?).with(:show_balloon_with_profile_links_when_clicked).returns(true)
    stubs(:environment).returns(env)
    community = Community.new identifier: 'comm'
    community.stubs(:url).returns('url for community')
    community.stubs(:public_profile_url).returns('url for community')
    links = links_for_balloon(community)
    assert_equal ['Wall', 'Members', 'Agenda', 'Join', 'Leave community', 'Send an e-mail'], links.map{|i| i.keys.first}
  end

  should 'return ordered list of links to balloon to Enterprise' do
    env = Environment.default
    env.stubs(:enabled?).with(:show_balloon_with_profile_links_when_clicked).returns(true)
    stubs(:environment).returns(env)
    enterprise = Enterprise.new identifier: 'coop'
    enterprise.stubs(:url).returns('url for enterprise')
    enterprise.stubs(:public_profile_url).returns('url for enterprise')
    stubs(:catalog_path)
    links = links_for_balloon(enterprise)
    assert_equal ['Members', 'Agenda', 'Send an e-mail'], links.map{|i| i.keys.first}
  end

  should 'not return mime type of profile icon if not requested' do
    stubs(:profile).returns(Person.new)
    stubs(:current_theme).returns('default')

    filename, mime = profile_icon(Person.new, :thumb)
    assert_not_nil filename
    assert_nil mime
  end

  should 'return mime type of profile icon' do
    stubs(:profile).returns(Person.new)
    stubs(:current_theme).returns('default')

    filename, mime = profile_icon(Person.new, :thumb, true)
    assert_not_nil filename
    assert_not_nil mime
  end

  should 'provide sex icon for males' do
    stubs(:environment).returns(Environment.default)
    expects(:content_tag).with(anything, 'male').returns('MALE!!')
    expects(:content_tag).with(anything, 'MALE!!', is_a(Hash)).returns("FINAL")
    assert_equal "FINAL", profile_sex_icon(build(Person, :sex => 'male'))
  end

  should 'provide sex icon for females' do
    stubs(:environment).returns(Environment.default)
    expects(:content_tag).with(anything, 'female').returns('FEMALE!!')
    expects(:content_tag).with(anything, 'FEMALE!!', is_a(Hash)).returns("FINAL")
    assert_equal "FINAL", profile_sex_icon(build(Person, :sex => 'female'))
  end

  should 'provide undef sex icon' do
    stubs(:environment).returns(Environment.default)
    expects(:content_tag).with(anything, 'undef').returns('UNDEF!!')
    expects(:content_tag).with(anything, 'UNDEF!!', is_a(Hash)).returns("FINAL")
    assert_equal "FINAL", profile_sex_icon(build(Person, :sex => nil))
  end

  should 'not draw sex icon for non-person profiles' do
    assert_equal '', profile_sex_icon(Community.new)
  end

  should 'not draw sex icon when disabled in the environment' do
    env = fast_create(Environment, :name => 'env test')
    env.expects(:enabled?).with('disable_gender_icon').returns(true)
    stubs(:environment).returns(env)
    assert_equal '', profile_sex_icon(build(Person, :sex => 'male'))
  end

  should 'gravatar default parameter' do
    profile = mock
    profile.stubs(:theme).returns('some-theme')
    stubs(:profile).returns(profile)

    NOOSFERO_CONF.stubs(:[]).with('gravatar').returns('crazyvatar')
    assert_equal gravatar_default, 'crazyvatar'

    stubs(:theme_option).returns('gravatar' => 'nicevatar')
    NOOSFERO_CONF.stubs(:[]).with('gravatar').returns('nicevatar')
    assert_equal gravatar_default, 'nicevatar'
  end

  should "secret-profile css applied in the secret profile image" do
    @plugins = mock
    @plugins.stubs(:dispatch_first).returns(false)
    env = Environment.default
    stubs(:environment).returns(env)
    stubs(:profile).returns(profile)
    profile = fast_create(Community, :environment_id => env.id, :secret => true)
    info = {:value =>_('New'), :class => 'new-profile'}
    html = profile_image_link(profile, size=:portrait, tag='li', extra_info = info)
    assert_tag_in_string html, :tag => 'span', :attributes => { :class => 'profile-image secret-profile new-profile' }
  end
end