Commit 9ef8392231f6896f53605504b36a0843e600a436

Authored by Leandro Santos
1 parent 1d415104

load the point rules correctly

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
... ... @@ -4,6 +4,7 @@ class PointRulesTest &lt; ActiveSupport::TestCase
4 4  
5 5 def setup
6 6 @environment = Environment.default
  7 + GamificationPlugin.gamification_set_rules(@environment)
7 8 @point_rules = Merit::PointRules.new(@environment)
8 9 end
9 10  
... ...