vote_plugin_profile_controller_test.rb
3.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
require 'test_helper'
require_relative '../../controllers/vote_plugin_profile_controller'
class VotePluginProfileControllerTest < ActionController::TestCase
def setup
@profile = create_user('profile').person
@article = TinyMceArticle.create!(:profile => @profile, :name => 'An article')
@comment = Comment.new(:source => @article, :author => @profile, :body => 'test')
@comment.save!
login_as(@profile.identifier)
@environment = Environment.default
@environment.enable_plugin(VotePlugin)
self.stubs(:user).returns(@profile)
end
attr_reader :profile, :comment, :environment, :article
should 'do not vote if user is not logged in' do
logout
xhr :post, :vote, :profile => profile.identifier, :id => comment.id, :model => 'comment', :vote => 1
assert_response 401
end
should 'not vote if value is not allowed' do
xhr :post, :vote, :profile => profile.identifier, :id => comment.id, :model => 'comment', :vote => 4
assert !profile.voted_on?(comment)
end
should 'not vote in a disallowed model' do
xhr :post, :vote, :profile => profile.identifier, :id => environment.id, :model => 'environment', :vote => 1
assert profile.votes.empty?
end
should 'like comment' do
xhr :post, :vote, :profile => profile.identifier, :id => comment.id, :model => 'comment', :vote => 1
assert profile.voted_for?(comment)
end
should 'unlike comment' do
xhr :post, :vote, :profile => profile.identifier, :id => comment.id, :model => 'comment', :vote => 1
xhr :post, :vote, :profile => profile.identifier, :id => comment.id, :model => 'comment', :vote => 1
assert !profile.voted_for?(comment)
end
should 'dislike comment' do
xhr :post, :vote, :profile => profile.identifier, :id => comment.id, :model => 'comment', :vote => -1
assert profile.voted_against?(comment)
end
should 'undislike comment' do
xhr :post, :vote, :profile => profile.identifier, :id => comment.id, :model => 'comment', :vote => -1
xhr :post, :vote, :profile => profile.identifier, :id => comment.id, :model => 'comment', :vote => -1
assert !profile.voted_against?(comment)
end
should 'dislike a liked comment' do
xhr :post, :vote, :profile => profile.identifier, :id => comment.id, :model => 'comment', :vote => 1
xhr :post, :vote, :profile => profile.identifier, :id => comment.id, :model => 'comment', :vote => -1
assert profile.voted_against?(comment)
end
should 'like a disliked comment' do
xhr :post, :vote, :profile => profile.identifier, :id => comment.id, :model => 'comment', :vote => -1
xhr :post, :vote, :profile => profile.identifier, :id => comment.id, :model => 'comment', :vote => 1
assert profile.voted_for?(comment)
end
should 'like article' do
xhr :post, :vote, :profile => profile.identifier, :id => article.id, :model => 'article', :vote => 1
assert profile.voted_for?(article)
end
should 'update views with new vote state' do
xhr :post, :vote, :profile => profile.identifier, :id => article.id, :model => 'article', :vote => 1
assert_select_rjs :replace do
assert_select "#vote_article_#{article.id}_1"
assert_select "#vote_article_#{article.id}_-1"
end
end
end