Commit 8f6e8ef9bb963dc09e895d2273520156711b3f95

Authored by Hugo Melo
1 parent 60cdf17d

Add more tests

test/unit/article_test.rb
... ... @@ -118,108 +118,116 @@ class ArticleTest < ActiveSupport::TestCase
118 118 assert_equal 'negative_votes_received', person.reload.badges.first.name
119 119 end
120 120  
121   -# FIXME Put the tests above to works in profile context.
122   -# They are the same tests of the general context
123   -#
124   -# should 'add merit points to author when create a new article' do
125   -# create(TextArticle, :profile_id => community.id, :author => person)
126   -# assert_equal 1, person.score_points.count
127   -# assert person.score_points.first.action.present?
128   -# end
129   -#
130   -# should 'subtract merit points to author when destroy an article' do
131   -# article = create(TextArticle, :profile_id => @community.id, :author => person)
132   -# assert_equal 1, person.score_points.count
133   -# article.destroy
134   -# assert_equal 2, person.score_points.count
135   -# assert_equal 0, person.points
136   -# end
137   -#
138   -# should 'add merit badge to author when create 5 new articles' do
139   -# GamificationPlugin::Badge.create!(:owner => environment, :name => 'article_author', :level => 1)
140   -# GamificationPlugin.gamification_set_rules(environment)
141   -#
142   -# 5.times { create(TextArticle, :profile_id => person.id, :author => person) }
143   -# assert_equal 'article_author', person.badges.first.name
144   -# assert_equal 1, person.badges.first.level
145   -# end
146   -#
147   -# should 'add merit badge level 2 to author when create 10 new articles' do
148   -# GamificationPlugin::Badge.create!(:owner => environment, :name => 'article_author', :level => 1)
149   -# GamificationPlugin::Badge.create!(:owner => environment, :name => 'article_author', :level => 2, :custom_fields => {:threshold => 10})
150   -# GamificationPlugin.gamification_set_rules(environment)
151   -#
152   -# 10.times { create(TextArticle, :profile_id => person.id, :author => person) }
153   -# assert_equal ['article_author'], person.badges.map(&:name).uniq
154   -# assert_equal [1, 2], person.badges.map(&:level)
155   -# end
156   -#
157   -# should 'add merit points to community article owner when an user like it' do
158   -# article = create(TextArticle, :name => 'Test', :profile => @community, :author => person)
159   -#
160   -# c = GamificationPlugin::PointsCategorization.for_type(:vote_voteable_author).where(profile_id: @community.id).first
161   -# assert_difference 'article.author.points(:category => c.id.to_s)', c.weight do
162   -# Vote.create!(:voter => person, :voteable => article, :vote => 1)
163   -# end
164   -# end
165   -#
166   -# should 'add merit points to article when an user like it' do
167   -# article = create(TextArticle, :name => 'Test', :profile => @community, :author => person)
168   -# article = article.reload
169   -#
170   -# c = GamificationPlugin::PointsCategorization.for_type(:vote_voteable).where(profile_id: @community.id).first
171   -# assert_difference 'article.points(:category => c.id.to_s)', c.weight do
172   -# Vote.create!(:voter => person, :voteable => article, :vote => 1)
173   -# end
174   -# end
175   -#
176   -# should 'add merit points to community when create a new article' do
177   -# assert_difference 'community.score_points.count' do
178   -# create(TextArticle, :profile_id => @community.id, :author => person)
179   -# end
180   -# end
181   -#
182   -# should 'add merit points to voter when he likes an article' do
183   -# article = create(TextArticle, :name => 'Test', :profile => @community, :author => person)
184   -#
185   -# c = GamificationPlugin::PointsCategorization.for_type(:vote_voter).where(profile_id: @community.id).first
186   -# assert_difference 'article.author.points(:category => c.id.to_s)', c.weight do
187   -# Vote.create!(:voter => person, :voteable => article, :vote => 1)
188   -# end
189   -# end
190   -#
191   -# should 'add merit points to voter when he dislikes an article' do
192   -# article = create(TextArticle, :name => 'Test', :profile => @community, :author => person)
193   -#
194   -# c = GamificationPlugin::PointsCategorization.for_type(:vote_voter).where(profile_id: @community.id).first
195   -# assert_difference 'article.author.points(:category => c.id.to_s)', c.weight do
196   -# Vote.create!(:voter => person, :voteable => article, :vote => -1)
197   -# end
198   -# end
199   -#
200   -# should 'add badge to author when users like his article' do
201   -# GamificationPlugin::Badge.create!(:owner => environment, :name => 'positive_votes_received')
202   -# GamificationPlugin.gamification_set_rules(environment)
203   -#
204   -# article = create(TextArticle, :name => 'Test', :profile => person, :author => person)
205   -# 4.times { Vote.create!(:voter => fast_create(Person), :voteable => article, :vote => 1) }
206   -# Vote.create!(:voter => fast_create(Person), :voteable => article, :vote => -1)
207   -# assert_equal [], person.badges
208   -# Vote.create!(:voter => fast_create(Person), :voteable => article, :vote => 1)
209   -# assert_equal 'positive_votes_received', person.reload.badges.first.name
210   -# end
211   -#
212   -# should 'add badge to author when users dislike his article' do
213   -# GamificationPlugin::Badge.create!(:owner => environment, :name => 'negative_votes_received')
214   -# GamificationPlugin.gamification_set_rules(environment)
215   -#
216   -# article = create(TextArticle, :name => 'Test', :profile => person, :author => person)
217   -# 4.times { Vote.create!(:voter => fast_create(Person), :voteable => article, :vote => -1) }
218   -# Vote.create!(:voter => fast_create(Person), :voteable => article, :vote => 1)
219   -# assert_equal [], person.badges
220   -# Vote.create!(:voter => fast_create(Person), :voteable => article, :vote => -1)
221   -# assert_equal 'negative_votes_received', person.reload.badges.first.name
222   -# end
223   -#
  121 + # community related tests
  122 + should 'add merit community points to author when create a new article on community' do
  123 + community = fast_create(Community)
  124 + create_point_rule_definition('article_author', community)
  125 + create(TextArticle, profile_id: community.id, author_id: person.id)
  126 + assert_equal 1, person.score_points.count
  127 + assert person.score_points.first.action.present?
  128 + end
  129 +
  130 + should 'subtract merit points to author when destroy an article on community' do
  131 + community = fast_create(Community)
  132 + create_point_rule_definition('article_author', community)
  133 + article = create(TextArticle, profile_id: community.id, author_id: person.id)
  134 + assert_equal 1, person.score_points.count
  135 + article.destroy
  136 + assert_equal 2, person.score_points.count
  137 + assert_equal 0, person.points
  138 + end
  139 +
  140 + #should 'add merit badge to author when create 5 new articles on community' do
  141 + #GamificationPlugin::Badge.create!(:owner => environment, :name => 'article_author', :level => 1)
  142 + #GamificationPlugin.gamification_set_rules(environment)
  143 +
  144 + #5.times { create(TextArticle, :profile_id => person.id, :author => person) }
  145 + #assert_equal 'article_author', person.badges.first.name
  146 + #assert_equal 1, person.badges.first.level
  147 + #end
  148 +
  149 + #should 'add merit badge level 2 to author when create 10 new articles on community' do
  150 + #GamificationPlugin::Badge.create!(:owner => environment, :name => 'article_author', :level => 1)
  151 + #GamificationPlugin::Badge.create!(:owner => environment, :name => 'article_author', :level => 2, :custom_fields => {:threshold => 10})
  152 + #GamificationPlugin.gamification_set_rules(environment)
  153 +
  154 + #10.times { create(TextArticle, :profile_id => person.id, :author => person) }
  155 + #assert_equal ['article_author'], person.badges.map(&:name).uniq
  156 + #assert_equal [1, 2], person.badges.map(&:level)
  157 + #end
  158 +
  159 + #should 'add merit points to community article owner when an user like it on community' do
  160 + #create_point_rule_definition('vote_voteable_author')
  161 + #community = fast_create(Community)
  162 + #article = create(TextArticle, :name => 'Test', :profile => community, :author => person)
  163 +
  164 + #c = GamificationPlugin::PointsCategorization.for_type(:vote_voteable_author).first
  165 + #assert_difference 'article.author.points(:category => c.id.to_s)', c.weight do
  166 + #Vote.create!(:voter => person, :voteable => article, :vote => 1)
  167 + #end
  168 + #end
  169 +
  170 + #should 'add merit points to article when an user like it on community' do
  171 + #create_point_rule_definition('vote_voteable')
  172 + #article = create(TextArticle, :name => 'Test', :profile => person, :author => person)
  173 + #article = article.reload
  174 +
  175 + #c = GamificationPlugin::PointsCategorization.for_type(:vote_voteable).first
  176 + #assert_difference 'article.points(:category => c.id.to_s)', c.weight do
  177 + #Vote.create!(:voter => person, :voteable => article, :vote => 1)
  178 + #end
  179 + #end
  180 +
  181 + #should 'add merit points to community when create a new article on community' do
  182 + #create_point_rule_definition('article_community')
  183 + #community = fast_create(Community)
  184 + #assert_difference 'community.score_points.count' do
  185 + #create(TextArticle, :profile_id => community.id, :author => person)
  186 + #end
  187 + #end
  188 +
  189 + #should 'add merit points to voter when he likes an article on community' do
  190 + #create_point_rule_definition('vote_voter')
  191 + #article = create(TextArticle, :name => 'Test', :profile => person, :author => person)
  192 +
  193 + #c = GamificationPlugin::PointsCategorization.for_type(:vote_voter).first
  194 + #assert_difference 'article.author.points(:category => c.id.to_s)', c.weight do
  195 + #Vote.create!(:voter => person, :voteable => article, :vote => 1)
  196 + #end
  197 + #end
  198 +
  199 + #should 'add merit points to voter when he dislikes an article on community' do
  200 + #create_point_rule_definition('vote_voter')
  201 + #article = create(TextArticle, :name => 'Test', :profile => person, :author => person)
  202 +
  203 + #c = GamificationPlugin::PointsCategorization.for_type(:vote_voter).first
  204 + #assert_difference 'article.author.points(:category => c.id.to_s)', c.weight do
  205 + #Vote.create!(:voter => person, :voteable => article, :vote => -1)
  206 + #end
  207 + #end
  208 +
  209 + #should 'add badge to author when users like his article on community' do
  210 + #GamificationPlugin::Badge.create!(:owner => environment, :name => 'positive_votes_received')
  211 + #GamificationPlugin.gamification_set_rules(environment)
  212 +
  213 + #article = create(TextArticle, :name => 'Test', :profile => person, :author => person)
  214 + #4.times { Vote.create!(:voter => fast_create(Person), :voteable => article, :vote => 1) }
  215 + #Vote.create!(:voter => fast_create(Person), :voteable => article, :vote => -1)
  216 + #assert_equal [], person.badges
  217 + #Vote.create!(:voter => fast_create(Person), :voteable => article, :vote => 1)
  218 + #assert_equal 'positive_votes_received', person.reload.badges.first.name
  219 + #end
  220 +
  221 + #should 'add badge to author when users dislike his article on community' do
  222 + #GamificationPlugin::Badge.create!(:owner => environment, :name => 'negative_votes_received')
  223 + #GamificationPlugin.gamification_set_rules(environment)
  224 +
  225 + #article = create(TextArticle, :name => 'Test', :profile => person, :author => person)
  226 + #4.times { Vote.create!(:voter => fast_create(Person), :voteable => article, :vote => -1) }
  227 + #Vote.create!(:voter => fast_create(Person), :voteable => article, :vote => 1)
  228 + #assert_equal [], person.badges
  229 + #Vote.create!(:voter => fast_create(Person), :voteable => article, :vote => -1)
  230 + #assert_equal 'negative_votes_received', person.reload.badges.first.name
  231 + #end
224 232  
225 233 end
... ...
test/unit/comment_test.rb
... ... @@ -153,138 +153,129 @@ class CommentTest < ActiveSupport::TestCase
153 153 end
154 154 end
155 155  
  156 + ## Community related tests
  157 + should 'add merit community points to author when create a new comment in a community' do
  158 + community = fast_create(Community)
  159 + article = create(TextArticle, profile_id: community.id, author_id: person.id)
  160 + create_point_rule_definition('comment_author', article.profile)
  161 + create(Comment, :source => article, :author_id => person.id)
  162 + assert_equal 1, person.score_points.count
  163 + end
  164 +
  165 + should 'subtract merit community points from author when destroy a community comment' do
  166 + community = fast_create(Community)
  167 + article = create(TextArticle, profile_id: community.id, author_id: person.id)
  168 + create_point_rule_definition('comment_author', article.profile)
  169 + comment = create(Comment, :source => article, :author_id => person.id)
  170 + assert_equal 1, person.score_points.count
  171 + comment.destroy
  172 + assert_equal 2, person.score_points.count
  173 + assert_equal 0, person.points
  174 + end
  175 +
  176 + should 'add merit communty points to comment owner when an user like his comment inside a community' do
  177 + community = fast_create(Community)
  178 + article = create(TextArticle, profile_id: community.id, author_id: person.id)
  179 + create_point_rule_definition('vote_voteable_author', community)
  180 + comment = create(Comment, :source => article, :author_id => person.id)
  181 +
  182 + c = GamificationPlugin::PointsCategorization.for_type(:vote_voteable_author).where(profile_id: article.profile.id).first
  183 + assert_difference 'comment.author.points(:category => c.id.to_s)', c.weight do
  184 + Vote.create!(:voter => person, :voteable => comment, :vote => 1)
  185 + end
  186 + end
  187 +
  188 + should 'subtract merit community points to comment owner when an user unlike his comment inside a community' do
  189 + community = fast_create(Community)
  190 + article = create(TextArticle, profile_id: community.id, author_id: person.id)
  191 + create_point_rule_definition('vote_voteable_author', community)
  192 + comment = create(Comment, :source => article, :author_id => author.id)
  193 + Vote.create!(:voter => person, :voteable => comment, :vote => 1)
  194 +
  195 + c = GamificationPlugin::PointsCategorization.for_type(:vote_voteable_author).first
  196 + assert_difference 'comment.author.points', -1*c.weight do
  197 + Vote.where(:voteable_id => comment.id).destroy_all
  198 + end
  199 + end
  200 +
  201 + should 'subtract merit community points from comment owner when an user dislike his comment inside a community' do
  202 + community = fast_create(Community)
  203 + article = create(TextArticle, profile_id: community.id, author_id: person.id)
  204 + create_point_rule_definition('vote_voteable_author', community)
  205 + comment = create(Comment, :source => article, :author_id => person.id)
  206 +
  207 + c = GamificationPlugin::PointsCategorization.for_type(:vote_voteable_author).where(profile_id: article.profile.id).first
  208 + assert_difference 'comment.author.points(:category => c.id.to_s)', -1*c.weight do
  209 + Vote.create!(:voter => person, :voteable => comment, :vote => -1)
  210 + end
  211 + end
  212 +
  213 + should 'add merit community points from comment owner when an user remove a dislike in his comment inside a community' do
  214 + community = fast_create(Community)
  215 + article = create(TextArticle, profile_id: community.id, author_id: person.id)
  216 + create_point_rule_definition('vote_voteable_author', community)
  217 + comment = create(Comment, :source => article, :author_id => author.id)
  218 + Vote.create!(:voter => person, :voteable => comment, :vote => -1)
  219 +
  220 + c = GamificationPlugin::PointsCategorization.for_type(:vote_voteable_author).first
  221 + assert_difference 'comment.author.points', c.weight do
  222 + Vote.where(:voteable_id => comment.id).destroy_all
  223 + end
  224 + end
  225 +
  226 + should 'add merit community points to article author when create a new comment inside a community' do
  227 + community = fast_create(Community)
  228 + article = create(TextArticle, profile_id: community.id, author_id: author.id)
  229 + create_point_rule_definition('comment_article_author', community)
  230 + assert_difference 'author.score_points.count' do
  231 + create(Comment, :source => article, :author_id => author.id)
  232 + end
  233 + end
  234 +
  235 + should 'add merit community points to voter when he likes a comment inside a community' do
  236 + community = fast_create(Community)
  237 + article = create(TextArticle, profile_id: community.id, author_id: person.id)
  238 + create_point_rule_definition('vote_voter')
  239 + comment = create(Comment, :source => article, :author_id => person.id)
  240 +
  241 + c = GamificationPlugin::PointsCategorization.for_type(:vote_voter).first
  242 + assert_difference 'comment.author.points(:category => c.id.to_s)', c.weight do
  243 + Vote.create!(:voter => person, :voteable => comment, :vote => 1)
  244 + end
  245 + end
  246 +
  247 + should 'add merit community points to voter when he dislikes a comment inside a community' do
  248 + community = fast_create(Community)
  249 + article = create(TextArticle, profile_id: community.id, author_id: person.id)
  250 + create_point_rule_definition('vote_voter')
  251 + comment = create(Comment, :source => article, :author_id => person.id)
  252 +
  253 + c = GamificationPlugin::PointsCategorization.for_type(:vote_voter).first
  254 + assert_difference 'comment.author.points(:category => c.id.to_s)', c.weight do
  255 + Vote.create!(:voter => person, :voteable => comment, :vote => -1)
  256 + end
  257 + end
  258 +
  259 + should 'add merit community points to source article when create a comment inside a community' do
  260 + community = fast_create(Community)
  261 + article = create(TextArticle, profile_id: community.id, author_id: person.id)
  262 + create_point_rule_definition('comment_article')
  263 + c = GamificationPlugin::PointsCategorization.for_type(:comment_article).first
  264 + assert_difference 'article.points(:category => c.id.to_s)', c.weight do
  265 + create(Comment, :source => article, :author_id => person.id)
  266 + end
  267 + end
  268 +
  269 + should 'add merit community points to source community when create a comment' do
  270 + create_point_rule_definition('comment_community')
  271 + community = fast_create(Community)
  272 + article = create(TextileArticle, :profile_id => community.id, :author_id => author.id)
  273 +
  274 + c = GamificationPlugin::PointsCategorization.for_type(:comment_community).first
  275 + assert_difference 'community.points(:category => c.id.to_s)', c.weight do
  276 + create(Comment, :source => article, :author_id => person.id)
  277 + end
  278 + end
156 279  
157   -# FIXME Put the tests above to works in profile context.
158   -# They are the same tests of the general context
159   -#
160   -# should 'add merit points to author when create a new comment' do
161   -# create(Comment, :source => article, :author_id => person.id)
162   -# assert_equal 1, person.score_points.count
163   -# end
164   -#
165   -# should 'subtract merit points from author when destroy a comment' do
166   -# comment = create(Comment, :source => article, :author_id => person.id)
167   -# assert_equal 1, person.score_points.count
168   -# comment.destroy
169   -# assert_equal 2, person.score_points.count
170   -# assert_equal 0, person.points
171   -# end
172   -#
173   -# should 'add merit badge to author when create 5 new comments' do
174   -# GamificationPlugin::Badge.create!(:owner => environment, :name => 'comment_author')
175   -# GamificationPlugin.gamification_set_rules(environment)
176   -#
177   -# 5.times { create(Comment, :source => article, :author_id => person.id) }
178   -# assert_equal 'comment_author', person.badges.first.name
179   -# end
180   -#
181   -# should 'add merit badge to source author when create 5 new comments' do
182   -# GamificationPlugin::Badge.create!(:owner => environment, :name => 'comment_received')
183   -# GamificationPlugin.gamification_set_rules(environment)
184   -#
185   -# 5.times { create(Comment, :source => article, :author_id => person.id) }
186   -# assert_equal 'comment_received', author.badges.first.name
187   -# end
188   -#
189   -# should 'add badge to author when users like his comment' do
190   -# GamificationPlugin::Badge.create!(:owner => environment, :name => 'positive_votes_received')
191   -# GamificationPlugin.gamification_set_rules(environment)
192   -#
193   -# comment = create(Comment, :source => article, :author_id => person.id)
194   -# 4.times { Vote.create!(:voter => fast_create(Person), :voteable => comment, :vote => 1) }
195   -# Vote.create!(:voter => fast_create(Person), :voteable => comment, :vote => -1)
196   -# assert_equal [], person.badges
197   -# Vote.create!(:voter => fast_create(Person), :voteable => comment, :vote => 1)
198   -# assert_equal 'positive_votes_received', person.reload.badges.first.name
199   -# end
200   -#
201   -# should 'add badge to author when users dislike his comment' do
202   -# GamificationPlugin::Badge.create!(:owner => environment, :name => 'negative_votes_received')
203   -# GamificationPlugin.gamification_set_rules(environment)
204   -#
205   -# comment = create(Comment, :source => article, :author_id => person.id)
206   -# 4.times { Vote.create!(:voter => fast_create(Person), :voteable => comment, :vote => -1) }
207   -# Vote.create!(:voter => fast_create(Person), :voteable => comment, :vote => 1)
208   -# assert_equal [], person.badges
209   -# Vote.create!(:voter => fast_create(Person), :voteable => comment, :vote => -1)
210   -# assert_equal 'negative_votes_received', person.reload.badges.first.name
211   -# end
212   -#
213   -# should 'add merit points to comment owner when an user like his comment' do
214   -# comment = create(Comment, :source => article, :author_id => person.id)
215   -#
216   -# c = GamificationPlugin::PointsCategorization.for_type(:vote_voteable_author).where(profile_id: article.profile.id).first
217   -# assert_difference 'comment.author.points(:category => c.id.to_s)', c.weight do
218   -# Vote.create!(:voter => person, :voteable => comment, :vote => 1)
219   -# end
220   -# end
221   -#
222   -# should 'subtract merit points to comment owner when an user unlike his comment' do
223   -# comment = create(Comment, :source => article, :author_id => author.id)
224   -# Vote.create!(:voter => person, :voteable => comment, :vote => 1)
225   -#
226   -# assert_difference 'comment.author.points', -20 do
227   -# Vote.where(:voteable_id => comment.id).destroy_all
228   -# end
229   -# end
230   -#
231   -# should 'subtract merit points from comment owner when an user dislike his comment' do
232   -# comment = create(Comment, :source => article, :author_id => person.id)
233   -#
234   -# c = GamificationPlugin::PointsCategorization.for_type(:vote_voteable_author).where(profile_id: article.profile.id).first
235   -# assert_difference 'comment.author.points(:category => c.id.to_s)', -1*c.weight do
236   -# Vote.create!(:voter => person, :voteable => comment, :vote => -1)
237   -# end
238   -# end
239   -#
240   -# should 'add merit points from comment owner when an user remove a dislike in his comment' do
241   -# comment = create(Comment, :source => article, :author_id => author.id)
242   -# Vote.create!(:voter => person, :voteable => comment, :vote => -1)
243   -#
244   -# assert_difference 'comment.author.points', 20 do
245   -# Vote.where(:voteable_id => comment.id).destroy_all
246   -# end
247   -# end
248   -#
249   -# should 'add merit points to article author when create a new comment' do
250   -# assert_difference 'author.score_points.count' do
251   -# create(Comment, :source => article, :author_id => person.id)
252   -# end
253   -# end
254   -#
255   -# should 'add merit points to voter when he likes a comment' do
256   -# comment = create(Comment, :source => article, :author_id => person.id)
257   -#
258   -# c = GamificationPlugin::PointsCategorization.for_type(:vote_voter).where(profile_id: community.id).first
259   -# assert_difference 'comment.author.points(:category => c.id.to_s)', c.weight do
260   -# Vote.create!(:voter => person, :voteable => comment, :vote => 1)
261   -# end
262   -# end
263   -#
264   -# should 'add merit points to voter when he dislikes a comment' do
265   -# comment = create(Comment, :source => article, :author_id => person.id)
266   -#
267   -# c = GamificationPlugin::PointsCategorization.for_type(:vote_voter).where(profile_id: community.id).first
268   -# assert_difference 'comment.author.points(:category => c.id.to_s)', c.weight do
269   -# Vote.create!(:voter => person, :voteable => comment, :vote => -1)
270   -# end
271   -# end
272   -#
273   -# should 'add merit points to source article when create a comment' do
274   -# c = GamificationPlugin::PointsCategorization.for_type(:comment_article).where(profile_id: community.id).first
275   -# assert_difference 'article.points(:category => c.id.to_s)', c.weight do
276   -# create(Comment, :source => article, :author_id => person.id)
277   -# end
278   -# end
279   -#
280   -# should 'add merit points to source community when create a comment' do
281   -# article = create(TextileArticle, :profile_id => community.id, :author_id => author.id)
282   -#
283   -# c = GamificationPlugin::PointsCategorization.for_type(:comment_community).where(profile_id: community.id).first
284   -# assert_difference 'community.points(:category => c.id.to_s)', c.weight do
285   -# create(Comment, :source => article, :author_id => person.id)
286   -# end
287   -# end
288   -#
289 280  
290 281 end
... ...