From bb9580ee00c20caa533a40d40eae57bd35e9332d Mon Sep 17 00:00:00 2001 From: Arthur Del Esposte Date: Fri, 2 Oct 2015 15:16:21 +0000 Subject: [PATCH] Handle privacity in WorkAssignment submissions properly --- plugins/work_assignment/lib/ext/article.rb | 8 +++++++- plugins/work_assignment/test/functional/cms_controller_test.rb | 25 +++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/plugins/work_assignment/lib/ext/article.rb b/plugins/work_assignment/lib/ext/article.rb index edb5ab3..9ada42e 100644 --- a/plugins/work_assignment/lib/ext/article.rb +++ b/plugins/work_assignment/lib/ext/article.rb @@ -13,7 +13,13 @@ class Article end def work_assignment_change_visibility - if self.parent && self.parent.parent && self.parent.parent.kind_of?(WorkAssignmentPlugin::WorkAssignment) + if WorkAssignmentPlugin.is_submission?(self) + related_work_assignment = self.parent.parent + + if(!related_work_assignment.publish_submissions) + self.show_to_followers = false + end + self.published = self.parent.published end end diff --git a/plugins/work_assignment/test/functional/cms_controller_test.rb b/plugins/work_assignment/test/functional/cms_controller_test.rb index df204bf..1847cd4 100644 --- a/plugins/work_assignment/test/functional/cms_controller_test.rb +++ b/plugins/work_assignment/test/functional/cms_controller_test.rb @@ -71,6 +71,31 @@ class CmsControllerTest < ActionController::TestCase assert_equal other_work_assignment.publish_submissions, submission.parent.published end + should 'submission inherit Work Assignment "published" attribute and not be set as show_to_followers when it is not public' do + @organization.add_member(@person) + work_assignment = create_work_assignment('Work Assignment', @organization, false, nil) + + assert !work_assignment.publish_submissions + + post :upload_files, :profile => @organization.identifier, :parent_id => work_assignment.id, :uploaded_files => [fixture_file_upload('/files/test.txt', 'text/plain')] + submission = UploadedFile.last + + assert !submission.show_to_followers? + assert_equal work_assignment.publish_submissions, submission.published + assert_equal work_assignment.publish_submissions, submission.parent.published + + other_work_assignment = create_work_assignment('Other Work Assigment', @organization, true, nil) + + assert_equal true, other_work_assignment.publish_submissions + + post :upload_files, :profile => @organization.identifier, :parent_id => other_work_assignment.id, :uploaded_files => [fixture_file_upload('/files/test.txt', 'text/plain')] + submission = UploadedFile.last + + assert submission.show_to_followers? + assert_equal other_work_assignment.publish_submissions, submission.published + assert_equal other_work_assignment.publish_submissions, submission.parent.published + end + private def create_work_assignment(name = nil, profile = nil, publish_submissions = nil, allow_visibility_edition = nil) @work_assignment = WorkAssignmentPlugin::WorkAssignment.create!(:name => name, :profile => profile, :publish_submissions => publish_submissions, :allow_visibility_edition => allow_visibility_edition) -- libgit2 0.21.2