fix google doc submissions with submissions folder enabled
test plan: - enable the Google Drive plugin (see instructions in the wiki article "OtherServiceTestAccounts", section "Google (Beta)") - enable the submissions folder feature - ensure that you can submit an assignment that accepts file uploads via the Google Doc tab fixes CNVS-29307 Change-Id: I5bb953abd89bfcd1a8c0845eb76b1dcb78f4ef89 Reviewed-on: https://gerrit.instructure.com/79379 Tested-by: Jenkins Reviewed-by: Steven Burnett <sburnett@instructure.com> QA-Review: Deepeeca Soundarrajan <dsoundarrajan@instructure.com> Product-Review: Jeremy Stanley <jeremy@instructure.com>
This commit is contained in:
parent
ae57b0609d
commit
c152d006e0
|
@ -240,7 +240,9 @@ class SubmissionsController < ApplicationController
|
|||
end
|
||||
|
||||
params[:submission][:attachments] = params[:submission][:attachments].compact.uniq
|
||||
copy_attachments_to_submissions_folder! if @context.root_account.feature_enabled?(:submissions_folder)
|
||||
if @context.root_account.feature_enabled?(:submissions_folder)
|
||||
params[:submission][:attachments] = self.class.copy_attachments_to_submissions_folder(@context, params[:submission][:attachments])
|
||||
end
|
||||
|
||||
begin
|
||||
@submission = @assignment.submit_homework(@current_user, params[:submission])
|
||||
|
@ -299,12 +301,14 @@ class SubmissionsController < ApplicationController
|
|||
end
|
||||
private :lookup_existing_attachments
|
||||
|
||||
def copy_attachments_to_submissions_folder!
|
||||
params[:submission][:attachments].map! do |attachment|
|
||||
if attachment.folder.for_submissions?
|
||||
def self.copy_attachments_to_submissions_folder(assignment_context, attachments)
|
||||
attachments.map do |attachment|
|
||||
if attachment.folder && attachment.folder.for_submissions?
|
||||
attachment # already in a submissions folder
|
||||
elsif attachment.context.respond_to?(:submissions_folder)
|
||||
attachment.copy_to_folder!(attachment.context.submissions_folder(assignment_context))
|
||||
else
|
||||
attachment.copy_to_folder!(attachment.context.submissions_folder(@context))
|
||||
attachment # in a weird context; leave it alone
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -620,4 +620,41 @@ describe SubmissionsController do
|
|||
end
|
||||
|
||||
end
|
||||
|
||||
describe "copy_attachments_to_submissions_folder" do
|
||||
before(:once) do
|
||||
course_with_student
|
||||
attachment_model(context: @student)
|
||||
end
|
||||
|
||||
it "copies a user attachment into the user's submissions folder" do
|
||||
atts = SubmissionsController.copy_attachments_to_submissions_folder(@course, [@attachment])
|
||||
expect(atts.length).to eq 1
|
||||
expect(atts[0]).not_to eq @attachment
|
||||
expect(atts[0].folder).to eq @student.submissions_folder(@course)
|
||||
end
|
||||
|
||||
it "leaves files already in submissions folders alone" do
|
||||
@attachment.folder = @student.submissions_folder(@course)
|
||||
@attachment.save!
|
||||
atts = SubmissionsController.copy_attachments_to_submissions_folder(@course, [@attachment])
|
||||
expect(atts).to eq [@attachment]
|
||||
end
|
||||
|
||||
it "copies a group attachment into the group submission folder" do
|
||||
group_model(context: @course)
|
||||
attachment_model(context: @group)
|
||||
atts = SubmissionsController.copy_attachments_to_submissions_folder(@course, [@attachment])
|
||||
expect(atts.length).to eq 1
|
||||
expect(atts[0]).not_to eq @attachment
|
||||
expect(atts[0].folder).to eq @group.submissions_folder
|
||||
end
|
||||
|
||||
it "leaves files in non user/group context alone" do
|
||||
assignment_model(context: @course)
|
||||
weird_file = @assignment.attachments.create! name: 'blah', uploaded_data: default_uploaded_data
|
||||
atts = SubmissionsController.copy_attachments_to_submissions_folder(@course, [weird_file])
|
||||
expect(atts).to eq [weird_file]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue