Commit c59a0c4947ef85fba1fd52f45107c6bd878e3fa6

Authored by Victor Costa
1 parent 7fd77a7e

Display info about profile

lib/merit/point_rules.rb
@@ -60,6 +60,7 @@ module Merit @@ -60,6 +60,7 @@ module Merit
60 weight(category) * value 60 weight(category) * value
61 end 61 end
62 62
  63 + # TODO receive environment parameter
63 def initialize 64 def initialize
64 AVAILABLE_RULES.each do |category, setting| 65 AVAILABLE_RULES.each do |category, setting|
65 [setting[:action], setting[:undo_action]].compact.zip([1, -1]).each do |action, signal| 66 [setting[:action], setting[:undo_action]].compact.zip([1, -1]).each do |action, signal|
test/functional/gamification_plugin_profile_controller_test.rb
@@ -11,15 +11,25 @@ class GamificationPluginProfileControllerTest < ActionController::TestCase @@ -11,15 +11,25 @@ class GamificationPluginProfileControllerTest < ActionController::TestCase
11 attr_accessor :profile, :person 11 attr_accessor :profile, :person
12 12
13 should 'display points in gamification info page' do 13 should 'display points in gamification info page' do
14 - Profile.any_instance.expects(:points).returns(125) 14 + person.add_points(20, :category => :comment_author)
  15 + person.add_points(30, :category => :article_author)
15 get :info, :profile => profile.identifier 16 get :info, :profile => profile.identifier
16 - assert_tag :div, :attributes => {:class => 'score'}, :child => {:tag => 'span', :attributes => {:class => 'value'}, :content => '125'} 17 + assert_tag :div, :attributes => {:class => 'score article_author'}, :child => {:tag => 'span', :attributes => {:class => 'value'}, :content => '30'}
  18 + assert_tag :div, :attributes => {:class => 'score comment_author'}, :child => {:tag => 'span', :attributes => {:class => 'value'}, :content => '20'}
  19 + assert_tag :div, :attributes => {:class => 'score total'}, :child => {:tag => 'span', :attributes => {:class => 'value'}, :content => '50'}
17 end 20 end
18 21
19 should 'display level in gamification info page' do 22 should 'display level in gamification info page' do
20 person.update_attribute(:level, 12) 23 person.update_attribute(:level, 12)
21 get :info, :profile => profile.identifier 24 get :info, :profile => profile.identifier
22 - assert_tag :div, :attributes => {:class => 'level'}, :child => {:tag => 'span', :attributes => {:class => 'value'}, :content => '12'} 25 + assert_tag :span, :attributes => {:class => 'level'}, :content => '12'
  26 + end
  27 +
  28 + should 'display person badges' do
  29 + person.add_badge(1)
  30 + person.add_badge(2)
  31 + get :info, :profile => profile.identifier
  32 + assert_select '.badges .badge-list .badge', 2
23 end 33 end
24 34
25 end 35 end
views/gamification/info.html.erb
1 <div class="gamification"> 1 <div class="gamification">
2 <h1><%= _('Gamification Info for %s' % @target.identifier) %></h1> 2 <h1><%= _('Gamification Info for %s' % @target.identifier) %></h1>
3 - <div class="score">  
4 - <span class="label"><%= _('Score: ') %></span>  
5 - <span class="value"><%= @target.points %></span>  
6 - </div>  
7 - <div class="level">  
8 - <span class="label"><%= _('Level: ') %></span>  
9 - <span class="value"><%= @target.level %></span> 3 + <h3> <%= _('Level:') %>&nbsp;<span class="level"><%= @target.level %></span></h3>
  4 + <div class="scores">
  5 + <h3><%= _('Score') %></h3>
  6 + <% Merit::PointRules::AVAILABLE_RULES.each do |category, setting| %>
  7 + <div class="score <%= category %>">
  8 + <span class="label"><%= _('%s: ' % category) %></span>
  9 + <span class="value"><%= @target.points(:category => category) %></span>
  10 + </div>
  11 + <% end %>
  12 + <div class="score total">
  13 + <span class="label"><%= _('Total: ') %></span>
  14 + <span class="value"><%= @target.points %></span>
  15 + </div>
10 </div> 16 </div>
11 <div class="badges"> 17 <div class="badges">
12 <h3><%= _('Badges') %></h3> 18 <h3><%= _('Badges') %></h3>
13 - <ul> 19 + <ul class="badge-list">
14 <% @target.badges.each do |badge| %> 20 <% @target.badges.each do |badge| %>
15 <li class="badge <%= badge.name %>"> 21 <li class="badge <%= badge.name %>">
16 - <span class="description"><%= badge.description %></span>  
17 - <% if badge.level.present? %>  
18 - <span class="label"><%= _('Level') %></span>&nbsp;<span class="level"><%= badge.level %></span>  
19 - <% end %>  
20 - </li>  
21 - <% end %> 22 + <span class="description"><%= badge.description %></span>
  23 + <% if badge.level.present? %>
  24 + <span class="label"><%= _('Level') %></span>&nbsp;<span class="level"><%= badge.level %></span>
  25 + <% end %>
  26 + </li>
  27 + <% end %>
22 </ul> 28 </ul>
23 </div> 29 </div>
24 </div> 30 </div>