Commit ae0165251d3f3502c679819521bfef60c9ad4a46
Committed by
Tallys Martins
1 parent
7aab108a
Exists in
master
and in
29 other branches
Writting and fixing Work Assignment Plugin tests
- Written tests of work_assignment cms controller. - Fixed failures on unit tests - Removed empy lines, spaces and useless code. - Fixing bugs on edit_visibility filters Signed-off-by: Tallys Martins <tallysmartins@gmail.com> Signed-off-by: Dylan Guedes <djmgguedes@gmail.com> Signed-off-by: Filipe Ribeiro <firibeiro77@live.com> Signed-off-by: Pedro de Lyra <pedrodelyra@gmail.com> Signed-off-by: Álvaro Fernando <alvarofernandoms@gmail.com> Signed-off-by: Eduardo Vital <vitaldu@gmail.com> Signed-off-by: André Bernardes <andrebsguedes@gmail.com> Signed-off-by: Hebert Douglas <hebertdougl@gmail>
Showing
16 changed files
with
267 additions
and
92 deletions
Show diff stats
app/controllers/my_profile/cms_controller.rb
lib/noosfero/plugin.rb
... | ... | @@ -224,12 +224,6 @@ class Noosfero::Plugin |
224 | 224 | false |
225 | 225 | end |
226 | 226 | |
227 | - # -> Add action names to a list of filtered actions on cms controller | |
228 | - # returns = [] | |
229 | - def add_action_to_list | |
230 | - [] | |
231 | - end | |
232 | - | |
233 | 227 | # -> Adds buttons to the control panel |
234 | 228 | # returns = { :title => title, :icon => icon, :url => url } |
235 | 229 | # title = name that will be displayed. | ... | ... |
plugins/work_assignment/lib/ext/cms_controller.rb
... | ... | @@ -2,33 +2,29 @@ require_dependency 'cms_controller' |
2 | 2 | |
3 | 3 | class CmsController |
4 | 4 | |
5 | - | |
6 | -protect_if :only => :edit_visibility do |c,user,profile| | |
7 | - profile.articles.find(c.params[:article_id]).author == user || user.has_permission?('view_private_content', profile) | |
5 | +protect_if :only => :edit_visibility do |c, user, profile| | |
6 | + article = c.environment.articles.find_by_id(c.params[:article_id]) | |
7 | + (user && !article.nil? && article.folder? && article.parent.allow_privacy_edition && | |
8 | + (article.author == user || user.has_permission?('view_private_content', profile))) | |
8 | 9 | end |
9 | 10 | |
10 | 11 | def edit_visibility |
11 | 12 | unless params[:article_id].blank? |
12 | - @folder = profile.articles.find(params[:article_id]) | |
13 | - @back_to = url_for(@folder.parent.url) | |
13 | + folder = profile.environment.articles.find_by_id(params[:article_id]) | |
14 | + @back_to = url_for(folder.parent.url) | |
14 | 15 | unless params[:article].blank? |
15 | - @folder.published = params[:article][:published] | |
16 | + folder.published = params[:article][:published] | |
16 | 17 | unless params[:q].nil? |
17 | - @folder.article_privacy_exceptions = params[:q].split(/,/).map{|n| environment.people.find n.to_i} | |
18 | - @folder.children.each do |c| | |
19 | - c.article_privacy_exceptions = params[:q].split(/,/).map{|n| environment.people.find n.to_i} | |
20 | - c.save! | |
21 | - end | |
18 | + folder.article_privacy_exceptions = params[:q].split(/,/).map{|n| environment.people.find n.to_i} | |
22 | 19 | end |
23 | - @folder.save! | |
20 | + folder.save! | |
24 | 21 | redirect_to @back_to |
25 | - end | |
22 | + end | |
26 | 23 | end |
27 | 24 | end |
28 | 25 | |
29 | 26 | def self.add_as_exception?(action) |
30 | 27 | actions = "edit_visibility, search_article_privacy_exceptions" |
31 | - | |
32 | 28 | if actions.include? action |
33 | 29 | true |
34 | 30 | else |
... | ... | @@ -36,4 +32,4 @@ def self.add_as_exception?(action) |
36 | 32 | end |
37 | 33 | end |
38 | 34 | |
39 | -end | |
40 | 35 | \ No newline at end of file |
36 | +end | ... | ... |
plugins/work_assignment/lib/ext/email_contact.rb
... | ... | @@ -31,17 +31,17 @@ class EmailContact |
31 | 31 | class EmailSender < ActionMailer::Base |
32 | 32 | |
33 | 33 | def notification(email_contact) |
34 | - @name = email_contact.sender.name | |
35 | - @email = email_contact.sender.email | |
36 | - @message = email_contact.message | |
37 | - @target = email_contact.receiver | |
34 | + name = email_contact.sender.name | |
35 | + email = email_contact.sender.email | |
36 | + message = email_contact.message | |
37 | + target = email_contact.receiver | |
38 | 38 | |
39 | 39 | options = { |
40 | 40 | content_type: 'text/html', |
41 | - to: @target, | |
42 | - reply_to: @email, | |
41 | + to: target, | |
42 | + reply_to: email, | |
43 | 43 | subject: email_contact.subject, |
44 | - body: @message, | |
44 | + body: message, | |
45 | 45 | from: "#{email_contact.sender.environment.name} <#{email_contact.sender.environment.contact_email}>", |
46 | 46 | } |
47 | 47 | |
... | ... | @@ -50,16 +50,16 @@ class EmailContact |
50 | 50 | end |
51 | 51 | |
52 | 52 | def build_mail_message!(environment, uploaded_files, parent_id) |
53 | - @article = environment.articles.find_by_id(parent_id) | |
54 | - @message = "" | |
55 | - if !@article.nil? && @article.type == "WorkAssignmentPlugin::WorkAssignment" | |
56 | - @message = @article.default_email + "<br>" | |
53 | + article = environment.articles.find_by_id(parent_id) | |
54 | + message = "" | |
55 | + if !article.nil? && article.type == "WorkAssignmentPlugin::WorkAssignment" | |
56 | + message = article.default_email + "<br>" | |
57 | 57 | end |
58 | 58 | uploaded_files.each do |file| |
59 | - @real_file_url = "http://#{file.url[:host]}:#{file.url[:port]}/#{file.url[:profile]}/#{file.path}" | |
60 | - @message += "<br><a href='#{@real_file_url}'>#{@real_file_url}</a>" | |
59 | + file_url = "http://#{file.url[:host]}:#{file.url[:port]}/#{file.url[:profile]}/#{file.path}" | |
60 | + message += "<br><a href='#{file_url}'>#{file_url}</a>" | |
61 | 61 | end |
62 | - self.message = @message | |
62 | + self.message = message | |
63 | 63 | end |
64 | 64 | |
65 | 65 | end | ... | ... |
... | ... | @@ -0,0 +1,13 @@ |
1 | +require_dependency 'article' | |
2 | +require_dependency 'folder' | |
3 | + | |
4 | +class Folder < Article | |
5 | + after_save do |folder| | |
6 | + if folder.parent.kind_of?(WorkAssignmentPlugin::WorkAssignment) | |
7 | + folder.children.each do |c| | |
8 | + c.published = folder.published | |
9 | + c.article_privacy_exceptions = folder.article_privacy_exceptions | |
10 | + end | |
11 | + end | |
12 | + end | |
13 | +end | |
0 | 14 | \ No newline at end of file | ... | ... |
plugins/work_assignment/lib/ext/uploaded_file.rb
... | ... | @@ -9,4 +9,16 @@ class UploadedFile < Article |
9 | 9 | uploaded_file.parent = author_folder |
10 | 10 | end |
11 | 11 | end |
12 | + | |
13 | + after_validation do |uploaded_file| | |
14 | + if uploaded_file.parent.parent.kind_of?(WorkAssignmentPlugin::WorkAssignment) | |
15 | + uploaded_file.published = uploaded_file.parent.published | |
16 | + end | |
17 | + end | |
18 | + | |
19 | + # after_create do |uploaded_file| | |
20 | + # if uploaded_file.parent.parent.kind_of?(WorkAssignmentPlugin::WorkAssignment) | |
21 | + # uploaded_file.published = uploaded_file.parent.published | |
22 | + # end | |
23 | + # end | |
12 | 24 | end | ... | ... |
plugins/work_assignment/lib/work_assignment_plugin.rb
... | ... | @@ -54,11 +54,11 @@ class WorkAssignmentPlugin < Noosfero::Plugin |
54 | 54 | def cms_controller_filters |
55 | 55 | block = proc do |
56 | 56 | if request.post? && params[:uploaded_files] |
57 | - @email_notification = params[:article_email_notification] | |
58 | - unless !@email_notification || @email_notification.empty? | |
59 | - @email_contact = EmailContact.new(:subject => @parent.name, :receiver => @email_notification, :sender => user) | |
60 | - @email_contact.build_mail_message!(environment, @uploaded_files, @parent.id) | |
61 | - if @email_contact.deliver | |
57 | + email_notification = params[:article_email_notification] | |
58 | + unless !email_notification || email_notification.empty? | |
59 | + email_contact = EmailContact.new(:subject => @parent.name, :receiver => email_notification, :sender => user) | |
60 | + email_contact.build_mail_message!(environment, @uploaded_files, @parent.id) | |
61 | + if email_contact.deliver | |
62 | 62 | session[:notice] = _('Notification successfully sent') |
63 | 63 | else |
64 | 64 | session[:notice] = _('Notification not sent') |
... | ... | @@ -81,11 +81,4 @@ class WorkAssignmentPlugin < Noosfero::Plugin |
81 | 81 | end |
82 | 82 | end |
83 | 83 | end |
84 | - | |
85 | - def add_action_to_list | |
86 | - proc do | |
87 | - action_list.append(", edits, search_article_privacy_exceptions") | |
88 | - end | |
89 | - end | |
90 | - | |
91 | 84 | end | ... | ... |
plugins/work_assignment/lib/work_assignment_plugin/helper.rb
... | ... | @@ -16,7 +16,6 @@ module WorkAssignmentPlugin::Helper |
16 | 16 | |
17 | 17 | def display_author_folder(author_folder, user) |
18 | 18 | return if author_folder.children.empty? |
19 | - action = 'toggle_friends_permission' | |
20 | 19 | content_tag('tr', |
21 | 20 | content_tag('td', link_to_last_submission(author_folder, user)) + |
22 | 21 | content_tag('td', time_format(author_folder.children.last.created_at)) + |
... | ... | @@ -74,21 +73,21 @@ module WorkAssignmentPlugin::Helper |
74 | 73 | |
75 | 74 | def display_privacy_button(author_folder, user) |
76 | 75 | if author_folder |
77 | - @folder = environment.articles.find_by_id(author_folder.id) | |
78 | - work_assignment = @folder.parent | |
79 | - @back_to = url_for(@folder.parent.url) | |
76 | + folder = environment.articles.find_by_id(author_folder.id) | |
77 | + work_assignment = folder.parent | |
78 | + @back_to = url_for(folder.parent.url) | |
80 | 79 | if(user && work_assignment.allow_privacy_edition && |
81 | - (author_folder.author_id == user.id || user.has_permission?('view_private_content', work_assignment.profile))) | |
80 | + ((author_folder.author_id == user.id && (user.is_member_of? work_assignment.profile)) || | |
81 | + user.has_permission?('view_private_content', work_assignment.profile))) | |
82 | 82 | |
83 | 83 | @tokenized_children = prepare_to_token_input( |
84 | 84 | profile.members.includes(:articles_with_access).find_all{ |m| |
85 | - m.articles_with_access.include?(@folder) | |
85 | + m.articles_with_access.include?(folder) | |
86 | 86 | }) |
87 | 87 | button :edit, _('Edit'), { :controller => 'cms', |
88 | - :action => 'edit_visibility', :article_id => @folder.id, | |
88 | + :action => 'edit_visibility', :article_id => folder.id, | |
89 | 89 | :tokenized_children => @tokenized_children, :back_to => @back_to}, :method => :post |
90 | 90 | end |
91 | 91 | end |
92 | 92 | end |
93 | - | |
94 | 93 | end | ... | ... |
plugins/work_assignment/public/content_resize.js
plugins/work_assignment/public/style.css
1 | 1 | .icon-newwork-assignment { background-image: url(../../designs/icons/tango/Tango/16x16/categories/applications-office.png) } |
2 | 2 | .icon-work-assignment { background-image: url(../../designs/icons/tango/Tango/16x16/categories/applications-office.png) } |
3 | -.select-privacy-options { | |
4 | - padding: 5px 20px; | |
5 | - width: 400px; | |
6 | - height: 300px; | |
7 | -} | |
8 | 3 | \ No newline at end of file | ... | ... |
plugins/work_assignment/test/functional/cms_controller_test.rb
... | ... | @@ -6,39 +6,196 @@ class CmsController; def rescue_action(e) raise e end; end |
6 | 6 | |
7 | 7 | class CmsControllerTest < ActionController::TestCase |
8 | 8 | |
9 | + include NoosferoTestHelper | |
10 | + | |
11 | + fixtures :environments | |
12 | + | |
13 | + | |
14 | + attr_reader :profile | |
15 | + attr_accessor :person | |
16 | + | |
9 | 17 | def setup |
10 | 18 | @controller = CmsController.new |
11 | 19 | @request = ActionController::TestRequest.new |
12 | 20 | @response = ActionController::TestResponse.new |
13 | 21 | @person = create_user('test_user').person |
14 | 22 | login_as :test_user |
23 | + e = Environment.default | |
24 | + e.enabled_plugins = ['WorkAssignmentPlugin'] | |
25 | + e.save! | |
26 | + @organization = fast_create(Organization) # | |
15 | 27 | end |
16 | 28 | |
17 | - attr_accessor :person | |
18 | - | |
19 | 29 | should 'not allow non-members to upload submissions on work_assignment' do |
20 | - organization = fast_create(Organization) | |
21 | - work_assignment = WorkAssignmentPlugin::WorkAssignment.create!(:name => 'Work Assignment', :profile => organization) | |
22 | - | |
23 | - get :upload_files, :profile => organization.identifier, :parent_id => work_assignment.id | |
30 | + work_assignment = create_work_assignment('Another Work Assignment', @organization, nil, nil) | |
31 | + get :upload_files, :profile => @organization.identifier, :parent_id => work_assignment.id | |
24 | 32 | assert_response :forbidden |
25 | 33 | assert_template 'access_denied' |
34 | + end | |
26 | 35 | |
27 | - organization.add_member(person) | |
28 | - | |
29 | - get :upload_files, :profile => organization.identifier, :parent_id => work_assignment.id | |
36 | + should 'allow members to upload submissions on work_assignment' do | |
37 | + @organization.add_member(person) | |
38 | + # then he trys to upload new stuff | |
39 | + work_assignment = create_work_assignment('Another Work Assignment', @organization, nil, nil) | |
40 | + get :upload_files, :profile => @organization.identifier, :parent_id => work_assignment.id | |
30 | 41 | assert_response :success |
31 | 42 | end |
32 | 43 | |
33 | - should 'upload submission and automatically move it to the author folder' do | |
34 | - organization = fast_create(Organization) | |
35 | - work_assignment = WorkAssignmentPlugin::WorkAssignment.create!(:name => 'Work Assignment', :profile => organization) | |
36 | - organization.add_member(person) | |
37 | - post :upload_files, :profile => organization.identifier, :parent_id => work_assignment.id, :uploaded_files => [fixture_file_upload('/files/test.txt', 'text/plain')] | |
44 | + should 'redirect to Work Assignment view page after upload submission' do | |
45 | + @organization.add_member(person) | |
46 | + work_assignment = create_work_assignment('Another Work Assignment', @organization, nil, nil) | |
47 | + post :upload_files, :profile => @organization.identifier, :parent_id => work_assignment.id, :uploaded_files => [fixture_file_upload('/files/test.txt', 'text/plain')] , :back_to => @work_assignment.url | |
48 | + assert_redirected_to work_assignment.url | |
49 | + end | |
38 | 50 | |
51 | + should 'upload submission and automatically move it to the author folder' do | |
52 | + work_assignment = create_work_assignment('Another Work Assignment', @organization, nil, nil) | |
53 | + @organization.add_member(person) | |
54 | + post :upload_files, :profile => @organization.identifier, :parent_id => work_assignment.id, :uploaded_files => [fixture_file_upload('/files/test.txt', 'text/plain')] | |
39 | 55 | submission = UploadedFile.last |
40 | 56 | assert_equal work_assignment.find_or_create_author_folder(person), submission.parent |
41 | 57 | end |
42 | 58 | |
43 | -end | |
59 | + should 'work_assignment attribute allow_privacy_edition is true when set a new work_assignment' do | |
60 | + work_assignment = create_work_assignment('Another Work Assignment', @organization, nil, true) | |
61 | + @organization.add_member(person) | |
62 | + assert_equal true, work_assignment.allow_privacy_edition | |
63 | + end | |
64 | + | |
65 | + should 'a submission and parent attribute "published" be equal to Work Assignment attribute publish submissions' do | |
66 | + @organization.add_member(person) | |
67 | + work_assignment = create_work_assignment('Another Work Assignment', @organization, true, nil) | |
68 | + assert_equal true, work_assignment.publish_submissions | |
69 | + post :upload_files, :profile => @organization.identifier, :parent_id => work_assignment.id, :uploaded_files => [fixture_file_upload('/files/test.txt', 'text/plain')] | |
70 | + submission = UploadedFile.last | |
71 | + assert_equal work_assignment.publish_submissions, submission.published | |
72 | + assert_equal work_assignment.publish_submissions, submission.parent.published | |
73 | + | |
74 | + other_work_assignment = create_work_assignment('Another Other Work Assigment', @organization, false, nil) | |
75 | + assert_equal false, other_work_assignment.publish_submissions | |
76 | + post :upload_files, :profile => @organization.identifier, :parent_id => other_work_assignment.id, :uploaded_files => [fixture_file_upload('/files/test.txt', 'text/plain')] | |
77 | + submission = UploadedFile.last | |
78 | + assert_equal other_work_assignment.publish_submissions, submission.published | |
79 | + assert_equal other_work_assignment.publish_submissions, submission.parent.published | |
80 | + end | |
81 | + | |
82 | + should 'submission edit visibility deny access to users and admin when Work Assignment allow_privacy_edition is false' do | |
83 | + @organization.add_member(person) | |
84 | + ##### Testing with normal user | |
85 | + work_assignment = create_work_assignment('Another Work Assignment', @organization, nil, nil) | |
86 | + post :upload_files, :profile => @organization.identifier, :parent_id => work_assignment.id, :uploaded_files => [fixture_file_upload('/files/test.txt', 'text/plain')] | |
87 | + submission = UploadedFile.last | |
88 | + assert_equal false, submission.published | |
89 | + assert_equal false, submission.parent.published | |
90 | + | |
91 | + post :edit_visibility, :profile => @organization.identifier, :article_id => submission.parent.id | |
92 | + assert_template 'access_denied' | |
93 | + post :edit_visibility, :profile => @organization.identifier, :article_id => submission.parent.id, :article => { :published => true } | |
94 | + assert_template 'access_denied' | |
95 | + | |
96 | + submission.reload | |
97 | + assert_equal false, submission.published | |
98 | + assert_equal false, submission.parent.published | |
44 | 99 | |
100 | + #### Even with admin user | |
101 | + e = Environment.default | |
102 | + assert_equal false, person.is_admin? | |
103 | + e.add_admin(person) | |
104 | + e.save! | |
105 | + assert_equal true, person.is_admin? | |
106 | + | |
107 | + post :edit_visibility, :profile => @organization.identifier, :article_id => submission.parent.id | |
108 | + assert_template 'access_denied' | |
109 | + post :edit_visibility, :profile => @organization.identifier, :article_id => submission.parent.id, :article => { :published => true } | |
110 | + assert_template 'access_denied' | |
111 | + | |
112 | + submission.reload | |
113 | + assert_equal false, submission.published | |
114 | + end | |
115 | + | |
116 | + should 'redirect an unlogged user to the login page if he tryes to access the edit visibility page and work_assignment allow_privacy_edition is true' do | |
117 | + @organization.add_member(person) | |
118 | + work_assignment = create_work_assignment('Another Work Assignment', @organization, nil, nil) | |
119 | + work_assignment.allow_privacy_edition = true # the user can edit the privacy | |
120 | + assert_equal true, work_assignment.allow_privacy_edition | |
121 | + work_assignment.save! | |
122 | + parent = work_assignment.find_or_create_author_folder(person) | |
123 | + UploadedFile.create( | |
124 | + { | |
125 | + :uploaded_data => fixture_file_upload('/files/test.txt', 'text/plain'), | |
126 | + :profile => @organization, | |
127 | + :parent => parent, | |
128 | + :last_changed_by => person, | |
129 | + :author => person, | |
130 | + }, | |
131 | + :without_protection => true | |
132 | + ) | |
133 | + logout | |
134 | + submission = UploadedFile.last | |
135 | + assert_equal false, submission.parent.published | |
136 | + assert_equal false, submission.published | |
137 | + | |
138 | + post :edit_visibility, :profile => @organization.identifier, :article_id => submission.parent.id | |
139 | + assert_redirected_to '/account/login' | |
140 | + post :edit_visibility, :profile => @organization.identifier, :article_id => submission.parent.id, :article => { :published => true } | |
141 | + assert_redirected_to '/account/login' | |
142 | + submission.reload | |
143 | + assert_equal false, submission.parent.published | |
144 | + assert_equal false, submission.published | |
145 | + end | |
146 | + | |
147 | + should 'submission edit_visibility deny access to not owner when WorkAssignment edit_visibility is true' do | |
148 | + @organization.add_member(person) # current_user is a member | |
149 | + work_assignment = create_work_assignment('Another Work Assignment', @organization, nil, true) | |
150 | + @parent = work_assignment.find_or_create_author_folder(person) | |
151 | + UploadedFile.create( | |
152 | + { | |
153 | + :uploaded_data => fixture_file_upload('/files/test.txt', 'text/plain'), | |
154 | + :profile => @organization, | |
155 | + :parent => @parent, | |
156 | + :last_changed_by => person, | |
157 | + :author => person, | |
158 | + }, | |
159 | + :without_protection => true | |
160 | + ) | |
161 | + logout | |
162 | + | |
163 | + | |
164 | + other_person = create_user('other_user').person | |
165 | + @organization.add_member(other_person) | |
166 | + login_as :other_user | |
167 | + | |
168 | + @organization.add_member(other_person) | |
169 | + submission = UploadedFile.last | |
170 | + assert_equal(submission.author, person) | |
171 | + | |
172 | + post :edit_visibility, :profile => @organization.identifier, :article_id => submission.parent.id | |
173 | + assert_template 'access_denied' | |
174 | + | |
175 | + post :edit_visibility, :profile => @organization.identifier, :article_id => submission.parent.id, :article => { :published => true } | |
176 | + assert_template 'access_denied' | |
177 | + | |
178 | + submission.reload | |
179 | + assert_equal false, submission.parent.published | |
180 | + assert_equal false, submission.published | |
181 | + end | |
182 | + | |
183 | + should 'submission white list give permission to an user that has been added' do | |
184 | + other_person = create_user('other_user').person | |
185 | + @organization.add_member(person) | |
186 | + @organization.add_member(other_person) | |
187 | + work_assignment = create_work_assignment('Another Work Assignment', @organization, false, true) | |
188 | + post :upload_files, :profile => @organization.identifier, :parent_id => work_assignment.id, :uploaded_files => [fixture_file_upload('/files/test.txt', 'text/plain')] | |
189 | + submission = UploadedFile.last | |
190 | + assert_equal false, submission.display_unpublished_article_to?(other_person) | |
191 | + post :edit_visibility, :profile => @organization.identifier, :article_id => submission.parent.id, :article => { :published => false }, :q => other_person.id | |
192 | + submission.reload | |
193 | + assert_equal true, submission.parent.display_unpublished_article_to?(other_person) | |
194 | + assert_equal true, submission.display_unpublished_article_to?(other_person) | |
195 | + end | |
196 | + | |
197 | + private | |
198 | + def create_work_assignment(name = nil, profile = nil, publish_submissions = nil, allow_privacy_edition = nil) | |
199 | + @work_assignment = WorkAssignmentPlugin::WorkAssignment.create!(:name => name, :profile => profile, :publish_submissions => publish_submissions, :allow_privacy_edition => allow_privacy_edition) | |
200 | + end | |
201 | +end | ... | ... |
plugins/work_assignment/test/unit/work_assingment_plugin/work_assignment_test.rb
1 | -require "test_helper" | |
1 | +require File.expand_path(File.dirname(__FILE__) + "/../../../../../test/test_helper") | |
2 | 2 | |
3 | 3 | class WorkAssignmentTest < ActiveSupport::TestCase |
4 | 4 | should 'find or create sub-folder based on author identifier' do |
... | ... | @@ -38,7 +38,7 @@ class WorkAssignmentTest < ActiveSupport::TestCase |
38 | 38 | submission = create(UploadedFile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :profile => organization, :parent => work_assignment, :author => author) |
39 | 39 | |
40 | 40 | author_folder = work_assignment.find_or_create_author_folder(author) |
41 | - assert author_folder, submission.parent | |
41 | + assert_equal author_folder, submission.parent | |
42 | 42 | end |
43 | 43 | |
44 | 44 | should 'add logged user on cache_key if is a member' do | ... | ... |
plugins/work_assignment/test/unit/work_assingment_plugin_test.rb
1 | -require 'test_helper' | |
1 | +require File.expand_path(File.dirname(__FILE__) + "/../../../../test/test_helper") | |
2 | 2 | |
3 | 3 | class WorkAssignmentPluginTest < ActiveSupport::TestCase |
4 | 4 | should 'verify if a content is a work_assignment submission' do |
5 | 5 | organization = fast_create(Organization) |
6 | - content = create(UploadedFile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :profile => organization, :author => fast_create(Person)) | |
6 | + folder = fast_create(Folder) | |
7 | + person = fast_create(Person) | |
8 | + content = UploadedFile.create( | |
9 | + { | |
10 | + :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), | |
11 | + :profile => organization, | |
12 | + :parent => folder, | |
13 | + :last_changed_by => person, | |
14 | + :author => person, | |
15 | + }, | |
16 | + :without_protection => true | |
17 | + ) | |
18 | + #content = create(UploadedFile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :profile => organization, :author => fast_create(Person)) | |
7 | 19 | assert !WorkAssignmentPlugin.is_submission?(content) |
8 | 20 | |
9 | 21 | work_assignment = WorkAssignmentPlugin::WorkAssignment.create!(:name => 'Work Assignment', :profile => organization) |
... | ... | @@ -22,7 +34,9 @@ class WorkAssignmentPluginTest < ActiveSupport::TestCase |
22 | 34 | work_assignment = submission.parent.parent |
23 | 35 | work_assignment.publish_submissions = true |
24 | 36 | work_assignment.save! |
25 | - assert WorkAssignmentPlugin.can_download_submission?(nil, submission) | |
37 | + | |
38 | + other_submission = create_submission(nil, work_assignment) | |
39 | + assert WorkAssignmentPlugin.can_download_submission?(nil, other_submission) | |
26 | 40 | end |
27 | 41 | |
28 | 42 | should 'be able to download submission if the user is author of it' do |
... | ... | @@ -45,12 +59,21 @@ class WorkAssignmentPluginTest < ActiveSupport::TestCase |
45 | 59 | |
46 | 60 | private |
47 | 61 | |
48 | - def create_submission(author=nil) | |
62 | + def create_submission(author=nil, work_assignment=nil) | |
49 | 63 | author ||= fast_create(Person) |
50 | 64 | organization = fast_create(Organization) |
51 | - | |
52 | - work_assignment = WorkAssignmentPlugin::WorkAssignment.create!(:name => 'Work Assignment', :profile => organization) | |
65 | + organization.add_member(author) | |
66 | + work_assignment ||= WorkAssignmentPlugin::WorkAssignment.create!(:name => 'Work Assignment', :profile => organization) | |
53 | 67 | author_folder = work_assignment.find_or_create_author_folder(author) |
54 | - create(UploadedFile, :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :profile => organization, :parent => author_folder, :author => author, :last_changed_by => author) | |
68 | + content = UploadedFile.create( | |
69 | + { | |
70 | + :uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), | |
71 | + :profile => organization, | |
72 | + :parent => author_folder, | |
73 | + :last_changed_by => author, | |
74 | + :author => author, | |
75 | + }, | |
76 | + :without_protection => true | |
77 | + ) | |
55 | 78 | end |
56 | 79 | end | ... | ... |
plugins/work_assignment/views/cms/_notify_text_field.html.erb
plugins/work_assignment/views/cms/edit_visibility.html.erb
plugins/work_assignment/views/cms/work_assignment_plugin/_work_assignment.html.erb