Commit b6df7d113113b5b30d585327fa4939df69c13e92

Authored by Leandro Santos
2 parents 9ef83922 1a68c7dd

fixing merge conflit

controllers/admin/gamification_plugin_points_controller.rb
@@ -5,18 +5,18 @@ class GamificationPluginPointsController < PluginAdminController @@ -5,18 +5,18 @@ class GamificationPluginPointsController < PluginAdminController
5 end 5 end
6 6
7 def create 7 def create
8 - if params[:identifier].blank?  
9 - profile_id = nil  
10 - else  
11 - profile = Profile.where identifier: params[:identifier]  
12 - profile = profile.first  
13 - if profile.nil?  
14 - flash[:notice] = _("Can't find a profile with the given identifier")  
15 - redirect_to action: :index  
16 - return  
17 - end  
18 - profile_id = profile.id  
19 - end 8 + if params[:identifier].blank?
  9 + profile_id = nil
  10 + else
  11 + profile = Profile.where identifier: params[:identifier]
  12 + profile = profile.first
  13 + if profile.nil?
  14 + flash[:notice] = _("Can't find a profile with the given identifier")
  15 + redirect_to action: :index
  16 + return
  17 + end
  18 + profile_id = profile.id
  19 + end
20 20
21 GamificationPlugin::PointsType.all.each do |pType| 21 GamificationPlugin::PointsType.all.each do |pType|
22 GamificationPlugin::PointsCategorization.create point_type_id: pType.id, profile_id: profile_id, weight: 0 22 GamificationPlugin::PointsCategorization.create point_type_id: pType.id, profile_id: profile_id, weight: 0
lib/merit/point_rules.rb
@@ -93,7 +93,6 @@ module Merit @@ -93,7 +93,6 @@ module Merit
93 value: 1, 93 value: 1,
94 description: _('Friends'), 94 description: _('Friends'),
95 default_weight: 5, 95 default_weight: 5,
96 - profile_action: false  
97 }, 96 },
98 profile_completion: { 97 profile_completion: {
99 action: ['profile#create', 'profile#update'], 98 action: ['profile#create', 'profile#update'],
@@ -103,8 +102,7 @@ module Merit @@ -103,8 +102,7 @@ module Merit
103 description: _('Profile Completion'), 102 description: _('Profile Completion'),
104 default_weight: 100, 103 default_weight: 100,
105 model_name: "User", 104 model_name: "User",
106 - condition: lambda {|person| person.person? and person.profile_completion_score_condition },  
107 - profile_action: false 105 + condition: lambda {|person, profile| person.person? and person.profile_completion_score_condition },
108 }, 106 },
109 follower: { 107 follower: {
110 action: 'articlefollower#create', 108 action: 'articlefollower#create',
@@ -115,7 +113,6 @@ module Merit @@ -115,7 +113,6 @@ module Merit
115 default_weight: 10, 113 default_weight: 10,
116 model: 'ArticleFollower', 114 model: 'ArticleFollower',
117 condition: lambda {|follow, profile| profile.nil? or follow.article.profile == profile }, 115 condition: lambda {|follow, profile| profile.nil? or follow.article.profile == profile },
118 - profile_action: true  
119 }, 116 },
120 followed_article_author: { 117 followed_article_author: {
121 action: 'articlefollower#create', 118 action: 'articlefollower#create',
@@ -126,7 +123,6 @@ module Merit @@ -126,7 +123,6 @@ module Merit
126 default_weight: 20, 123 default_weight: 20,
127 model: 'ArticleFollower', 124 model: 'ArticleFollower',
128 condition: lambda {|follow, profile| profile.nil? or follow.article.profile == profile }, 125 condition: lambda {|follow, profile| profile.nil? or follow.article.profile == profile },
129 - profile_action: true  
130 } 126 }
131 } 127 }
132 128
@@ -138,11 +134,7 @@ module Merit @@ -138,11 +134,7 @@ module Merit
138 def condition(setting, target, profile) 134 def condition(setting, target, profile)
139 condition = setting[:condition] 135 condition = setting[:condition]
140 if condition.present? 136 if condition.present?
141 - if setting.fetch(:profile_action, true)  
142 - condition.call(target, profile)  
143 - else  
144 - condition.call(target)  
145 - end 137 + condition.call(target, profile)
146 else 138 else
147 true 139 true
148 end 140 end
test/functional/application_controller_test.rb
@@ -8,6 +8,7 @@ class ApplicationControllerTest < ActionController::TestCase @@ -8,6 +8,7 @@ class ApplicationControllerTest < ActionController::TestCase
8 def setup 8 def setup
9 @environment = Environment.default 9 @environment = Environment.default
10 @environment.enable_plugin(GamificationPlugin) 10 @environment.enable_plugin(GamificationPlugin)
  11 + create_point_rule_definition('article_author')
11 @controller = TestController.new 12 @controller = TestController.new
12 @controller.stubs(:environment).returns(@environment) 13 @controller.stubs(:environment).returns(@environment)
13 end 14 end
test/functional/gamification_plugin_admin_controller_test.rb
@@ -10,27 +10,6 @@ class GamificationPluginAdminControllerTest < ActionController::TestCase @@ -10,27 +10,6 @@ class GamificationPluginAdminControllerTest < ActionController::TestCase
10 10
11 attr_accessor :person, :environment 11 attr_accessor :person, :environment
12 12
13 - should 'save point rules' do  
14 - post :points, :settings => {:point_rules => {'comment_author' => {'weight' => '10'}}}  
15 - @settings = Noosfero::Plugin::Settings.new(environment.reload, GamificationPlugin)  
16 - assert_equal({:point_rules => {'comment_author' => {'weight' => '10'}}}, @settings.settings)  
17 - end  
18 -  
19 - should 'load default weights for point rules' do  
20 - get :points  
21 - Merit::PointRules::AVAILABLE_RULES.each do |category, setting|  
22 - assert_select 'input[name=?][value=?]', "settings[point_rules][#{category}[weight]]", setting[:default_weight]  
23 - end  
24 - end  
25 -  
26 - should 'load saved weights for point rules' do  
27 - settings = Noosfero::Plugin::Settings.new(environment, GamificationPlugin, {})  
28 - settings.set_setting(:point_rules, {'comment_author' => {'weight' => '500'}})  
29 - settings.save!  
30 - get :points  
31 - assert_select 'input[name=?][value=?]', "settings[point_rules][comment_author[weight]]", 500  
32 - end  
33 -  
34 should 'save rank rules' do 13 should 'save rank rules' do
35 post :levels, :settings => {:rank_rules => [{:level => 1, :points => 10}]} 14 post :levels, :settings => {:rank_rules => [{:level => 1, :points => 10}]}
36 @settings = Noosfero::Plugin::Settings.new(environment.reload, GamificationPlugin) 15 @settings = Noosfero::Plugin::Settings.new(environment.reload, GamificationPlugin)
test/functional/gamification_plugin_points_controller_test.rb 0 → 100644
@@ -0,0 +1,70 @@ @@ -0,0 +1,70 @@
  1 +require 'test_helper'
  2 +
  3 +class GamificationPluginPointsControllerTest < ActionController::TestCase
  4 +
  5 + setup do
  6 + @environment = Environment.default
  7 + login_as(create_admin_user(@environment))
  8 + end
  9 +
  10 + should "should get index" do
  11 + get :index
  12 + assert_response :success
  13 + assert_not_nil assigns(:categories)
  14 + end
  15 +
  16 + should "should create gamification_plugin_point_categorizations for existing community" do
  17 + community = fast_create(Community)
  18 + create_all_point_rules
  19 + count = GamificationPlugin::PointsType.count
  20 + assert_difference('GamificationPlugin::PointsCategorization.for_profile(community.identifier).count', count) do
  21 + post :create, identifier: community.identifier
  22 + end
  23 + end
  24 +
  25 + should "should create gamification_plugin_point_categorizations for general rules" do
  26 + create_all_point_rules
  27 + count = GamificationPlugin::PointsType.count
  28 + assert_difference('GamificationPlugin::PointsCategorization.count', count) do
  29 + post :create, identifier: ''
  30 + end
  31 + end
  32 +
  33 + should "should not create gamification_plugin_point_categorizations for not existing community" do
  34 + create_all_point_rules
  35 + assert_no_difference('GamificationPlugin::PointsCategorization.count') do
  36 + post :create, identifier: 'any_not_existent_community_name'
  37 + end
  38 + end
  39 +
  40 + should "should get edit" do
  41 + community = fast_create(Community)
  42 + create_point_rule_definition('article_author', community)
  43 + get :edit, id: community.id
  44 + assert_not_nil assigns(:profile)
  45 + assert_not_nil assigns(:categories)
  46 + end
  47 +
  48 + should "should update gamification_plugin_points" do
  49 + community = fast_create(Community)
  50 + create_point_rule_definition('article_author', community)
  51 + weights = {}
  52 + GamificationPlugin::PointsCategorization.for_profile(community.identifier).each do |c|
  53 + weights[c.id] = {weight: c.weight+10}
  54 + end
  55 + put :edit, id: community.id, gamification_plugin_points_categorizations: weights
  56 + weights.each do |id, w|
  57 + c = GamificationPlugin::PointsCategorization.find id
  58 + assert_equal c.weight, w[:weight]
  59 + end
  60 + end
  61 +
  62 + should "should destroy gamification_plugin_point" do
  63 + community = fast_create(Community)
  64 + create_point_rule_definition('article_author', community)
  65 + count = GamificationPlugin::PointsCategorization.for_profile(community.identifier).count
  66 + assert_difference('GamificationPlugin::PointsCategorization.count',-count) do
  67 + delete :destroy, id: community.id
  68 + end
  69 + end
  70 +end