From 8f6e8ef9bb963dc09e895d2273520156711b3f95 Mon Sep 17 00:00:00 2001 From: Hugo Melo Date: Fri, 16 Oct 2015 16:09:31 -0300 Subject: [PATCH] Add more tests --- test/unit/article_test.rb | 214 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------- test/unit/comment_test.rb | 255 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------ 2 files changed, 234 insertions(+), 235 deletions(-) diff --git a/test/unit/article_test.rb b/test/unit/article_test.rb index 93227c1..f9fe99a 100644 --- a/test/unit/article_test.rb +++ b/test/unit/article_test.rb @@ -118,108 +118,116 @@ class ArticleTest < ActiveSupport::TestCase assert_equal 'negative_votes_received', person.reload.badges.first.name end -# FIXME Put the tests above to works in profile context. -# They are the same tests of the general context -# -# should 'add merit points to author when create a new article' do -# create(TextArticle, :profile_id => community.id, :author => person) -# assert_equal 1, person.score_points.count -# assert person.score_points.first.action.present? -# end -# -# should 'subtract merit points to author when destroy an article' do -# article = create(TextArticle, :profile_id => @community.id, :author => person) -# assert_equal 1, person.score_points.count -# article.destroy -# assert_equal 2, person.score_points.count -# assert_equal 0, person.points -# end -# -# should 'add merit badge to author when create 5 new articles' do -# GamificationPlugin::Badge.create!(:owner => environment, :name => 'article_author', :level => 1) -# GamificationPlugin.gamification_set_rules(environment) -# -# 5.times { create(TextArticle, :profile_id => person.id, :author => person) } -# assert_equal 'article_author', person.badges.first.name -# assert_equal 1, person.badges.first.level -# end -# -# should 'add merit badge level 2 to author when create 10 new articles' do -# GamificationPlugin::Badge.create!(:owner => environment, :name => 'article_author', :level => 1) -# GamificationPlugin::Badge.create!(:owner => environment, :name => 'article_author', :level => 2, :custom_fields => {:threshold => 10}) -# GamificationPlugin.gamification_set_rules(environment) -# -# 10.times { create(TextArticle, :profile_id => person.id, :author => person) } -# assert_equal ['article_author'], person.badges.map(&:name).uniq -# assert_equal [1, 2], person.badges.map(&:level) -# end -# -# should 'add merit points to community article owner when an user like it' do -# article = create(TextArticle, :name => 'Test', :profile => @community, :author => person) -# -# c = GamificationPlugin::PointsCategorization.for_type(:vote_voteable_author).where(profile_id: @community.id).first -# assert_difference 'article.author.points(:category => c.id.to_s)', c.weight do -# Vote.create!(:voter => person, :voteable => article, :vote => 1) -# end -# end -# -# should 'add merit points to article when an user like it' do -# article = create(TextArticle, :name => 'Test', :profile => @community, :author => person) -# article = article.reload -# -# c = GamificationPlugin::PointsCategorization.for_type(:vote_voteable).where(profile_id: @community.id).first -# assert_difference 'article.points(:category => c.id.to_s)', c.weight do -# Vote.create!(:voter => person, :voteable => article, :vote => 1) -# end -# end -# -# should 'add merit points to community when create a new article' do -# assert_difference 'community.score_points.count' do -# create(TextArticle, :profile_id => @community.id, :author => person) -# end -# end -# -# should 'add merit points to voter when he likes an article' do -# article = create(TextArticle, :name => 'Test', :profile => @community, :author => person) -# -# c = GamificationPlugin::PointsCategorization.for_type(:vote_voter).where(profile_id: @community.id).first -# assert_difference 'article.author.points(:category => c.id.to_s)', c.weight do -# Vote.create!(:voter => person, :voteable => article, :vote => 1) -# end -# end -# -# should 'add merit points to voter when he dislikes an article' do -# article = create(TextArticle, :name => 'Test', :profile => @community, :author => person) -# -# c = GamificationPlugin::PointsCategorization.for_type(:vote_voter).where(profile_id: @community.id).first -# assert_difference 'article.author.points(:category => c.id.to_s)', c.weight do -# Vote.create!(:voter => person, :voteable => article, :vote => -1) -# end -# end -# -# should 'add badge to author when users like his article' do -# GamificationPlugin::Badge.create!(:owner => environment, :name => 'positive_votes_received') -# GamificationPlugin.gamification_set_rules(environment) -# -# article = create(TextArticle, :name => 'Test', :profile => person, :author => person) -# 4.times { Vote.create!(:voter => fast_create(Person), :voteable => article, :vote => 1) } -# Vote.create!(:voter => fast_create(Person), :voteable => article, :vote => -1) -# assert_equal [], person.badges -# Vote.create!(:voter => fast_create(Person), :voteable => article, :vote => 1) -# assert_equal 'positive_votes_received', person.reload.badges.first.name -# end -# -# should 'add badge to author when users dislike his article' do -# GamificationPlugin::Badge.create!(:owner => environment, :name => 'negative_votes_received') -# GamificationPlugin.gamification_set_rules(environment) -# -# article = create(TextArticle, :name => 'Test', :profile => person, :author => person) -# 4.times { Vote.create!(:voter => fast_create(Person), :voteable => article, :vote => -1) } -# Vote.create!(:voter => fast_create(Person), :voteable => article, :vote => 1) -# assert_equal [], person.badges -# Vote.create!(:voter => fast_create(Person), :voteable => article, :vote => -1) -# assert_equal 'negative_votes_received', person.reload.badges.first.name -# end -# + # community related tests + should 'add merit community points to author when create a new article on community' do + community = fast_create(Community) + create_point_rule_definition('article_author', community) + create(TextArticle, profile_id: community.id, author_id: person.id) + assert_equal 1, person.score_points.count + assert person.score_points.first.action.present? + end + + should 'subtract merit points to author when destroy an article on community' do + community = fast_create(Community) + create_point_rule_definition('article_author', community) + article = create(TextArticle, profile_id: community.id, author_id: person.id) + assert_equal 1, person.score_points.count + article.destroy + assert_equal 2, person.score_points.count + assert_equal 0, person.points + end + + #should 'add merit badge to author when create 5 new articles on community' do + #GamificationPlugin::Badge.create!(:owner => environment, :name => 'article_author', :level => 1) + #GamificationPlugin.gamification_set_rules(environment) + + #5.times { create(TextArticle, :profile_id => person.id, :author => person) } + #assert_equal 'article_author', person.badges.first.name + #assert_equal 1, person.badges.first.level + #end + + #should 'add merit badge level 2 to author when create 10 new articles on community' do + #GamificationPlugin::Badge.create!(:owner => environment, :name => 'article_author', :level => 1) + #GamificationPlugin::Badge.create!(:owner => environment, :name => 'article_author', :level => 2, :custom_fields => {:threshold => 10}) + #GamificationPlugin.gamification_set_rules(environment) + + #10.times { create(TextArticle, :profile_id => person.id, :author => person) } + #assert_equal ['article_author'], person.badges.map(&:name).uniq + #assert_equal [1, 2], person.badges.map(&:level) + #end + + #should 'add merit points to community article owner when an user like it on community' do + #create_point_rule_definition('vote_voteable_author') + #community = fast_create(Community) + #article = create(TextArticle, :name => 'Test', :profile => community, :author => person) + + #c = GamificationPlugin::PointsCategorization.for_type(:vote_voteable_author).first + #assert_difference 'article.author.points(:category => c.id.to_s)', c.weight do + #Vote.create!(:voter => person, :voteable => article, :vote => 1) + #end + #end + + #should 'add merit points to article when an user like it on community' do + #create_point_rule_definition('vote_voteable') + #article = create(TextArticle, :name => 'Test', :profile => person, :author => person) + #article = article.reload + + #c = GamificationPlugin::PointsCategorization.for_type(:vote_voteable).first + #assert_difference 'article.points(:category => c.id.to_s)', c.weight do + #Vote.create!(:voter => person, :voteable => article, :vote => 1) + #end + #end + + #should 'add merit points to community when create a new article on community' do + #create_point_rule_definition('article_community') + #community = fast_create(Community) + #assert_difference 'community.score_points.count' do + #create(TextArticle, :profile_id => community.id, :author => person) + #end + #end + + #should 'add merit points to voter when he likes an article on community' do + #create_point_rule_definition('vote_voter') + #article = create(TextArticle, :name => 'Test', :profile => person, :author => person) + + #c = GamificationPlugin::PointsCategorization.for_type(:vote_voter).first + #assert_difference 'article.author.points(:category => c.id.to_s)', c.weight do + #Vote.create!(:voter => person, :voteable => article, :vote => 1) + #end + #end + + #should 'add merit points to voter when he dislikes an article on community' do + #create_point_rule_definition('vote_voter') + #article = create(TextArticle, :name => 'Test', :profile => person, :author => person) + + #c = GamificationPlugin::PointsCategorization.for_type(:vote_voter).first + #assert_difference 'article.author.points(:category => c.id.to_s)', c.weight do + #Vote.create!(:voter => person, :voteable => article, :vote => -1) + #end + #end + + #should 'add badge to author when users like his article on community' do + #GamificationPlugin::Badge.create!(:owner => environment, :name => 'positive_votes_received') + #GamificationPlugin.gamification_set_rules(environment) + + #article = create(TextArticle, :name => 'Test', :profile => person, :author => person) + #4.times { Vote.create!(:voter => fast_create(Person), :voteable => article, :vote => 1) } + #Vote.create!(:voter => fast_create(Person), :voteable => article, :vote => -1) + #assert_equal [], person.badges + #Vote.create!(:voter => fast_create(Person), :voteable => article, :vote => 1) + #assert_equal 'positive_votes_received', person.reload.badges.first.name + #end + + #should 'add badge to author when users dislike his article on community' do + #GamificationPlugin::Badge.create!(:owner => environment, :name => 'negative_votes_received') + #GamificationPlugin.gamification_set_rules(environment) + + #article = create(TextArticle, :name => 'Test', :profile => person, :author => person) + #4.times { Vote.create!(:voter => fast_create(Person), :voteable => article, :vote => -1) } + #Vote.create!(:voter => fast_create(Person), :voteable => article, :vote => 1) + #assert_equal [], person.badges + #Vote.create!(:voter => fast_create(Person), :voteable => article, :vote => -1) + #assert_equal 'negative_votes_received', person.reload.badges.first.name + #end end diff --git a/test/unit/comment_test.rb b/test/unit/comment_test.rb index c4b217a..0dc6eb3 100644 --- a/test/unit/comment_test.rb +++ b/test/unit/comment_test.rb @@ -153,138 +153,129 @@ class CommentTest < ActiveSupport::TestCase end end + ## Community related tests + should 'add merit community points to author when create a new comment in a community' do + community = fast_create(Community) + article = create(TextArticle, profile_id: community.id, author_id: person.id) + create_point_rule_definition('comment_author', article.profile) + create(Comment, :source => article, :author_id => person.id) + assert_equal 1, person.score_points.count + end + + should 'subtract merit community points from author when destroy a community comment' do + community = fast_create(Community) + article = create(TextArticle, profile_id: community.id, author_id: person.id) + create_point_rule_definition('comment_author', article.profile) + comment = create(Comment, :source => article, :author_id => person.id) + assert_equal 1, person.score_points.count + comment.destroy + assert_equal 2, person.score_points.count + assert_equal 0, person.points + end + + should 'add merit communty points to comment owner when an user like his comment inside a community' do + community = fast_create(Community) + article = create(TextArticle, profile_id: community.id, author_id: person.id) + create_point_rule_definition('vote_voteable_author', community) + comment = create(Comment, :source => article, :author_id => person.id) + + c = GamificationPlugin::PointsCategorization.for_type(:vote_voteable_author).where(profile_id: article.profile.id).first + assert_difference 'comment.author.points(:category => c.id.to_s)', c.weight do + Vote.create!(:voter => person, :voteable => comment, :vote => 1) + end + end + + should 'subtract merit community points to comment owner when an user unlike his comment inside a community' do + community = fast_create(Community) + article = create(TextArticle, profile_id: community.id, author_id: person.id) + create_point_rule_definition('vote_voteable_author', community) + comment = create(Comment, :source => article, :author_id => author.id) + Vote.create!(:voter => person, :voteable => comment, :vote => 1) + + c = GamificationPlugin::PointsCategorization.for_type(:vote_voteable_author).first + assert_difference 'comment.author.points', -1*c.weight do + Vote.where(:voteable_id => comment.id).destroy_all + end + end + + should 'subtract merit community points from comment owner when an user dislike his comment inside a community' do + community = fast_create(Community) + article = create(TextArticle, profile_id: community.id, author_id: person.id) + create_point_rule_definition('vote_voteable_author', community) + comment = create(Comment, :source => article, :author_id => person.id) + + c = GamificationPlugin::PointsCategorization.for_type(:vote_voteable_author).where(profile_id: article.profile.id).first + assert_difference 'comment.author.points(:category => c.id.to_s)', -1*c.weight do + Vote.create!(:voter => person, :voteable => comment, :vote => -1) + end + end + + should 'add merit community points from comment owner when an user remove a dislike in his comment inside a community' do + community = fast_create(Community) + article = create(TextArticle, profile_id: community.id, author_id: person.id) + create_point_rule_definition('vote_voteable_author', community) + comment = create(Comment, :source => article, :author_id => author.id) + Vote.create!(:voter => person, :voteable => comment, :vote => -1) + + c = GamificationPlugin::PointsCategorization.for_type(:vote_voteable_author).first + assert_difference 'comment.author.points', c.weight do + Vote.where(:voteable_id => comment.id).destroy_all + end + end + + should 'add merit community points to article author when create a new comment inside a community' do + community = fast_create(Community) + article = create(TextArticle, profile_id: community.id, author_id: author.id) + create_point_rule_definition('comment_article_author', community) + assert_difference 'author.score_points.count' do + create(Comment, :source => article, :author_id => author.id) + end + end + + should 'add merit community points to voter when he likes a comment inside a community' do + community = fast_create(Community) + article = create(TextArticle, profile_id: community.id, author_id: person.id) + create_point_rule_definition('vote_voter') + comment = create(Comment, :source => article, :author_id => person.id) + + c = GamificationPlugin::PointsCategorization.for_type(:vote_voter).first + assert_difference 'comment.author.points(:category => c.id.to_s)', c.weight do + Vote.create!(:voter => person, :voteable => comment, :vote => 1) + end + end + + should 'add merit community points to voter when he dislikes a comment inside a community' do + community = fast_create(Community) + article = create(TextArticle, profile_id: community.id, author_id: person.id) + create_point_rule_definition('vote_voter') + comment = create(Comment, :source => article, :author_id => person.id) + + c = GamificationPlugin::PointsCategorization.for_type(:vote_voter).first + assert_difference 'comment.author.points(:category => c.id.to_s)', c.weight do + Vote.create!(:voter => person, :voteable => comment, :vote => -1) + end + end + + should 'add merit community points to source article when create a comment inside a community' do + community = fast_create(Community) + article = create(TextArticle, profile_id: community.id, author_id: person.id) + create_point_rule_definition('comment_article') + c = GamificationPlugin::PointsCategorization.for_type(:comment_article).first + assert_difference 'article.points(:category => c.id.to_s)', c.weight do + create(Comment, :source => article, :author_id => person.id) + end + end + + should 'add merit community points to source community when create a comment' do + create_point_rule_definition('comment_community') + community = fast_create(Community) + article = create(TextileArticle, :profile_id => community.id, :author_id => author.id) + + c = GamificationPlugin::PointsCategorization.for_type(:comment_community).first + assert_difference 'community.points(:category => c.id.to_s)', c.weight do + create(Comment, :source => article, :author_id => person.id) + end + end -# FIXME Put the tests above to works in profile context. -# They are the same tests of the general context -# -# should 'add merit points to author when create a new comment' do -# create(Comment, :source => article, :author_id => person.id) -# assert_equal 1, person.score_points.count -# end -# -# should 'subtract merit points from author when destroy a comment' do -# comment = create(Comment, :source => article, :author_id => person.id) -# assert_equal 1, person.score_points.count -# comment.destroy -# assert_equal 2, person.score_points.count -# assert_equal 0, person.points -# end -# -# should 'add merit badge to author when create 5 new comments' do -# GamificationPlugin::Badge.create!(:owner => environment, :name => 'comment_author') -# GamificationPlugin.gamification_set_rules(environment) -# -# 5.times { create(Comment, :source => article, :author_id => person.id) } -# assert_equal 'comment_author', person.badges.first.name -# end -# -# should 'add merit badge to source author when create 5 new comments' do -# GamificationPlugin::Badge.create!(:owner => environment, :name => 'comment_received') -# GamificationPlugin.gamification_set_rules(environment) -# -# 5.times { create(Comment, :source => article, :author_id => person.id) } -# assert_equal 'comment_received', author.badges.first.name -# end -# -# should 'add badge to author when users like his comment' do -# GamificationPlugin::Badge.create!(:owner => environment, :name => 'positive_votes_received') -# GamificationPlugin.gamification_set_rules(environment) -# -# comment = create(Comment, :source => article, :author_id => person.id) -# 4.times { Vote.create!(:voter => fast_create(Person), :voteable => comment, :vote => 1) } -# Vote.create!(:voter => fast_create(Person), :voteable => comment, :vote => -1) -# assert_equal [], person.badges -# Vote.create!(:voter => fast_create(Person), :voteable => comment, :vote => 1) -# assert_equal 'positive_votes_received', person.reload.badges.first.name -# end -# -# should 'add badge to author when users dislike his comment' do -# GamificationPlugin::Badge.create!(:owner => environment, :name => 'negative_votes_received') -# GamificationPlugin.gamification_set_rules(environment) -# -# comment = create(Comment, :source => article, :author_id => person.id) -# 4.times { Vote.create!(:voter => fast_create(Person), :voteable => comment, :vote => -1) } -# Vote.create!(:voter => fast_create(Person), :voteable => comment, :vote => 1) -# assert_equal [], person.badges -# Vote.create!(:voter => fast_create(Person), :voteable => comment, :vote => -1) -# assert_equal 'negative_votes_received', person.reload.badges.first.name -# end -# -# should 'add merit points to comment owner when an user like his comment' do -# comment = create(Comment, :source => article, :author_id => person.id) -# -# c = GamificationPlugin::PointsCategorization.for_type(:vote_voteable_author).where(profile_id: article.profile.id).first -# assert_difference 'comment.author.points(:category => c.id.to_s)', c.weight do -# Vote.create!(:voter => person, :voteable => comment, :vote => 1) -# end -# end -# -# should 'subtract merit points to comment owner when an user unlike his comment' do -# comment = create(Comment, :source => article, :author_id => author.id) -# Vote.create!(:voter => person, :voteable => comment, :vote => 1) -# -# assert_difference 'comment.author.points', -20 do -# Vote.where(:voteable_id => comment.id).destroy_all -# end -# end -# -# should 'subtract merit points from comment owner when an user dislike his comment' do -# comment = create(Comment, :source => article, :author_id => person.id) -# -# c = GamificationPlugin::PointsCategorization.for_type(:vote_voteable_author).where(profile_id: article.profile.id).first -# assert_difference 'comment.author.points(:category => c.id.to_s)', -1*c.weight do -# Vote.create!(:voter => person, :voteable => comment, :vote => -1) -# end -# end -# -# should 'add merit points from comment owner when an user remove a dislike in his comment' do -# comment = create(Comment, :source => article, :author_id => author.id) -# Vote.create!(:voter => person, :voteable => comment, :vote => -1) -# -# assert_difference 'comment.author.points', 20 do -# Vote.where(:voteable_id => comment.id).destroy_all -# end -# end -# -# should 'add merit points to article author when create a new comment' do -# assert_difference 'author.score_points.count' do -# create(Comment, :source => article, :author_id => person.id) -# end -# end -# -# should 'add merit points to voter when he likes a comment' do -# comment = create(Comment, :source => article, :author_id => person.id) -# -# c = GamificationPlugin::PointsCategorization.for_type(:vote_voter).where(profile_id: community.id).first -# assert_difference 'comment.author.points(:category => c.id.to_s)', c.weight do -# Vote.create!(:voter => person, :voteable => comment, :vote => 1) -# end -# end -# -# should 'add merit points to voter when he dislikes a comment' do -# comment = create(Comment, :source => article, :author_id => person.id) -# -# c = GamificationPlugin::PointsCategorization.for_type(:vote_voter).where(profile_id: community.id).first -# assert_difference 'comment.author.points(:category => c.id.to_s)', c.weight do -# Vote.create!(:voter => person, :voteable => comment, :vote => -1) -# end -# end -# -# should 'add merit points to source article when create a comment' do -# c = GamificationPlugin::PointsCategorization.for_type(:comment_article).where(profile_id: community.id).first -# assert_difference 'article.points(:category => c.id.to_s)', c.weight do -# create(Comment, :source => article, :author_id => person.id) -# end -# end -# -# should 'add merit points to source community when create a comment' do -# article = create(TextileArticle, :profile_id => community.id, :author_id => author.id) -# -# c = GamificationPlugin::PointsCategorization.for_type(:comment_community).where(profile_id: community.id).first -# assert_difference 'community.points(:category => c.id.to_s)', c.weight do -# create(Comment, :source => article, :author_id => person.id) -# end -# end -# end -- libgit2 0.21.2