proposals_discussion_plugin_myprofile_controller_test.rb
2.7 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
require_relative '../test_helper'
class ProposalsDiscussionPluginMyprofileControllerTest < ActionController::TestCase
def setup
@profile = fast_create(Community)
@discussion = ProposalsDiscussionPlugin::Discussion.create!(:profile => @profile, :name => "Discussion")
@topic = ProposalsDiscussionPlugin::Topic.create!(:parent => @discussion, :profile => @profile, :name => 'Topic')
@person = create_user_with_permission('testinguser', 'post_content')
login_as :testinguser
end
attr_reader :profile, :discussion, :topic, :person
should 'list topics for selection' do
3.times {fast_create(ProposalsDiscussionPlugin::Topic, :parent_id => discussion.id, :profile_id => profile.id)}
get :select_topic, :profile => profile.identifier, :discussion_id => discussion.id
assert_equal discussion, assigns(:discussion)
assert_select 'div#topics' do
assert_select 'div.content', discussion.topics.count
assert_select "input[name='parent_id']", discussion.topics.count
end
assert_tag :form, :attributes => {:action => "/myprofile/#{profile.identifier}/plugin/proposals_discussion/myprofile/new_proposal_with_topic?discussion_id=#{discussion.id}"}
end
should 'new_proposal redirect to cms controller' do
get :new_proposal, :profile => profile.identifier,:parent_id => topic.id, :discussion_id => discussion.id
assert_redirected_to :controller => 'cms', :action => 'new', :type => "ProposalsDiscussionPlugin::Proposal", :parent_id => topic.id
end
should 'new_proposal with moderated discussion redirect to suggest action in cms controller' do
discussion.moderate_proposals = true
discussion.save!
get :new_proposal, :profile => profile.identifier,:parent_id => topic.id, :discussion_id => discussion.id
assert_match /suggest_an_article/, @response.location.inspect
end
should 'publish a proposal' do
proposal = fast_create(ProposalsDiscussionPlugin::Proposal, :parent_id => topic.id, :profile_id => profile.id, :published => false, :created_by_id => person.id)
get :publish_proposal, :proposal_id => proposal.id, :profile => profile.identifier
assert proposal.reload.published
end
should 'do not publish if the logged user do not have edition permission' do
proposal = fast_create(ProposalsDiscussionPlugin::Proposal, :parent_id => topic.id, :profile_id => profile.id, :published => false)
get :publish_proposal, :proposal_id => proposal.id, :profile => profile.identifier
assert_response 403
assert !proposal.reload.published
end
should 'new_proposal without a topic redirect to select_topic' do
get :new_proposal_with_topic, :profile => profile.identifier, :discussion_id => discussion.id
assert_template 'select_topic'
end
end