Commit 9ef8392231f6896f53605504b36a0843e600a436
1 parent
1d415104
Exists in
master
and in
1 other branch
load the point rules correctly
Showing
5 changed files
with
18 additions
and
35 deletions
Show diff stats
lib/gamification_plugin.rb
| ... | ... | @@ -24,6 +24,12 @@ class GamificationPlugin < Noosfero::Plugin |
| 24 | 24 | Merit::AppBadgeRules.clear |
| 25 | 25 | Merit::AppPointRules.merge!(Merit::PointRules.new(environment).defined_rules) |
| 26 | 26 | Merit::AppBadgeRules.merge!(Merit::BadgeRules.new(environment).defined_rules) |
| 27 | + #FIXME We have to make a refactor of this code to avoid database data dependendy | |
| 28 | + Merit::PointRules::AVAILABLE_RULES.map do |rule_name, rule| | |
| 29 | + point_type = GamificationPlugin::PointsType.find_by_name rule_name | |
| 30 | + point_type = GamificationPlugin::PointsType.create name: rule_name, description: rule['description'] if point_type.nil? | |
| 31 | + GamificationPlugin::PointsCategorization.create point_type_id: point_type.id, weight: rule[:default_weight] | |
| 32 | + end | |
| 27 | 33 | end |
| 28 | 34 | |
| 29 | 35 | def application_controller_filters | ... | ... |
lib/merit/point_rules.rb
| ... | ... | @@ -127,37 +127,7 @@ module Merit |
| 127 | 127 | model: 'ArticleFollower', |
| 128 | 128 | condition: lambda {|follow, profile| profile.nil? or follow.article.profile == profile }, |
| 129 | 129 | profile_action: true |
| 130 | - }, | |
| 131 | - #mobilizer: { | |
| 132 | - #action: 'mobilize#create', | |
| 133 | - #undo_action: 'mobilize#destroy', | |
| 134 | - #to: lambda {|target| target.source.author }, | |
| 135 | - #value: 1, | |
| 136 | - #description: _('Mobilized Article Author'), | |
| 137 | - #default_weight: 60, | |
| 138 | - #condition: lambda {|target, profile| profile.nil? or target.source.profile == profile }, | |
| 139 | - #profile_action: true | |
| 140 | - #}, | |
| 141 | - #mobilized_article_author: { | |
| 142 | - #action: 'mobilize#create', | |
| 143 | - #undo_action: 'mobilize#destroy', | |
| 144 | - #to: lambda {|target| target.source.author }, | |
| 145 | - #value: 1, | |
| 146 | - #description: _('Mobilized Article Author'), | |
| 147 | - #default_weight: 70, | |
| 148 | - #condition: lambda {|follow, profile| profile.nil? or follow.source.profile == profile }, | |
| 149 | - #profile_action: true | |
| 150 | - #}, | |
| 151 | - #mobilized_article: { | |
| 152 | - #action: 'mobilize#create', | |
| 153 | - #undo_action: 'mobilize#destroy', | |
| 154 | - #to: lambda {|target| target.source }, | |
| 155 | - #value: 1, | |
| 156 | - #description: _('Mobilized Article Author'), | |
| 157 | - #default_weight: 70, | |
| 158 | - #condition: lambda {|follow, profile| profile.nil? or follow.source.profile == profile }, | |
| 159 | - #profile_action: true | |
| 160 | - #} | |
| 130 | + } | |
| 161 | 131 | } |
| 162 | 132 | |
| 163 | 133 | def calculate_score(target, weight, value) | ... | ... |
test/test_helper.rb
| ... | ... | @@ -4,7 +4,7 @@ def create_point_rule_definition(rule_name, profile = nil, config = {}) |
| 4 | 4 | rule = load_point_rule(rule_name, config) |
| 5 | 5 | point_type = GamificationPlugin::PointsType.find_by_name rule_name |
| 6 | 6 | point_type = GamificationPlugin::PointsType.create name: rule_name, description: rule['description'] if point_type.nil? |
| 7 | - GamificationPlugin::PointsCategorization.create! point_type_id: point_type.id, profile: profile, weight: rule[:default_weight] | |
| 7 | + GamificationPlugin::PointsCategorization.create point_type_id: point_type.id, profile: profile, weight: rule[:default_weight] | |
| 8 | 8 | GamificationPlugin.gamification_set_rules(@environment) |
| 9 | 9 | end |
| 10 | 10 | |
| ... | ... | @@ -32,3 +32,4 @@ def person_points_debug(person) |
| 32 | 32 | puts GamificationPlugin::PointsCategorization.find(sp.score.category).point_type.inspect |
| 33 | 33 | end |
| 34 | 34 | end |
| 35 | + | ... | ... |
test/unit/article_follower.rb
| ... | ... | @@ -37,15 +37,20 @@ class ArticleTest < ActiveSupport::TestCase |
| 37 | 37 | create_point_rule_definition('followed_article_author') |
| 38 | 38 | author = create_user('someuser').person |
| 39 | 39 | article = create(TextArticle, :profile_id => community.id, :author => author) |
| 40 | - amount = author.score_points.count | |
| 40 | + | |
| 41 | + author_amount = author.score_points.count | |
| 42 | + person_amount = person.score_points.count | |
| 41 | 43 | article.person_followers << person |
| 42 | - assert_equal amount + 1, author.score_points.count | |
| 44 | + | |
| 45 | + assert_equal author_amount + 1, author.score_points.count | |
| 43 | 46 | last_point = author.score_points.last |
| 44 | 47 | assert_equal article.article_followers.last.id, last_point.action.target_id |
| 45 | - assert_equal amount + 1, person.score_points.count | |
| 48 | + | |
| 49 | + assert_equal person_amount + 1, person.score_points.count | |
| 46 | 50 | last_point = person.score_points.last |
| 47 | 51 | assert_equal article.article_followers.last.id, last_point.action.target_id |
| 48 | 52 | end |
| 53 | + | |
| 49 | 54 | # should 'subtract merit points to author when destroy an article' do |
| 50 | 55 | # article = create(TextArticle, :profile_id => @community.id, :author => person) |
| 51 | 56 | # assert_equal 1, person.score_points.count | ... | ... |
test/unit/point_rules_test.rb