Commit 63c14bfafefdc494c33403aec5d0ecf17161be7e
1 parent
624926b0
Exists in
master
and in
1 other branch
Add points when an user vote a content
Showing
3 changed files
with
59 additions
and
5 deletions
Show diff stats
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 | ... | ... |