test/integration/navigation_test.rb in merit-1.7.1 vs test/integration/navigation_test.rb in merit-1.8.0
- old
+ new
@@ -1,9 +1,14 @@
require 'test_helper'
class NavigationTest < ActiveSupport::IntegrationCase
+ def tear_down
+ DummyObserver.unstub(:update)
+ end
+
test 'user sign up should grant badge to itself' do
+ DummyObserver.any_instance.expects(:update).times 1
visit '/users/new'
fill_in 'Name', with: 'Jack'
assert_difference('Merit::ActivityLog.count') do
click_button('Create User')
end
@@ -11,10 +16,12 @@
user = User.where(name: 'Jack').first
assert_equal [Merit::Badge.by_name('just-registered').first], user.badges
end
test 'User#add_badge should add one badge, #rm_badge should delete one' do
+ DummyObserver.any_instance.expects(:update).times 0
+
user = User.create(name: 'test-user')
assert_equal [], user.badges
badge = Merit::Badge.first
user.add_badge badge.id
@@ -25,17 +32,19 @@
user.rm_badge badge.id
assert_equal [badge], user.reload.badges
end
test 'Remove inexistent badge should do nothing' do
+ DummyObserver.any_instance.expects(:update).times 0
user = User.create(name: 'test-user')
assert_equal [], user.badges
user.rm_badge 1
assert_equal [], user.badges
end
test 'users#index should grant badge multiple times' do
+ DummyObserver.any_instance.expects(:update).times 14
user = User.create(name: 'test-user')
# Multiple rule
assert_difference 'badges_by_name(user, "gossip").count', 3 do
3.times { visit '/users' }
@@ -56,10 +65,11 @@
visit '/users'
end
end
test 'user workflow should grant some badges at some times' do
+ DummyObserver.any_instance.expects(:update).at_least_once
# Commented 9 times, no badges yet
user = User.create(name: 'test-user')
# Create needed friend user object
friend = User.create(name: 'friend')
@@ -122,18 +132,22 @@
visit "/users/#{user.id}/edit"
fill_in 'Name', with: 'abc'
assert_difference('Merit::ActivityLog.count', 2) do
click_button('Update User')
end
- # Last one is point granting, previous one is badge removing
- assert_equal 'removed', Merit::ActivityLog.all[-2].description
+ # Check created Merit::ActivityLogs
+ assert_equal 'granted commenter badge', Merit::ActivityLog.all[0].description
+ assert_equal 'granted 20 points', Merit::ActivityLog.all[-1].description
+ assert_equal 'removed autobiographer badge', Merit::ActivityLog.all[-2].description
+
user = User.where(name: 'abc').first
assert !user.badges.include?(autobiographer_badge), "User badges: #{user.badges.collect(&:name).inspect} should remove autobiographer badge."
end
test 'user workflow should add up points at some times' do
+ DummyObserver.any_instance.expects(:update).at_least_once
User.delete_all
user = User.create(name: 'test-user')
assert_equal 0, user.points, 'User should start with 0 points'
visit "/users/#{user.id}/edit"
@@ -182,10 +196,11 @@
user = User.where(name: 'a').first
assert_equal 50, user.points, 'Commenting should grant the integer in comment points if comment is an integer'
end
test 'user workflow should grant levels at some times' do
+ DummyObserver.any_instance.expects(:update).at_least_once
user = User.create(name: 'test-user')
assert user.badges.empty?
# Edit user's name by 2 chars name
visit "/users/#{user.id}/edit"
@@ -218,10 +233,11 @@
user.reload
assert_equal 5, user.level, "User level should be 5."
end
test 'assigning points to a group of records' do
+ DummyObserver.any_instance.expects(:update).times 4
commenter = User.create(name: 'commenter')
comment_1 = commenter.comments.create(name: 'comment_1', comment: 'a')
comment_2 = commenter.comments.create(name: 'comment_2', comment: 'b')
visit comments_path
@@ -235,9 +251,10 @@
comment_1.reload.points.must_be :==, 2
comment_2.reload.points.must_be :==, 2
end
test 'api/comments#show should grant 1 point to user' do
+ DummyObserver.any_instance.expects(:update).times 1
user = User.create(name: 'test-user')
assert_equal 0, user.points
comment = user.comments.create!(name: 'test-comment', comment: 'comment body')
visit "/api/comments/#{comment.id}"