Commit 37024235645ce4258b53dc5b8f931a2ebf4d31bb
1 parent
1100d1b7
Exists in
master
Display pairwise content in read only mode
Showing
8 changed files
with
76 additions
and
17 deletions
Show diff stats
controllers/profile/pairwise_plugin_profile_controller.rb
@@ -31,6 +31,7 @@ class PairwisePluginProfileController < ProfileController | @@ -31,6 +31,7 @@ class PairwisePluginProfileController < ProfileController | ||
31 | 31 | ||
32 | def choose | 32 | def choose |
33 | @pairwise_content = find_content(params) | 33 | @pairwise_content = find_content(params) |
34 | + return render_access_denied if @pairwise_content.archived? | ||
34 | vote = @pairwise_content.vote_to(params[:prompt_id], params[:direction], user_identifier, params[:appearance_id]) | 35 | vote = @pairwise_content.vote_to(params[:prompt_id], params[:direction], user_identifier, params[:appearance_id]) |
35 | if request.xhr? | 36 | if request.xhr? |
36 | render 'content_viewer/load_prompt.rjs' | 37 | render 'content_viewer/load_prompt.rjs' |
@@ -153,4 +154,3 @@ class PairwisePluginProfileController < ProfileController | @@ -153,4 +154,3 @@ class PairwisePluginProfileController < ProfileController | ||
153 | 154 | ||
154 | 155 | ||
155 | end | 156 | end |
156 | - |
lib/pairwise_plugin/pairwise_content.rb
@@ -54,15 +54,24 @@ class PairwisePlugin::PairwiseContent < Article | @@ -54,15 +54,24 @@ class PairwisePlugin::PairwiseContent < Article | ||
54 | 'Question managed by pairwise' | 54 | 'Question managed by pairwise' |
55 | end | 55 | end |
56 | 56 | ||
57 | + def css_class_name | ||
58 | + cl = "pairwise-plugin_pairwise-content" | ||
59 | + cl += archived? ? " archived" : " active" | ||
60 | + end | ||
61 | + | ||
57 | def to_html(options = {}) | 62 | def to_html(options = {}) |
58 | source = options["source"] | 63 | source = options["source"] |
59 | embeded = options.has_key? "embeded" | 64 | embeded = options.has_key? "embeded" |
60 | prompt_id = options["prompt_id"] | 65 | prompt_id = options["prompt_id"] |
61 | pairwise_content = self | 66 | pairwise_content = self |
62 | - if not Environment.default.enabled_plugins.include? "PairwisePlugin" | 67 | + if not environment.plugin_enabled?(PairwisePlugin) |
63 | proc do | 68 | proc do |
64 | render :file => 'content_viewer/closed_pool' | 69 | render :file => 'content_viewer/closed_pool' |
65 | end | 70 | end |
71 | + elsif pairwise_content.archived? | ||
72 | + proc do | ||
73 | + render :file => 'content_viewer/read_only', :locals => {:pairwise_content => pairwise_content} | ||
74 | + end | ||
66 | else | 75 | else |
67 | proc do | 76 | proc do |
68 | locals = {:pairwise_content => pairwise_content, :source => source, :embeded => embeded, :prompt_id => prompt_id } | 77 | locals = {:pairwise_content => pairwise_content, :source => source, :embeded => embeded, :prompt_id => prompt_id } |
public/style.css
test/functional/profile/pairwise_plugin_profile_controller_test.rb
@@ -271,4 +271,20 @@ class PairwisePluginProfileControllerTest < ActionController::TestCase | @@ -271,4 +271,20 @@ class PairwisePluginProfileControllerTest < ActionController::TestCase | ||
271 | assert_redirected_to @content.url | 271 | assert_redirected_to @content.url |
272 | assert_equal "Only logged user could suggest new ideas", flash[:error] | 272 | assert_equal "Only logged user could suggest new ideas", flash[:error] |
273 | end | 273 | end |
274 | + | ||
275 | + should 'not register a vote when pairwise is archived' do | ||
276 | + login_as(@user.user.login) | ||
277 | + @content.update_attribute(:archived, true) | ||
278 | + PairwisePluginProfileController.any_instance.expects(:find_content).returns(@content).at_least_once | ||
279 | + | ||
280 | + get :choose, | ||
281 | + :profile => @profile.identifier, | ||
282 | + :id => @content.id, | ||
283 | + :question_id => @question.id, | ||
284 | + :prompt_id => @question.prompt.id, | ||
285 | + :appearance_id => @question.appearance_id, | ||
286 | + :direction => 'left' | ||
287 | + assert_response 403 | ||
288 | + end | ||
289 | + | ||
274 | end | 290 | end |
test/unit/pairwise_plugin/pairwise_content_test.rb
@@ -18,7 +18,7 @@ class PairwisePlugin::PairwiseContentTest < ActiveSupport::TestCase | @@ -18,7 +18,7 @@ class PairwisePlugin::PairwiseContentTest < ActiveSupport::TestCase | ||
18 | 18 | ||
19 | def setup | 19 | def setup |
20 | pairwise_env_settings = { :api_host => "http://localhost:3030/", | 20 | pairwise_env_settings = { :api_host => "http://localhost:3030/", |
21 | - :username => "abner.oliveira@serpro.gov.br", | 21 | + :username => "abner.oliveira@serpro.gov.br", |
22 | :password => "serpro" | 22 | :password => "serpro" |
23 | } | 23 | } |
24 | @profile = create_user('testing').person | 24 | @profile = create_user('testing').person |
@@ -39,7 +39,7 @@ class PairwisePlugin::PairwiseContentTest < ActiveSupport::TestCase | @@ -39,7 +39,7 @@ class PairwisePlugin::PairwiseContentTest < ActiveSupport::TestCase | ||
39 | question = @http_stub_fixtures.create_question(2, 'Question 2', 'Choice X\nChoice Y') | 39 | question = @http_stub_fixtures.create_question(2, 'Question 2', 'Choice X\nChoice Y') |
40 | assert_not_nil question | 40 | assert_not_nil question |
41 | assert_equal 2, question.id | 41 | assert_equal 2, question.id |
42 | - assert_equal 'Question 2', question.name | 42 | + assert_equal 'Question 2', question.name |
43 | end | 43 | end |
44 | 44 | ||
45 | should 'provide proper short description' do | 45 | should 'provide proper short description' do |
@@ -77,7 +77,7 @@ class PairwisePlugin::PairwiseContentTest < ActiveSupport::TestCase | @@ -77,7 +77,7 @@ class PairwisePlugin::PairwiseContentTest < ActiveSupport::TestCase | ||
77 | end | 77 | end |
78 | 78 | ||
79 | should 'add error to base when the question does not exist' do | 79 | should 'add error to base when the question does not exist' do |
80 | - Response = Struct.new(:code, :message) | 80 | + Response = Struct.new(:code, :message) |
81 | 81 | ||
82 | @response = Response.new(422, "Any error") | 82 | @response = Response.new(422, "Any error") |
83 | 83 | ||
@@ -97,15 +97,15 @@ class PairwisePlugin::PairwiseContentTest < ActiveSupport::TestCase | @@ -97,15 +97,15 @@ class PairwisePlugin::PairwiseContentTest < ActiveSupport::TestCase | ||
97 | #expectations | 97 | #expectations |
98 | pairwise_content = PairwiseContentFixtures.new_pairwise_content | 98 | pairwise_content = PairwiseContentFixtures.new_pairwise_content |
99 | pairwise_content.profile = @profile | 99 | pairwise_content.profile = @profile |
100 | - pairwise_content.expects(:valid?).returns(true) | 100 | + pairwise_content.expects(:valid?).returns(true) |
101 | pairwise_content.expects(:create_pairwise_question).returns(question) | 101 | pairwise_content.expects(:create_pairwise_question).returns(question) |
102 | pairwise_content.expects(:toggle_autoactivate_ideas).at_least_once | 102 | pairwise_content.expects(:toggle_autoactivate_ideas).at_least_once |
103 | #save should call before_save which sends the question to pairwise | 103 | #save should call before_save which sends the question to pairwise |
104 | pairwise_content.save! | 104 | pairwise_content.save! |
105 | - | 105 | + |
106 | #after save pairwise_question_id should store question id generated by pairwise | 106 | #after save pairwise_question_id should store question id generated by pairwise |
107 | assert_equal question.id, pairwise_content.pairwise_question_id | 107 | assert_equal question.id, pairwise_content.pairwise_question_id |
108 | - end | 108 | + end |
109 | 109 | ||
110 | should 'send changes in choices to pairwise service' do | 110 | should 'send changes in choices to pairwise service' do |
111 | @question = Pairwise::Question.new(:id => @pairwise_content.pairwise_question_id, :name => 'Question 1', :active => false) | 111 | @question = Pairwise::Question.new(:id => @pairwise_content.pairwise_question_id, :name => 'Question 1', :active => false) |
@@ -121,7 +121,7 @@ class PairwisePlugin::PairwiseContentTest < ActiveSupport::TestCase | @@ -121,7 +121,7 @@ class PairwisePlugin::PairwiseContentTest < ActiveSupport::TestCase | ||
121 | end | 121 | end |
122 | 122 | ||
123 | should 'send new choices to pairwise_service' do | 123 | should 'send new choices to pairwise_service' do |
124 | - @question = Pairwise::Question.new(:id => @pairwise_content.pairwise_question_id, :name => 'Question 1', :active => false) | 124 | + @question = Pairwise::Question.new(:id => @pairwise_content.pairwise_question_id, :name => 'Question 1', :active => false) |
125 | @pairwise_content.expects('new_record?').returns(false).at_least_once | 125 | @pairwise_content.expects('new_record?').returns(false).at_least_once |
126 | @pairwise_content.expects('valid?').returns(true).at_least_once | 126 | @pairwise_content.expects('valid?').returns(true).at_least_once |
127 | 127 | ||
@@ -170,7 +170,7 @@ class PairwisePlugin::PairwiseContentTest < ActiveSupport::TestCase | @@ -170,7 +170,7 @@ class PairwisePlugin::PairwiseContentTest < ActiveSupport::TestCase | ||
170 | pairwise_content.stubs(:valid? => true) | 170 | pairwise_content.stubs(:valid? => true) |
171 | pairwise_content.stubs(:send_question_to_service => true) | 171 | pairwise_content.stubs(:send_question_to_service => true) |
172 | pairwise_content.join_choices(choices_to_join, parent_choice, user=nil) | 172 | pairwise_content.join_choices(choices_to_join, parent_choice, user=nil) |
173 | - | 173 | + |
174 | choices_related = PairwisePlugin::ChoicesRelated.related_choices_for(parent_choice) | 174 | choices_related = PairwisePlugin::ChoicesRelated.related_choices_for(parent_choice) |
175 | assert_equal 2, choices_related.size | 175 | assert_equal 2, choices_related.size |
176 | assert_equal 1, choices_related.select { |c| c.choice_id == 2}.size | 176 | assert_equal 1, choices_related.select { |c| c.choice_id == 2}.size |
@@ -182,12 +182,12 @@ class PairwisePlugin::PairwiseContentTest < ActiveSupport::TestCase | @@ -182,12 +182,12 @@ class PairwisePlugin::PairwiseContentTest < ActiveSupport::TestCase | ||
182 | # end | 182 | # end |
183 | 183 | ||
184 | should 'ask skip prompt reasons' do | 184 | should 'ask skip prompt reasons' do |
185 | - prompt = Pairwise::Prompt.new({"left_choice_text"=>"Choice 1", "right_choice_text"=>"New inactive choice", "left_choice_id"=>1300, "right_choice_id"=>1302, "id"=>194, "tracking"=>nil, "votes_count"=>0}) | 185 | + prompt = Pairwise::Prompt.new({"left_choice_text"=>"Choice 1", "right_choice_text"=>"New inactive choice", "left_choice_id"=>1300, "right_choice_id"=>1302, "id"=>194, "tracking"=>nil, "votes_count"=>0}) |
186 | reasons = @pairwise_content.ask_skip_reasons(prompt) | 186 | reasons = @pairwise_content.ask_skip_reasons(prompt) |
187 | 187 | ||
188 | assert_not_nil reasons | 188 | assert_not_nil reasons |
189 | assert_equal 7, reasons.size | 189 | assert_equal 7, reasons.size |
190 | - | 190 | + |
191 | assert reasons[0].include? PairwisePlugin::PairwiseContent::REASONS_ARRAY[0][:text] | 191 | assert reasons[0].include? PairwisePlugin::PairwiseContent::REASONS_ARRAY[0][:text] |
192 | assert reasons[1].include? PairwisePlugin::PairwiseContent::REASONS_ARRAY[1][:text] | 192 | assert reasons[1].include? PairwisePlugin::PairwiseContent::REASONS_ARRAY[1][:text] |
193 | assert reasons[2].include? PairwisePlugin::PairwiseContent::REASONS_ARRAY[2][:text] | 193 | assert reasons[2].include? PairwisePlugin::PairwiseContent::REASONS_ARRAY[2][:text] |
@@ -196,4 +196,35 @@ class PairwisePlugin::PairwiseContentTest < ActiveSupport::TestCase | @@ -196,4 +196,35 @@ class PairwisePlugin::PairwiseContentTest < ActiveSupport::TestCase | ||
196 | assert reasons[5].include? PairwisePlugin::PairwiseContent::REASONS_ARRAY[4][:text] | 196 | assert reasons[5].include? PairwisePlugin::PairwiseContent::REASONS_ARRAY[4][:text] |
197 | assert reasons[6].include? PairwisePlugin::PairwiseContent::REASONS_ARRAY[5][:text] | 197 | assert reasons[6].include? PairwisePlugin::PairwiseContent::REASONS_ARRAY[5][:text] |
198 | end | 198 | end |
199 | + | ||
200 | + should 'append active class in article view when it is not archived' do | ||
201 | + @pairwise_content.expects(:archived?).returns(false) | ||
202 | + assert_equal 'pairwise-plugin_pairwise-content active', @pairwise_content.css_class_name | ||
203 | + end | ||
204 | + | ||
205 | + should 'append archived class in article view when it is archived' do | ||
206 | + @pairwise_content.expects(:archived?).returns(true) | ||
207 | + assert_equal 'pairwise-plugin_pairwise-content archived', @pairwise_content.css_class_name | ||
208 | + end | ||
209 | + | ||
210 | + should 'render read only view when the pairwise content is archived' do | ||
211 | + @profile.environment.enable_plugin(PairwisePlugin) | ||
212 | + expects(:render).with(:file => 'content_viewer/read_only', :locals => {:pairwise_content => @pairwise_content}) | ||
213 | + @pairwise_content.expects(:archived?).returns(true) | ||
214 | + instance_eval(&@pairwise_content.to_html) | ||
215 | + end | ||
216 | + | ||
217 | + should 'render normal view when the pairwise content is not archived' do | ||
218 | + @profile.environment.enable_plugin(PairwisePlugin) | ||
219 | + expects(:render).with(:file => 'content_viewer/prompt', :locals => {:pairwise_content => @pairwise_content, :source => nil, :embeded => false, :prompt_id => nil }) | ||
220 | + @pairwise_content.expects(:archived?).returns(false) | ||
221 | + instance_eval(&@pairwise_content.to_html) | ||
222 | + end | ||
223 | + | ||
224 | + should 'render nothing when the plugin is not enabled' do | ||
225 | + @profile.environment.disable_plugin(PairwisePlugin) | ||
226 | + expects(:render).with(:file => 'content_viewer/closed_pool') | ||
227 | + instance_eval(&@pairwise_content.to_html) | ||
228 | + end | ||
229 | + | ||
199 | end | 230 | end |
views/content_viewer/_menu.html.erb
1 | <% extend PairwisePlugin::Helpers::ViewerHelper %> | 1 | <% extend PairwisePlugin::Helpers::ViewerHelper %> |
2 | 2 | ||
3 | <ul class="pairwise_menu"> | 3 | <ul class="pairwise_menu"> |
4 | - <li> | ||
5 | - <%= pairwise_tab_remote_link _('Pairwise Vote'), pairwise_content.prompt_url, pairwise_content, embeded, :class => active_tab == :prompt ? 'active' : '' %> | ||
6 | - </li> | 4 | + <% unless pairwise_content.archived? %> |
5 | + <li> | ||
6 | + <%= pairwise_tab_remote_link _('Pairwise Vote'), pairwise_content.prompt_url, pairwise_content, embeded, :class => active_tab == :prompt ? 'active' : '' %> | ||
7 | + </li> | ||
8 | + <% end %> | ||
7 | <li><%= pairwise_tab_remote_link _('Results'), pairwise_content.result_url, pairwise_content, embeded, :class => active_tab == :results ? 'active' : '' %></li> | 9 | <li><%= pairwise_tab_remote_link _('Results'), pairwise_content.result_url, pairwise_content, embeded, :class => active_tab == :results ? 'active' : '' %></li> |
8 | <% if !embeded && pairwise_content.allow_edit?(user) %> | 10 | <% if !embeded && pairwise_content.allow_edit?(user) %> |
9 | <li><%= pairwise_edit_link _('Edit'), pairwise_content %></li> | 11 | <li><%= pairwise_edit_link _('Edit'), pairwise_content %></li> |
views/content_viewer/_result.html.erb