discussion_test.rb
4.74 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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
require File.dirname(__FILE__) + '/../test_helper'
class DiscussionTest < ActiveSupport::TestCase
def setup
@profile = fast_create(Community)
@discussion = ProposalsDiscussionPlugin::Discussion.new(:name => 'test', :profile => @profile)
end
attr_reader :profile, :discussion
should 'return list of topics' do
discussion.save!
topic1 = fast_create(ProposalsDiscussionPlugin::Topic, :parent_id => discussion.id)
topic2 = fast_create(ProposalsDiscussionPlugin::Topic, :parent_id => discussion.id)
assert_equivalent [topic1, topic2], discussion.topics
end
should 'return list of random topics returning one topic per category' do
discussion.save!
c1 = create(Category, :name => "Category 1", :environment_id => profile.environment.id)
c2 = create(Category, :name => "Category 2", :environment_id => profile.environment.id)
topic1 = fast_create(ProposalsDiscussionPlugin::Topic, :parent_id => discussion.id)
topic1.add_category c1
topic2 = fast_create(ProposalsDiscussionPlugin::Topic, :parent_id => discussion.id)
topic2.add_category c1
topic3 = fast_create(ProposalsDiscussionPlugin::Topic, :parent_id => discussion.id)
topic3.add_category c2
topic4 = fast_create(ProposalsDiscussionPlugin::Topic, :parent_id => discussion.id)
topic4.add_category c2
random_topics = discussion.random_topics_one_by_category
random_topics_categories = random_topics.map {|t| t.categories.map{|c|c.name}}.flatten
assert_equal ["Category 1", "Category 2"],random_topics_categories
end
should 'return list of random topics returning 2 topics when having 2 categories' do
discussion.save!
c1 = create(Category, :name => "Category 1", :environment_id => profile.environment.id)
c2 = create(Category, :name => "Category 2", :environment_id => profile.environment.id)
topic1 = fast_create(ProposalsDiscussionPlugin::Topic, :parent_id => discussion.id)
topic1.add_category c1
topic2 = fast_create(ProposalsDiscussionPlugin::Topic, :parent_id => discussion.id)
topic2.add_category c1
topic3 = fast_create(ProposalsDiscussionPlugin::Topic, :parent_id => discussion.id)
topic3.add_category c2
topic4 = fast_create(ProposalsDiscussionPlugin::Topic, :parent_id => discussion.id)
topic4.add_category c2
random_topics = discussion.random_topics_one_by_category
assert_equal 2,random_topics.count
end
should 'return list of proposals' do
discussion.save!
topic = fast_create(ProposalsDiscussionPlugin::Topic, :parent_id => discussion.id)
proposal1 = fast_create(ProposalsDiscussionPlugin::Proposal, :parent_id => topic.id)
proposal2 = fast_create(ProposalsDiscussionPlugin::Proposal, :parent_id => topic.id)
assert_equivalent [proposal1, proposal2], discussion.topics_proposals
end
should 'return max score' do
person = fast_create(Person)
discussion = ProposalsDiscussionPlugin::Discussion.create!(:profile => person, :name => 'discussion', :allow_topics => false)
proposal1 = ProposalsDiscussionPlugin::Proposal.create!(:parent => discussion, :profile => profile, :name => "proposal1", :abstract => 'abstract')
proposal2 = ProposalsDiscussionPlugin::Proposal.create!(:parent => discussion, :profile => profile, :name => "proposal2", :abstract => 'abstract')
10.times { Comment.create!(:source => proposal1, :body => "comment", :author => person) }
5.times { Comment.create!(:source => proposal2, :body => "comment", :author => person) }
assert_equal 10, discussion.max_score
end
should 'allow new proposals if discussion phase is proposals' do
discussion.phase = :proposals
assert discussion.allow_new_proposals?
end
should 'not allow new proposals if discussion phase is vote' do
discussion.phase = :vote
assert !discussion.allow_new_proposals?
end
should 'not allow new proposals if discussion phase is finish' do
discussion.phase = :finish
assert !discussion.allow_new_proposals?
end
should 'not allow proposal creation by normal users if discussion is moderated' do
discussion.moderate_proposals = true
person = fast_create(Person)
proposal = ProposalsDiscussionPlugin::Proposal.create!(:parent => discussion, :profile => profile, :name => "proposal1", :abstract => 'abstract')
assert !discussion.allow_create?(person)
end
should 'allow proposal creation by admin users even when discussion is moderated' do
discussion.moderate_proposals = true
person = fast_create(Person)
give_permission(person, 'post_content', profile)
proposal = ProposalsDiscussionPlugin::Proposal.create!(:parent => discussion, :profile => profile, :name => "proposal1", :abstract => 'abstract')
assert discussion.allow_create?(person)
end
end