Commit 63c14bfafefdc494c33403aec5d0ecf17161be7e

Authored by Victor Costa
1 parent 624926b0

Add points when an user vote a content

lib/merit/point_rules.rb
@@ -54,7 +54,15 @@ module Merit @@ -54,7 +54,15 @@ module Merit
54 :description => _('Point weight for a voted content'), 54 :description => _('Point weight for a voted content'),
55 :default_weight => 50 55 :default_weight => 50
56 }, 56 },
57 - # TODO comment_voter and article_voter 57 + :vote_voter => {
  58 + :action => 'vote#create',
  59 + :undo_action => 'vote#destroy',
  60 + :to => lambda {|vote| vote.voter},
  61 + :profile => lambda {|vote| vote.voter},
  62 + :value => lambda {|vote| 1},
  63 + :description => _('Point weight for a voter'),
  64 + :default_weight => 10
  65 + },
58 } 66 }
59 67
60 def weight(category) 68 def weight(category)
test/unit/article_test.rb
@@ -59,4 +59,27 @@ class ArticleTest < ActiveSupport::TestCase @@ -59,4 +59,27 @@ class ArticleTest < ActiveSupport::TestCase
59 end 59 end
60 end 60 end
61 61
  62 + should 'add merit points to community when create a new article' do
  63 + community = fast_create(Community)
  64 + assert_difference 'community.score_points.count' do
  65 + create(Article, :profile_id => community.id, :author => person)
  66 + end
  67 + end
  68 +
  69 + should 'add merit points to voter when he likes an article' do
  70 + article = create(Article, :name => 'Test', :profile => person, :author => person)
  71 +
  72 + assert_difference 'article.author.points(:category => :vote_voter)', 10 do
  73 + Vote.create!(:voter => person, :voteable => article, :vote => 1)
  74 + end
  75 + end
  76 +
  77 + should 'add merit points to voter when he dislikes an article' do
  78 + article = create(Article, :name => 'Test', :profile => person, :author => person)
  79 +
  80 + assert_difference 'article.author.points(:category => :vote_voter)', 10 do
  81 + Vote.create!(:voter => person, :voteable => article, :vote => -1)
  82 + end
  83 + end
  84 +
62 end 85 end
test/unit/comment_test.rb
@@ -4,11 +4,12 @@ class CommentTest < ActiveSupport::TestCase @@ -4,11 +4,12 @@ class CommentTest < ActiveSupport::TestCase
4 4
5 def setup 5 def setup
6 @person = create_user('testuser').person 6 @person = create_user('testuser').person
7 - @article = create(TextileArticle, :profile_id => person.id) 7 + @author = create_user('testauthoruser').person
  8 + @article = create(TextileArticle, :profile_id => person.id, :author_id => @author.id)
8 @environment = Environment.default 9 @environment = Environment.default
9 GamificationPlugin.gamification_set_rules(@environment) 10 GamificationPlugin.gamification_set_rules(@environment)
10 end 11 end
11 - attr_accessor :person, :article, :environment 12 + attr_accessor :person, :article, :environment, :author
12 13
13 should 'add merit points to author when create a new comment' do 14 should 'add merit points to author when create a new comment' do
14 create(Comment, :source => article, :author_id => person.id) 15 create(Comment, :source => article, :author_id => person.id)
@@ -52,7 +53,7 @@ class CommentTest < ActiveSupport::TestCase @@ -52,7 +53,7 @@ class CommentTest < ActiveSupport::TestCase
52 end 53 end
53 54
54 should 'subtract merit points to comment owner when an user unlike his comment' do 55 should 'subtract merit points to comment owner when an user unlike his comment' do
55 - comment = create(Comment, :source => article, :author_id => person.id) 56 + comment = create(Comment, :source => article, :author_id => author.id)
56 Vote.create!(:voter => person, :voteable => comment, :vote => 1) 57 Vote.create!(:voter => person, :voteable => comment, :vote => 1)
57 58
58 assert_difference 'comment.author.points', -50 do 59 assert_difference 'comment.author.points', -50 do
@@ -69,7 +70,7 @@ class CommentTest < ActiveSupport::TestCase @@ -69,7 +70,7 @@ class CommentTest < ActiveSupport::TestCase
69 end 70 end
70 71
71 should 'add merit points from comment owner when an user remove a dislike in his comment' do 72 should 'add merit points from comment owner when an user remove a dislike in his comment' do
72 - comment = create(Comment, :source => article, :author_id => person.id) 73 + comment = create(Comment, :source => article, :author_id => author.id)
73 Vote.create!(:voter => person, :voteable => comment, :vote => -1) 74 Vote.create!(:voter => person, :voteable => comment, :vote => -1)
74 75
75 assert_difference 'comment.author.points', 50 do 76 assert_difference 'comment.author.points', 50 do
@@ -77,4 +78,26 @@ class CommentTest < ActiveSupport::TestCase @@ -77,4 +78,26 @@ class CommentTest < ActiveSupport::TestCase
77 end 78 end
78 end 79 end
79 80
  81 + should 'add merit points to article author when create a new comment' do
  82 + assert_difference 'author.score_points.count' do
  83 + create(Comment, :source => article, :author_id => person.id)
  84 + end
  85 + end
  86 +
  87 + should 'add merit points to voter when he likes a comment' do
  88 + comment = create(Comment, :source => article, :author_id => person.id)
  89 +
  90 + assert_difference 'comment.author.points(:category => :vote_voter)', 10 do
  91 + Vote.create!(:voter => person, :voteable => comment, :vote => 1)
  92 + end
  93 + end
  94 +
  95 + should 'add merit points to voter when he dislikes a comment' do
  96 + comment = create(Comment, :source => article, :author_id => person.id)
  97 +
  98 + assert_difference 'comment.author.points(:category => :vote_voter)', 10 do
  99 + Vote.create!(:voter => person, :voteable => comment, :vote => -1)
  100 + end
  101 + end
  102 +
80 end 103 end