Commit 86405d39f4d709638c95bd47973360674fab3c91
1 parent
6284311d
Exists in
master
and in
1 other branch
Ignore levels with null value
Showing
2 changed files
with
14 additions
and
1 deletions
Show diff stats
lib/ext/profile.rb
| ... | ... | @@ -8,7 +8,7 @@ class Profile |
| 8 | 8 | settings = GamificationPlugin.settings(environment) |
| 9 | 9 | score = self.points |
| 10 | 10 | last_level = 0 |
| 11 | - (settings.get_setting(:rank_rules) || []).sort_by {|r| r[:points].to_i }.each_with_index do |rule, i| | |
| 11 | + (settings.get_setting(:rank_rules) || []).reject{|r| r[:points].blank?}.sort_by {|r| r[:points].to_i }.each_with_index do |rule, i| | |
| 12 | 12 | return last_level if score < rule[:points].to_i |
| 13 | 13 | last_level = rule[:level] || i+1 |
| 14 | 14 | end | ... | ... |
test/unit/profile_test.rb
| ... | ... | @@ -21,6 +21,19 @@ class ProfileTest < ActiveSupport::TestCase |
| 21 | 21 | assert_equal 2, profile.gamification_plugin_calculate_level |
| 22 | 22 | end |
| 23 | 23 | |
| 24 | + should 'calculate profile level ignoring blank values' do | |
| 25 | + @settings.set_setting(:rank_rules, [ | |
| 26 | + {:points => 10}, | |
| 27 | + {:points => 20}, | |
| 28 | + {:points => 30}, | |
| 29 | + {:points => ""}, | |
| 30 | + {:points => nil}, | |
| 31 | + ]) | |
| 32 | + @settings.save! | |
| 33 | + profile.stubs(:points).returns(25) | |
| 34 | + assert_equal 2, profile.gamification_plugin_calculate_level | |
| 35 | + end | |
| 36 | + | |
| 24 | 37 | should 'calculate profile last level' do |
| 25 | 38 | profile.stubs(:points).returns(35) |
| 26 | 39 | assert_equal 3, profile.gamification_plugin_calculate_level | ... | ... |