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 54 :description => _('Point weight for a voted content'),
55 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 68 def weight(category)
... ...
test/unit/article_test.rb
... ... @@ -59,4 +59,27 @@ class ArticleTest < ActiveSupport::TestCase
59 59 end
60 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 85 end
... ...
test/unit/comment_test.rb
... ... @@ -4,11 +4,12 @@ class CommentTest < ActiveSupport::TestCase
4 4  
5 5 def setup
6 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 9 @environment = Environment.default
9 10 GamificationPlugin.gamification_set_rules(@environment)
10 11 end
11   - attr_accessor :person, :article, :environment
  12 + attr_accessor :person, :article, :environment, :author
12 13  
13 14 should 'add merit points to author when create a new comment' do
14 15 create(Comment, :source => article, :author_id => person.id)
... ... @@ -52,7 +53,7 @@ class CommentTest < ActiveSupport::TestCase
52 53 end
53 54  
54 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 57 Vote.create!(:voter => person, :voteable => comment, :vote => 1)
57 58  
58 59 assert_difference 'comment.author.points', -50 do
... ... @@ -69,7 +70,7 @@ class CommentTest < ActiveSupport::TestCase
69 70 end
70 71  
71 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 74 Vote.create!(:voter => person, :voteable => comment, :vote => -1)
74 75  
75 76 assert_difference 'comment.author.points', 50 do
... ... @@ -77,4 +78,26 @@ class CommentTest < ActiveSupport::TestCase
77 78 end
78 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 103 end
... ...