2020-10-27 00:51:19 +08:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2019-05-18 06:50:20 +08:00
|
|
|
#
|
|
|
|
# Copyright (C) 2019 - present Instructure, Inc.
|
|
|
|
#
|
|
|
|
# This file is part of Canvas.
|
|
|
|
#
|
|
|
|
# Canvas is free software: you can redistribute it and/or modify it under
|
|
|
|
# the terms of the GNU Affero General Public License as published by the Free
|
|
|
|
# Software Foundation, version 3 of the License.
|
|
|
|
#
|
|
|
|
# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
|
|
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
|
|
# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
|
|
# details.
|
|
|
|
#
|
|
|
|
# You should have received a copy of the GNU Affero General Public License along
|
|
|
|
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
#
|
|
|
|
|
|
|
|
require_relative "../graphql_spec_helper"
|
|
|
|
|
|
|
|
RSpec.describe Mutations::CreateSubmissionDraft do
|
|
|
|
before(:once) do
|
|
|
|
@submission = submission_model
|
|
|
|
@attachments = [
|
|
|
|
attachment_with_context(@student),
|
|
|
|
attachment_with_context(@student)
|
|
|
|
]
|
2019-10-22 06:15:28 +08:00
|
|
|
@media_object = factory_with_protected_attributes(MediaObject, media_id: "m-123456")
|
2019-05-18 06:50:20 +08:00
|
|
|
end
|
|
|
|
|
|
|
|
def mutation_str(
|
|
|
|
submission_id: @submission.id,
|
persist selected submission in a2
when there are multiple submission types and the user updates
a submission type, we should persist that choice the next time
they access the assignment.
Test Plan:
* run the db migration to add active_submission_type to the
submission draft:
** bundle exec rake db:migrate:up VERSION=20191001164744
* as a teacher, create an assignment with multiple submission
types (i.e. file upload, text entry)
* as a student in A2, navigate to the assignment
* you should see the landing page requesting you choose a
submission type
* select a type but do not create a draft
* on refreshing the page, you should be taken back to the landing
page
* select the File type
* add a file to the draft
* on refreshing the page, you should be taken to the file upload
component
* select the Text Entry type
* create a text entry draft
* on refreshing the page, you should be taken to the text entry
component
* re-select the File type
* remove the file you added
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* do not modify the draft
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* remove the text draft
* on refreshing the page, you should be taken to the text entry
component again
Misc Confirmations:
* when adding drafts to multiple submission types, the drafts
persist and are not erased when adding a draft to a different
type
* in the rails console, if you manually set the active submission
type to something that is not a valid submission type on the
assignment, you should be taken to the landing page
```
sd = SubmissionDraft.last # or whatever draft you're working against
sd.active_submission_type = 'online_url'
sd.save!
```
flag=assignments_2_student
fixes COMMS-2476
Change-Id: Iebf78fc785a2df0acc03c0ce8a13efd34060f341
Reviewed-on: https://gerrit.instructure.com/211701
Reviewed-by: James Williams <jamesw@instructure.com>
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
Tested-by: Jenkins
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Norton <rnorton@instructure.com>
2019-10-02 05:17:06 +08:00
|
|
|
active_submission_type: nil,
|
2019-05-18 06:50:20 +08:00
|
|
|
attempt: nil,
|
2019-08-03 04:57:13 +08:00
|
|
|
body: nil,
|
2021-10-01 05:55:30 +08:00
|
|
|
external_tool_id: nil,
|
2019-09-17 04:55:04 +08:00
|
|
|
file_ids: [],
|
2021-10-01 05:55:30 +08:00
|
|
|
lti_launch_url: nil,
|
2019-10-22 06:15:28 +08:00
|
|
|
media_id: nil,
|
2021-10-01 05:55:30 +08:00
|
|
|
resource_link_lookup_uuid: nil,
|
2019-09-17 04:55:04 +08:00
|
|
|
url: nil
|
2019-05-18 06:50:20 +08:00
|
|
|
)
|
|
|
|
<<~GQL
|
|
|
|
mutation {
|
|
|
|
createSubmissionDraft(input: {
|
|
|
|
submissionId: "#{submission_id}"
|
persist selected submission in a2
when there are multiple submission types and the user updates
a submission type, we should persist that choice the next time
they access the assignment.
Test Plan:
* run the db migration to add active_submission_type to the
submission draft:
** bundle exec rake db:migrate:up VERSION=20191001164744
* as a teacher, create an assignment with multiple submission
types (i.e. file upload, text entry)
* as a student in A2, navigate to the assignment
* you should see the landing page requesting you choose a
submission type
* select a type but do not create a draft
* on refreshing the page, you should be taken back to the landing
page
* select the File type
* add a file to the draft
* on refreshing the page, you should be taken to the file upload
component
* select the Text Entry type
* create a text entry draft
* on refreshing the page, you should be taken to the text entry
component
* re-select the File type
* remove the file you added
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* do not modify the draft
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* remove the text draft
* on refreshing the page, you should be taken to the text entry
component again
Misc Confirmations:
* when adding drafts to multiple submission types, the drafts
persist and are not erased when adding a draft to a different
type
* in the rails console, if you manually set the active submission
type to something that is not a valid submission type on the
assignment, you should be taken to the landing page
```
sd = SubmissionDraft.last # or whatever draft you're working against
sd.active_submission_type = 'online_url'
sd.save!
```
flag=assignments_2_student
fixes COMMS-2476
Change-Id: Iebf78fc785a2df0acc03c0ce8a13efd34060f341
Reviewed-on: https://gerrit.instructure.com/211701
Reviewed-by: James Williams <jamesw@instructure.com>
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
Tested-by: Jenkins
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Norton <rnorton@instructure.com>
2019-10-02 05:17:06 +08:00
|
|
|
#{"activeSubmissionType: #{active_submission_type}" if active_submission_type}
|
2019-05-18 06:50:20 +08:00
|
|
|
#{"attempt: #{attempt}" if attempt}
|
2019-08-03 04:57:13 +08:00
|
|
|
#{"body: \"#{body}\"" if body}
|
2021-10-01 05:55:30 +08:00
|
|
|
#{"externalToolId: \"#{external_tool_id}\"" if external_tool_id}
|
2019-05-18 06:50:20 +08:00
|
|
|
fileIds: #{file_ids}
|
2021-10-01 05:55:30 +08:00
|
|
|
#{"ltiLaunchUrl: \"#{lti_launch_url}\"" if lti_launch_url}
|
2019-10-22 06:15:28 +08:00
|
|
|
#{"mediaId: \"#{media_id}\"" if media_id}
|
2021-10-01 05:55:30 +08:00
|
|
|
#{"resourceLinkLookupUuid: \"#{resource_link_lookup_uuid}\"" if resource_link_lookup_uuid}
|
2019-09-17 04:55:04 +08:00
|
|
|
#{"url: \"#{url}\"" if url}
|
2019-05-18 06:50:20 +08:00
|
|
|
}) {
|
|
|
|
submissionDraft {
|
|
|
|
_id
|
|
|
|
submissionAttempt
|
persist selected submission in a2
when there are multiple submission types and the user updates
a submission type, we should persist that choice the next time
they access the assignment.
Test Plan:
* run the db migration to add active_submission_type to the
submission draft:
** bundle exec rake db:migrate:up VERSION=20191001164744
* as a teacher, create an assignment with multiple submission
types (i.e. file upload, text entry)
* as a student in A2, navigate to the assignment
* you should see the landing page requesting you choose a
submission type
* select a type but do not create a draft
* on refreshing the page, you should be taken back to the landing
page
* select the File type
* add a file to the draft
* on refreshing the page, you should be taken to the file upload
component
* select the Text Entry type
* create a text entry draft
* on refreshing the page, you should be taken to the text entry
component
* re-select the File type
* remove the file you added
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* do not modify the draft
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* remove the text draft
* on refreshing the page, you should be taken to the text entry
component again
Misc Confirmations:
* when adding drafts to multiple submission types, the drafts
persist and are not erased when adding a draft to a different
type
* in the rails console, if you manually set the active submission
type to something that is not a valid submission type on the
assignment, you should be taken to the landing page
```
sd = SubmissionDraft.last # or whatever draft you're working against
sd.active_submission_type = 'online_url'
sd.save!
```
flag=assignments_2_student
fixes COMMS-2476
Change-Id: Iebf78fc785a2df0acc03c0ce8a13efd34060f341
Reviewed-on: https://gerrit.instructure.com/211701
Reviewed-by: James Williams <jamesw@instructure.com>
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
Tested-by: Jenkins
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Norton <rnorton@instructure.com>
2019-10-02 05:17:06 +08:00
|
|
|
activeSubmissionType
|
2019-05-18 06:50:20 +08:00
|
|
|
attachments {
|
|
|
|
_id
|
|
|
|
displayName
|
|
|
|
}
|
2019-08-03 04:57:13 +08:00
|
|
|
body
|
2021-10-01 05:55:30 +08:00
|
|
|
externalTool {
|
|
|
|
_id
|
|
|
|
}
|
|
|
|
ltiLaunchUrl
|
2019-10-22 06:15:28 +08:00
|
|
|
mediaObject {
|
|
|
|
_id
|
|
|
|
}
|
2021-10-01 05:55:30 +08:00
|
|
|
resourceLinkLookupUuid
|
2019-09-17 04:55:04 +08:00
|
|
|
url
|
2019-05-18 06:50:20 +08:00
|
|
|
}
|
|
|
|
errors {
|
|
|
|
attribute
|
|
|
|
message
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
GQL
|
|
|
|
end
|
|
|
|
|
|
|
|
def run_mutation(opts = {}, current_user = @student)
|
2022-12-13 04:11:51 +08:00
|
|
|
result = CanvasSchema.execute(mutation_str(**opts), context: { current_user: current_user, request: ActionDispatch::TestRequest.create })
|
2019-05-18 06:50:20 +08:00
|
|
|
result.to_h.with_indifferent_access
|
|
|
|
end
|
|
|
|
|
|
|
|
it "creates a new submission draft" do
|
|
|
|
result = run_mutation(
|
|
|
|
submission_id: @submission.id,
|
persist selected submission in a2
when there are multiple submission types and the user updates
a submission type, we should persist that choice the next time
they access the assignment.
Test Plan:
* run the db migration to add active_submission_type to the
submission draft:
** bundle exec rake db:migrate:up VERSION=20191001164744
* as a teacher, create an assignment with multiple submission
types (i.e. file upload, text entry)
* as a student in A2, navigate to the assignment
* you should see the landing page requesting you choose a
submission type
* select a type but do not create a draft
* on refreshing the page, you should be taken back to the landing
page
* select the File type
* add a file to the draft
* on refreshing the page, you should be taken to the file upload
component
* select the Text Entry type
* create a text entry draft
* on refreshing the page, you should be taken to the text entry
component
* re-select the File type
* remove the file you added
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* do not modify the draft
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* remove the text draft
* on refreshing the page, you should be taken to the text entry
component again
Misc Confirmations:
* when adding drafts to multiple submission types, the drafts
persist and are not erased when adding a draft to a different
type
* in the rails console, if you manually set the active submission
type to something that is not a valid submission type on the
assignment, you should be taken to the landing page
```
sd = SubmissionDraft.last # or whatever draft you're working against
sd.active_submission_type = 'online_url'
sd.save!
```
flag=assignments_2_student
fixes COMMS-2476
Change-Id: Iebf78fc785a2df0acc03c0ce8a13efd34060f341
Reviewed-on: https://gerrit.instructure.com/211701
Reviewed-by: James Williams <jamesw@instructure.com>
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
Tested-by: Jenkins
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Norton <rnorton@instructure.com>
2019-10-02 05:17:06 +08:00
|
|
|
active_submission_type: "online_upload",
|
2019-05-18 06:50:20 +08:00
|
|
|
attempt: @submission.attempt,
|
|
|
|
file_ids: @attachments.map(&:id)
|
|
|
|
)
|
|
|
|
expect(
|
|
|
|
result.dig(:data, :createSubmissionDraft, :submissionDraft, :_id)
|
|
|
|
).to eq SubmissionDraft.last.id.to_s
|
|
|
|
end
|
|
|
|
|
|
|
|
it "updates an existing submission draft" do
|
|
|
|
first_result = run_mutation(
|
|
|
|
submission_id: @submission.id,
|
persist selected submission in a2
when there are multiple submission types and the user updates
a submission type, we should persist that choice the next time
they access the assignment.
Test Plan:
* run the db migration to add active_submission_type to the
submission draft:
** bundle exec rake db:migrate:up VERSION=20191001164744
* as a teacher, create an assignment with multiple submission
types (i.e. file upload, text entry)
* as a student in A2, navigate to the assignment
* you should see the landing page requesting you choose a
submission type
* select a type but do not create a draft
* on refreshing the page, you should be taken back to the landing
page
* select the File type
* add a file to the draft
* on refreshing the page, you should be taken to the file upload
component
* select the Text Entry type
* create a text entry draft
* on refreshing the page, you should be taken to the text entry
component
* re-select the File type
* remove the file you added
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* do not modify the draft
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* remove the text draft
* on refreshing the page, you should be taken to the text entry
component again
Misc Confirmations:
* when adding drafts to multiple submission types, the drafts
persist and are not erased when adding a draft to a different
type
* in the rails console, if you manually set the active submission
type to something that is not a valid submission type on the
assignment, you should be taken to the landing page
```
sd = SubmissionDraft.last # or whatever draft you're working against
sd.active_submission_type = 'online_url'
sd.save!
```
flag=assignments_2_student
fixes COMMS-2476
Change-Id: Iebf78fc785a2df0acc03c0ce8a13efd34060f341
Reviewed-on: https://gerrit.instructure.com/211701
Reviewed-by: James Williams <jamesw@instructure.com>
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
Tested-by: Jenkins
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Norton <rnorton@instructure.com>
2019-10-02 05:17:06 +08:00
|
|
|
active_submission_type: "online_upload",
|
2019-05-18 06:50:20 +08:00
|
|
|
attempt: @submission.attempt,
|
|
|
|
file_ids: @attachments.map(&:id)
|
|
|
|
)
|
2021-11-16 06:57:07 +08:00
|
|
|
attachment_ids = first_result.dig(:data, :createSubmissionDraft, :submissionDraft, :attachments).pluck(:_id)
|
2019-05-18 06:50:20 +08:00
|
|
|
expect(attachment_ids.count).to eq 2
|
|
|
|
@attachments.each do |attachment|
|
|
|
|
expect(attachment_ids.include?(attachment[:id].to_s)).to be true
|
|
|
|
end
|
|
|
|
|
|
|
|
second_result = run_mutation(
|
|
|
|
submission_id: @submission.id,
|
persist selected submission in a2
when there are multiple submission types and the user updates
a submission type, we should persist that choice the next time
they access the assignment.
Test Plan:
* run the db migration to add active_submission_type to the
submission draft:
** bundle exec rake db:migrate:up VERSION=20191001164744
* as a teacher, create an assignment with multiple submission
types (i.e. file upload, text entry)
* as a student in A2, navigate to the assignment
* you should see the landing page requesting you choose a
submission type
* select a type but do not create a draft
* on refreshing the page, you should be taken back to the landing
page
* select the File type
* add a file to the draft
* on refreshing the page, you should be taken to the file upload
component
* select the Text Entry type
* create a text entry draft
* on refreshing the page, you should be taken to the text entry
component
* re-select the File type
* remove the file you added
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* do not modify the draft
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* remove the text draft
* on refreshing the page, you should be taken to the text entry
component again
Misc Confirmations:
* when adding drafts to multiple submission types, the drafts
persist and are not erased when adding a draft to a different
type
* in the rails console, if you manually set the active submission
type to something that is not a valid submission type on the
assignment, you should be taken to the landing page
```
sd = SubmissionDraft.last # or whatever draft you're working against
sd.active_submission_type = 'online_url'
sd.save!
```
flag=assignments_2_student
fixes COMMS-2476
Change-Id: Iebf78fc785a2df0acc03c0ce8a13efd34060f341
Reviewed-on: https://gerrit.instructure.com/211701
Reviewed-by: James Williams <jamesw@instructure.com>
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
Tested-by: Jenkins
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Norton <rnorton@instructure.com>
2019-10-02 05:17:06 +08:00
|
|
|
active_submission_type: "online_upload",
|
2019-05-18 06:50:20 +08:00
|
|
|
attempt: @submission.attempt,
|
|
|
|
file_ids: [@attachments[0].id]
|
|
|
|
)
|
2021-11-16 06:57:07 +08:00
|
|
|
attachment_ids = second_result.dig(:data, :createSubmissionDraft, :submissionDraft, :attachments).pluck(:_id)
|
2019-05-18 06:50:20 +08:00
|
|
|
expect(attachment_ids.count).to eq 1
|
|
|
|
expect(attachment_ids[0]).to eq @attachments[0].id.to_s
|
|
|
|
|
|
|
|
expect(
|
|
|
|
first_result.dig(:data, :createSubmissionDraft, :submissionDraft, :submissionAttempt)
|
|
|
|
).to eq second_result.dig(:data, :createSubmissionDraft, :submissionDraft, :submissionAttempt)
|
|
|
|
end
|
|
|
|
|
2019-08-03 04:57:13 +08:00
|
|
|
it "allows you to set a body on the submission draft" do
|
|
|
|
result = run_mutation(
|
|
|
|
submission_id: @submission.id,
|
persist selected submission in a2
when there are multiple submission types and the user updates
a submission type, we should persist that choice the next time
they access the assignment.
Test Plan:
* run the db migration to add active_submission_type to the
submission draft:
** bundle exec rake db:migrate:up VERSION=20191001164744
* as a teacher, create an assignment with multiple submission
types (i.e. file upload, text entry)
* as a student in A2, navigate to the assignment
* you should see the landing page requesting you choose a
submission type
* select a type but do not create a draft
* on refreshing the page, you should be taken back to the landing
page
* select the File type
* add a file to the draft
* on refreshing the page, you should be taken to the file upload
component
* select the Text Entry type
* create a text entry draft
* on refreshing the page, you should be taken to the text entry
component
* re-select the File type
* remove the file you added
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* do not modify the draft
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* remove the text draft
* on refreshing the page, you should be taken to the text entry
component again
Misc Confirmations:
* when adding drafts to multiple submission types, the drafts
persist and are not erased when adding a draft to a different
type
* in the rails console, if you manually set the active submission
type to something that is not a valid submission type on the
assignment, you should be taken to the landing page
```
sd = SubmissionDraft.last # or whatever draft you're working against
sd.active_submission_type = 'online_url'
sd.save!
```
flag=assignments_2_student
fixes COMMS-2476
Change-Id: Iebf78fc785a2df0acc03c0ce8a13efd34060f341
Reviewed-on: https://gerrit.instructure.com/211701
Reviewed-by: James Williams <jamesw@instructure.com>
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
Tested-by: Jenkins
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Norton <rnorton@instructure.com>
2019-10-02 05:17:06 +08:00
|
|
|
active_submission_type: "online_text_entry",
|
2019-08-03 04:57:13 +08:00
|
|
|
attempt: @submission.attempt,
|
|
|
|
body: "some text body"
|
|
|
|
)
|
|
|
|
expect(
|
|
|
|
result.dig(:data, :createSubmissionDraft, :submissionDraft, :body)
|
|
|
|
).to eq "some text body"
|
|
|
|
end
|
|
|
|
|
2019-09-17 04:55:04 +08:00
|
|
|
it "allows you to set a url on the submission draft" do
|
|
|
|
result = run_mutation(
|
|
|
|
submission_id: @submission.id,
|
persist selected submission in a2
when there are multiple submission types and the user updates
a submission type, we should persist that choice the next time
they access the assignment.
Test Plan:
* run the db migration to add active_submission_type to the
submission draft:
** bundle exec rake db:migrate:up VERSION=20191001164744
* as a teacher, create an assignment with multiple submission
types (i.e. file upload, text entry)
* as a student in A2, navigate to the assignment
* you should see the landing page requesting you choose a
submission type
* select a type but do not create a draft
* on refreshing the page, you should be taken back to the landing
page
* select the File type
* add a file to the draft
* on refreshing the page, you should be taken to the file upload
component
* select the Text Entry type
* create a text entry draft
* on refreshing the page, you should be taken to the text entry
component
* re-select the File type
* remove the file you added
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* do not modify the draft
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* remove the text draft
* on refreshing the page, you should be taken to the text entry
component again
Misc Confirmations:
* when adding drafts to multiple submission types, the drafts
persist and are not erased when adding a draft to a different
type
* in the rails console, if you manually set the active submission
type to something that is not a valid submission type on the
assignment, you should be taken to the landing page
```
sd = SubmissionDraft.last # or whatever draft you're working against
sd.active_submission_type = 'online_url'
sd.save!
```
flag=assignments_2_student
fixes COMMS-2476
Change-Id: Iebf78fc785a2df0acc03c0ce8a13efd34060f341
Reviewed-on: https://gerrit.instructure.com/211701
Reviewed-by: James Williams <jamesw@instructure.com>
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
Tested-by: Jenkins
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Norton <rnorton@instructure.com>
2019-10-02 05:17:06 +08:00
|
|
|
active_submission_type: "online_url",
|
2019-09-17 04:55:04 +08:00
|
|
|
attempt: @submission.attempt,
|
|
|
|
url: "http://www.google.com"
|
|
|
|
)
|
|
|
|
expect(
|
|
|
|
result.dig(:data, :createSubmissionDraft, :submissionDraft, :url)
|
|
|
|
).to eq "http://www.google.com"
|
|
|
|
end
|
|
|
|
|
2019-10-22 06:15:28 +08:00
|
|
|
it "allows you to set a media_object_id on the submission draft" do
|
|
|
|
result = run_mutation(
|
|
|
|
submission_id: @submission.id,
|
|
|
|
active_submission_type: "media_recording",
|
|
|
|
attempt: @submission.attempt,
|
|
|
|
media_id: @media_object.media_id
|
|
|
|
)
|
|
|
|
expect(
|
|
|
|
result.dig(:data, :createSubmissionDraft, :submissionDraft, :mediaObject, :_id)
|
|
|
|
).to eq @media_object.media_id
|
|
|
|
end
|
|
|
|
|
persist selected submission in a2
when there are multiple submission types and the user updates
a submission type, we should persist that choice the next time
they access the assignment.
Test Plan:
* run the db migration to add active_submission_type to the
submission draft:
** bundle exec rake db:migrate:up VERSION=20191001164744
* as a teacher, create an assignment with multiple submission
types (i.e. file upload, text entry)
* as a student in A2, navigate to the assignment
* you should see the landing page requesting you choose a
submission type
* select a type but do not create a draft
* on refreshing the page, you should be taken back to the landing
page
* select the File type
* add a file to the draft
* on refreshing the page, you should be taken to the file upload
component
* select the Text Entry type
* create a text entry draft
* on refreshing the page, you should be taken to the text entry
component
* re-select the File type
* remove the file you added
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* do not modify the draft
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* remove the text draft
* on refreshing the page, you should be taken to the text entry
component again
Misc Confirmations:
* when adding drafts to multiple submission types, the drafts
persist and are not erased when adding a draft to a different
type
* in the rails console, if you manually set the active submission
type to something that is not a valid submission type on the
assignment, you should be taken to the landing page
```
sd = SubmissionDraft.last # or whatever draft you're working against
sd.active_submission_type = 'online_url'
sd.save!
```
flag=assignments_2_student
fixes COMMS-2476
Change-Id: Iebf78fc785a2df0acc03c0ce8a13efd34060f341
Reviewed-on: https://gerrit.instructure.com/211701
Reviewed-by: James Williams <jamesw@instructure.com>
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
Tested-by: Jenkins
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Norton <rnorton@instructure.com>
2019-10-02 05:17:06 +08:00
|
|
|
it "allows you to set an active_submission_type on the submission draft" do
|
|
|
|
result = run_mutation(
|
|
|
|
active_submission_type: "online_text_entry",
|
|
|
|
attempt: @submission.attempt,
|
|
|
|
body: "some text body",
|
|
|
|
submission_id: @submission.id
|
|
|
|
)
|
|
|
|
expect(
|
|
|
|
result.dig(:data, :createSubmissionDraft, :submissionDraft, :activeSubmissionType)
|
|
|
|
).to eq "online_text_entry"
|
|
|
|
end
|
|
|
|
|
|
|
|
it "only updates attachments when the active submission type is online_upload" do
|
|
|
|
result = run_mutation(
|
|
|
|
submission_id: @submission.id,
|
|
|
|
active_submission_type: "online_upload",
|
|
|
|
attempt: @submission.attempt,
|
|
|
|
body: "some text body",
|
|
|
|
file_ids: @attachments.map(&:id)
|
|
|
|
)
|
2021-11-16 06:57:07 +08:00
|
|
|
attachment_ids = result.dig(:data, :createSubmissionDraft, :submissionDraft, :attachments).pluck(:_id)
|
persist selected submission in a2
when there are multiple submission types and the user updates
a submission type, we should persist that choice the next time
they access the assignment.
Test Plan:
* run the db migration to add active_submission_type to the
submission draft:
** bundle exec rake db:migrate:up VERSION=20191001164744
* as a teacher, create an assignment with multiple submission
types (i.e. file upload, text entry)
* as a student in A2, navigate to the assignment
* you should see the landing page requesting you choose a
submission type
* select a type but do not create a draft
* on refreshing the page, you should be taken back to the landing
page
* select the File type
* add a file to the draft
* on refreshing the page, you should be taken to the file upload
component
* select the Text Entry type
* create a text entry draft
* on refreshing the page, you should be taken to the text entry
component
* re-select the File type
* remove the file you added
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* do not modify the draft
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* remove the text draft
* on refreshing the page, you should be taken to the text entry
component again
Misc Confirmations:
* when adding drafts to multiple submission types, the drafts
persist and are not erased when adding a draft to a different
type
* in the rails console, if you manually set the active submission
type to something that is not a valid submission type on the
assignment, you should be taken to the landing page
```
sd = SubmissionDraft.last # or whatever draft you're working against
sd.active_submission_type = 'online_url'
sd.save!
```
flag=assignments_2_student
fixes COMMS-2476
Change-Id: Iebf78fc785a2df0acc03c0ce8a13efd34060f341
Reviewed-on: https://gerrit.instructure.com/211701
Reviewed-by: James Williams <jamesw@instructure.com>
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
Tested-by: Jenkins
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Norton <rnorton@instructure.com>
2019-10-02 05:17:06 +08:00
|
|
|
|
|
|
|
expect(attachment_ids.count).to eq 2
|
|
|
|
@attachments.each do |attachment|
|
|
|
|
expect(attachment_ids.include?(attachment[:id].to_s)).to be true
|
|
|
|
end
|
|
|
|
|
|
|
|
expect(
|
|
|
|
result.dig(:data, :createSubmissionDraft, :submissionDraft, :body)
|
|
|
|
).to be nil
|
|
|
|
end
|
|
|
|
|
|
|
|
it "only updates the body when the active submission type is online_text_entry" do
|
|
|
|
result = run_mutation(
|
|
|
|
submission_id: @submission.id,
|
|
|
|
active_submission_type: "online_text_entry",
|
|
|
|
attempt: @submission.attempt,
|
|
|
|
body: "some text body",
|
|
|
|
url: "http://www.google.com"
|
|
|
|
)
|
|
|
|
|
|
|
|
expect(
|
|
|
|
result.dig(:data, :createSubmissionDraft, :submissionDraft, :body)
|
|
|
|
).to eq "some text body"
|
|
|
|
|
|
|
|
expect(
|
|
|
|
result.dig(:data, :createSubmissionDraft, :submissionDraft, :url)
|
|
|
|
).to be nil
|
|
|
|
end
|
|
|
|
|
|
|
|
it "only updates the url when the active submission type is online_url" do
|
|
|
|
result = run_mutation(
|
|
|
|
submission_id: @submission.id,
|
|
|
|
active_submission_type: "online_url",
|
|
|
|
attempt: @submission.attempt,
|
|
|
|
body: "some text body",
|
|
|
|
url: "http://www.google.com"
|
|
|
|
)
|
|
|
|
|
|
|
|
expect(
|
|
|
|
result.dig(:data, :createSubmissionDraft, :submissionDraft, :body)
|
|
|
|
).to be nil
|
|
|
|
|
|
|
|
expect(
|
|
|
|
result.dig(:data, :createSubmissionDraft, :submissionDraft, :url)
|
|
|
|
).to eq "http://www.google.com"
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns an error if the active submission type is not included" do
|
|
|
|
result = run_mutation(
|
|
|
|
attempt: @submission.attempt,
|
|
|
|
body: "some text body",
|
|
|
|
submission_id: @submission.id
|
|
|
|
)
|
|
|
|
expect(
|
|
|
|
result.dig(:errors, 0, :message)
|
|
|
|
).to include "Argument 'activeSubmissionType' on InputObject 'CreateSubmissionDraftInput' is required"
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns an error if the active submission type is not valid" do
|
|
|
|
result = run_mutation(
|
|
|
|
active_submission_type: "thundercougarfalconbird",
|
|
|
|
attempt: @submission.attempt,
|
|
|
|
body: "some text body",
|
|
|
|
submission_id: @submission.id
|
|
|
|
)
|
|
|
|
expect(
|
|
|
|
result.dig(:errors, 0, :message)
|
|
|
|
).to include "Expected type 'DraftableSubmissionType!'"
|
|
|
|
end
|
|
|
|
|
2019-09-17 06:30:48 +08:00
|
|
|
it "prefixes the url with a scheme if missing" do
|
|
|
|
@submission.assignment.update!(submission_types: "online_url")
|
2019-09-17 04:55:04 +08:00
|
|
|
result = run_mutation(
|
|
|
|
submission_id: @submission.id,
|
persist selected submission in a2
when there are multiple submission types and the user updates
a submission type, we should persist that choice the next time
they access the assignment.
Test Plan:
* run the db migration to add active_submission_type to the
submission draft:
** bundle exec rake db:migrate:up VERSION=20191001164744
* as a teacher, create an assignment with multiple submission
types (i.e. file upload, text entry)
* as a student in A2, navigate to the assignment
* you should see the landing page requesting you choose a
submission type
* select a type but do not create a draft
* on refreshing the page, you should be taken back to the landing
page
* select the File type
* add a file to the draft
* on refreshing the page, you should be taken to the file upload
component
* select the Text Entry type
* create a text entry draft
* on refreshing the page, you should be taken to the text entry
component
* re-select the File type
* remove the file you added
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* do not modify the draft
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* remove the text draft
* on refreshing the page, you should be taken to the text entry
component again
Misc Confirmations:
* when adding drafts to multiple submission types, the drafts
persist and are not erased when adding a draft to a different
type
* in the rails console, if you manually set the active submission
type to something that is not a valid submission type on the
assignment, you should be taken to the landing page
```
sd = SubmissionDraft.last # or whatever draft you're working against
sd.active_submission_type = 'online_url'
sd.save!
```
flag=assignments_2_student
fixes COMMS-2476
Change-Id: Iebf78fc785a2df0acc03c0ce8a13efd34060f341
Reviewed-on: https://gerrit.instructure.com/211701
Reviewed-by: James Williams <jamesw@instructure.com>
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
Tested-by: Jenkins
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Norton <rnorton@instructure.com>
2019-10-02 05:17:06 +08:00
|
|
|
active_submission_type: "online_url",
|
2019-09-17 04:55:04 +08:00
|
|
|
attempt: @submission.attempt,
|
2019-09-17 06:30:48 +08:00
|
|
|
url: "www.google.com"
|
2019-09-17 04:55:04 +08:00
|
|
|
)
|
|
|
|
expect(
|
2019-09-17 06:30:48 +08:00
|
|
|
result.dig(:data, :createSubmissionDraft, :submissionDraft, :url)
|
|
|
|
).to eq "http://www.google.com"
|
2019-09-17 04:55:04 +08:00
|
|
|
end
|
|
|
|
|
2019-05-18 06:50:20 +08:00
|
|
|
it "returns an error if the attachments are not owned by the user" do
|
|
|
|
attachment = attachment_with_context(@teacher)
|
|
|
|
result = run_mutation(
|
|
|
|
submission_id: @submission.id,
|
persist selected submission in a2
when there are multiple submission types and the user updates
a submission type, we should persist that choice the next time
they access the assignment.
Test Plan:
* run the db migration to add active_submission_type to the
submission draft:
** bundle exec rake db:migrate:up VERSION=20191001164744
* as a teacher, create an assignment with multiple submission
types (i.e. file upload, text entry)
* as a student in A2, navigate to the assignment
* you should see the landing page requesting you choose a
submission type
* select a type but do not create a draft
* on refreshing the page, you should be taken back to the landing
page
* select the File type
* add a file to the draft
* on refreshing the page, you should be taken to the file upload
component
* select the Text Entry type
* create a text entry draft
* on refreshing the page, you should be taken to the text entry
component
* re-select the File type
* remove the file you added
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* do not modify the draft
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* remove the text draft
* on refreshing the page, you should be taken to the text entry
component again
Misc Confirmations:
* when adding drafts to multiple submission types, the drafts
persist and are not erased when adding a draft to a different
type
* in the rails console, if you manually set the active submission
type to something that is not a valid submission type on the
assignment, you should be taken to the landing page
```
sd = SubmissionDraft.last # or whatever draft you're working against
sd.active_submission_type = 'online_url'
sd.save!
```
flag=assignments_2_student
fixes COMMS-2476
Change-Id: Iebf78fc785a2df0acc03c0ce8a13efd34060f341
Reviewed-on: https://gerrit.instructure.com/211701
Reviewed-by: James Williams <jamesw@instructure.com>
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
Tested-by: Jenkins
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Norton <rnorton@instructure.com>
2019-10-02 05:17:06 +08:00
|
|
|
active_submission_type: "online_upload",
|
2019-05-18 06:50:20 +08:00
|
|
|
attempt: @submission.attempt,
|
|
|
|
file_ids: [attachment.id]
|
|
|
|
)
|
|
|
|
expect(
|
|
|
|
result.dig(:data, :createSubmissionDraft, :errors, 0, :message)
|
|
|
|
).to eq "No attachments found for the following ids: [\"#{attachment.id}\"]"
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns an error if the attachments don't have an allowed file extension" do
|
|
|
|
@submission.assignment.update!(allowed_extensions: ["lemon"])
|
|
|
|
result = run_mutation(
|
|
|
|
submission_id: @submission.id,
|
persist selected submission in a2
when there are multiple submission types and the user updates
a submission type, we should persist that choice the next time
they access the assignment.
Test Plan:
* run the db migration to add active_submission_type to the
submission draft:
** bundle exec rake db:migrate:up VERSION=20191001164744
* as a teacher, create an assignment with multiple submission
types (i.e. file upload, text entry)
* as a student in A2, navigate to the assignment
* you should see the landing page requesting you choose a
submission type
* select a type but do not create a draft
* on refreshing the page, you should be taken back to the landing
page
* select the File type
* add a file to the draft
* on refreshing the page, you should be taken to the file upload
component
* select the Text Entry type
* create a text entry draft
* on refreshing the page, you should be taken to the text entry
component
* re-select the File type
* remove the file you added
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* do not modify the draft
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* remove the text draft
* on refreshing the page, you should be taken to the text entry
component again
Misc Confirmations:
* when adding drafts to multiple submission types, the drafts
persist and are not erased when adding a draft to a different
type
* in the rails console, if you manually set the active submission
type to something that is not a valid submission type on the
assignment, you should be taken to the landing page
```
sd = SubmissionDraft.last # or whatever draft you're working against
sd.active_submission_type = 'online_url'
sd.save!
```
flag=assignments_2_student
fixes COMMS-2476
Change-Id: Iebf78fc785a2df0acc03c0ce8a13efd34060f341
Reviewed-on: https://gerrit.instructure.com/211701
Reviewed-by: James Williams <jamesw@instructure.com>
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
Tested-by: Jenkins
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Norton <rnorton@instructure.com>
2019-10-02 05:17:06 +08:00
|
|
|
active_submission_type: "online_upload",
|
2019-05-18 06:50:20 +08:00
|
|
|
attempt: @submission.attempt,
|
|
|
|
file_ids: [@attachments[0].id]
|
|
|
|
)
|
|
|
|
expect(
|
|
|
|
result.dig(:data, :createSubmissionDraft, :errors, 0, :message)
|
|
|
|
).to eq "Invalid file type"
|
|
|
|
end
|
|
|
|
|
|
|
|
it "returns a graceful error if the submission is not found" do
|
|
|
|
result = run_mutation(
|
|
|
|
submission_id: 1337,
|
persist selected submission in a2
when there are multiple submission types and the user updates
a submission type, we should persist that choice the next time
they access the assignment.
Test Plan:
* run the db migration to add active_submission_type to the
submission draft:
** bundle exec rake db:migrate:up VERSION=20191001164744
* as a teacher, create an assignment with multiple submission
types (i.e. file upload, text entry)
* as a student in A2, navigate to the assignment
* you should see the landing page requesting you choose a
submission type
* select a type but do not create a draft
* on refreshing the page, you should be taken back to the landing
page
* select the File type
* add a file to the draft
* on refreshing the page, you should be taken to the file upload
component
* select the Text Entry type
* create a text entry draft
* on refreshing the page, you should be taken to the text entry
component
* re-select the File type
* remove the file you added
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* do not modify the draft
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* remove the text draft
* on refreshing the page, you should be taken to the text entry
component again
Misc Confirmations:
* when adding drafts to multiple submission types, the drafts
persist and are not erased when adding a draft to a different
type
* in the rails console, if you manually set the active submission
type to something that is not a valid submission type on the
assignment, you should be taken to the landing page
```
sd = SubmissionDraft.last # or whatever draft you're working against
sd.active_submission_type = 'online_url'
sd.save!
```
flag=assignments_2_student
fixes COMMS-2476
Change-Id: Iebf78fc785a2df0acc03c0ce8a13efd34060f341
Reviewed-on: https://gerrit.instructure.com/211701
Reviewed-by: James Williams <jamesw@instructure.com>
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
Tested-by: Jenkins
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Norton <rnorton@instructure.com>
2019-10-02 05:17:06 +08:00
|
|
|
active_submission_type: "online_upload",
|
2019-05-18 06:50:20 +08:00
|
|
|
attempt: 0,
|
|
|
|
file_ids: []
|
|
|
|
)
|
|
|
|
expect(
|
|
|
|
result.dig(:errors, 0, :message)
|
|
|
|
).to eq "not found"
|
|
|
|
end
|
|
|
|
|
2019-07-23 07:34:08 +08:00
|
|
|
it "returns an error if the draft is more then one attempt more the current submission attempt" do
|
2019-05-18 06:50:20 +08:00
|
|
|
result = run_mutation(
|
|
|
|
submission_id: @submission.id,
|
persist selected submission in a2
when there are multiple submission types and the user updates
a submission type, we should persist that choice the next time
they access the assignment.
Test Plan:
* run the db migration to add active_submission_type to the
submission draft:
** bundle exec rake db:migrate:up VERSION=20191001164744
* as a teacher, create an assignment with multiple submission
types (i.e. file upload, text entry)
* as a student in A2, navigate to the assignment
* you should see the landing page requesting you choose a
submission type
* select a type but do not create a draft
* on refreshing the page, you should be taken back to the landing
page
* select the File type
* add a file to the draft
* on refreshing the page, you should be taken to the file upload
component
* select the Text Entry type
* create a text entry draft
* on refreshing the page, you should be taken to the text entry
component
* re-select the File type
* remove the file you added
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* do not modify the draft
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* remove the text draft
* on refreshing the page, you should be taken to the text entry
component again
Misc Confirmations:
* when adding drafts to multiple submission types, the drafts
persist and are not erased when adding a draft to a different
type
* in the rails console, if you manually set the active submission
type to something that is not a valid submission type on the
assignment, you should be taken to the landing page
```
sd = SubmissionDraft.last # or whatever draft you're working against
sd.active_submission_type = 'online_url'
sd.save!
```
flag=assignments_2_student
fixes COMMS-2476
Change-Id: Iebf78fc785a2df0acc03c0ce8a13efd34060f341
Reviewed-on: https://gerrit.instructure.com/211701
Reviewed-by: James Williams <jamesw@instructure.com>
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
Tested-by: Jenkins
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Norton <rnorton@instructure.com>
2019-10-02 05:17:06 +08:00
|
|
|
active_submission_type: "online_upload",
|
2019-05-18 06:50:20 +08:00
|
|
|
attempt: 1337,
|
|
|
|
file_ids: [@attachments[0].id]
|
|
|
|
)
|
|
|
|
expect(
|
|
|
|
result.dig(:data, :createSubmissionDraft, :errors, 0, :message)
|
2019-07-23 07:34:08 +08:00
|
|
|
).to eq "submission draft cannot be more then one attempt ahead of the current submission"
|
2019-05-18 06:50:20 +08:00
|
|
|
end
|
|
|
|
|
2019-08-03 04:57:13 +08:00
|
|
|
it "uses the submission attempt plus one if an explicit attempt is not provided" do
|
2019-05-18 06:50:20 +08:00
|
|
|
result = run_mutation(
|
persist selected submission in a2
when there are multiple submission types and the user updates
a submission type, we should persist that choice the next time
they access the assignment.
Test Plan:
* run the db migration to add active_submission_type to the
submission draft:
** bundle exec rake db:migrate:up VERSION=20191001164744
* as a teacher, create an assignment with multiple submission
types (i.e. file upload, text entry)
* as a student in A2, navigate to the assignment
* you should see the landing page requesting you choose a
submission type
* select a type but do not create a draft
* on refreshing the page, you should be taken back to the landing
page
* select the File type
* add a file to the draft
* on refreshing the page, you should be taken to the file upload
component
* select the Text Entry type
* create a text entry draft
* on refreshing the page, you should be taken to the text entry
component
* re-select the File type
* remove the file you added
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* do not modify the draft
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* remove the text draft
* on refreshing the page, you should be taken to the text entry
component again
Misc Confirmations:
* when adding drafts to multiple submission types, the drafts
persist and are not erased when adding a draft to a different
type
* in the rails console, if you manually set the active submission
type to something that is not a valid submission type on the
assignment, you should be taken to the landing page
```
sd = SubmissionDraft.last # or whatever draft you're working against
sd.active_submission_type = 'online_url'
sd.save!
```
flag=assignments_2_student
fixes COMMS-2476
Change-Id: Iebf78fc785a2df0acc03c0ce8a13efd34060f341
Reviewed-on: https://gerrit.instructure.com/211701
Reviewed-by: James Williams <jamesw@instructure.com>
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
Tested-by: Jenkins
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Norton <rnorton@instructure.com>
2019-10-02 05:17:06 +08:00
|
|
|
active_submission_type: "online_upload",
|
2019-05-18 06:50:20 +08:00
|
|
|
submission_id: @submission.id,
|
|
|
|
file_ids: [@attachments[0].id]
|
|
|
|
)
|
|
|
|
expect(
|
|
|
|
result.dig(:data, :createSubmissionDraft, :submissionDraft, :submissionAttempt)
|
2019-07-23 07:34:08 +08:00
|
|
|
).to eq @submission.attempt + 1
|
2019-05-18 06:50:20 +08:00
|
|
|
end
|
|
|
|
|
|
|
|
it "uses the given attempt when provided" do
|
|
|
|
@submission.update!(attempt: 2)
|
|
|
|
result = run_mutation(
|
|
|
|
submission_id: @submission.id,
|
persist selected submission in a2
when there are multiple submission types and the user updates
a submission type, we should persist that choice the next time
they access the assignment.
Test Plan:
* run the db migration to add active_submission_type to the
submission draft:
** bundle exec rake db:migrate:up VERSION=20191001164744
* as a teacher, create an assignment with multiple submission
types (i.e. file upload, text entry)
* as a student in A2, navigate to the assignment
* you should see the landing page requesting you choose a
submission type
* select a type but do not create a draft
* on refreshing the page, you should be taken back to the landing
page
* select the File type
* add a file to the draft
* on refreshing the page, you should be taken to the file upload
component
* select the Text Entry type
* create a text entry draft
* on refreshing the page, you should be taken to the text entry
component
* re-select the File type
* remove the file you added
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* do not modify the draft
* on refreshing the page, you should be taken to the file upload
component again
* re-select the Text Entry type
* remove the text draft
* on refreshing the page, you should be taken to the text entry
component again
Misc Confirmations:
* when adding drafts to multiple submission types, the drafts
persist and are not erased when adding a draft to a different
type
* in the rails console, if you manually set the active submission
type to something that is not a valid submission type on the
assignment, you should be taken to the landing page
```
sd = SubmissionDraft.last # or whatever draft you're working against
sd.active_submission_type = 'online_url'
sd.save!
```
flag=assignments_2_student
fixes COMMS-2476
Change-Id: Iebf78fc785a2df0acc03c0ce8a13efd34060f341
Reviewed-on: https://gerrit.instructure.com/211701
Reviewed-by: James Williams <jamesw@instructure.com>
Reviewed-by: Landon Gilbert-Bland <lbland@instructure.com>
Tested-by: Jenkins
QA-Review: Steven Burnett <sburnett@instructure.com>
Product-Review: Ryan Norton <rnorton@instructure.com>
2019-10-02 05:17:06 +08:00
|
|
|
active_submission_type: "online_upload",
|
2019-05-18 06:50:20 +08:00
|
|
|
attempt: 1,
|
|
|
|
file_ids: [@attachments[0].id]
|
|
|
|
)
|
|
|
|
expect(
|
|
|
|
result.dig(:data, :createSubmissionDraft, :submissionDraft, :submissionAttempt)
|
|
|
|
).to eq 1
|
|
|
|
end
|
2021-02-02 13:30:50 +08:00
|
|
|
|
2021-10-01 05:55:30 +08:00
|
|
|
context "when saving a basic_lti_launch draft" do
|
|
|
|
let(:external_tool) do
|
|
|
|
@submission.course.context_external_tools.create!(
|
|
|
|
consumer_key: "aaaa",
|
|
|
|
domain: "somewhere",
|
|
|
|
name: "some tool",
|
|
|
|
shared_secret: "zzzz"
|
|
|
|
)
|
|
|
|
end
|
|
|
|
|
|
|
|
it "throws an error if an lti_launch_url is not included" do
|
|
|
|
result = run_mutation(submission_id: @submission.id, active_submission_type: "basic_lti_launch", attempt: 1)
|
|
|
|
expect(result.dig(:data, :createSubmissionDraft, :errors, 0, :message)).to eq "SubmissionError"
|
|
|
|
end
|
|
|
|
|
|
|
|
it "throws an error if external_tool_id is not included" do
|
|
|
|
result = run_mutation(
|
|
|
|
active_submission_type: "basic_lti_launch",
|
|
|
|
attempt: 1,
|
|
|
|
lti_launch_url: "http://localhost/some-url",
|
|
|
|
submission_id: @submission.id
|
|
|
|
)
|
|
|
|
expect(result.dig(:data, :createSubmissionDraft, :errors, 0, :message)).to eq "SubmissionError"
|
|
|
|
end
|
|
|
|
|
|
|
|
it "throws an error if a matching external tool cannot be found" do
|
|
|
|
allow(ContextExternalTool).to receive(:find_external_tool).and_return(nil)
|
|
|
|
result = run_mutation(
|
|
|
|
active_submission_type: "basic_lti_launch",
|
|
|
|
attempt: 1,
|
|
|
|
external_tool_id: external_tool.id + 1,
|
|
|
|
lti_launch_url: "http://localhost/some-url",
|
|
|
|
submission_id: @submission.id
|
|
|
|
)
|
|
|
|
expect(result.dig(:data, :createSubmissionDraft, :errors, 0, :message)).to eq "no matching external tool found"
|
|
|
|
end
|
|
|
|
|
|
|
|
it "saves the draft if lti_launch_url is present and external_tool_id points to a valid tool" do
|
|
|
|
allow(ContextExternalTool).to receive(:find_external_tool).and_return(external_tool)
|
|
|
|
result = run_mutation(
|
|
|
|
active_submission_type: "basic_lti_launch",
|
|
|
|
attempt: 1,
|
|
|
|
external_tool_id: external_tool.id,
|
|
|
|
lti_launch_url: "http://localhost/some-url",
|
|
|
|
submission_id: @submission.id
|
|
|
|
)
|
|
|
|
|
|
|
|
aggregate_failures do
|
|
|
|
expect(result.dig(:data, :createSubmissionDraft, :submissionDraft, :activeSubmissionType)).to eq "basic_lti_launch"
|
|
|
|
expect(result.dig(:data, :createSubmissionDraft, :submissionDraft, :ltiLaunchUrl)).to eq "http://localhost/some-url"
|
|
|
|
expect(result.dig(:data, :createSubmissionDraft, :submissionDraft, :externalTool, :_id)).to eq external_tool.id.to_s
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
it "optionally saves a resource_link_lookup_uuid" do
|
|
|
|
allow(ContextExternalTool).to receive(:find_external_tool).and_return(external_tool)
|
|
|
|
uuid = SecureRandom.uuid
|
|
|
|
result = run_mutation(
|
|
|
|
active_submission_type: "basic_lti_launch",
|
|
|
|
attempt: 1,
|
|
|
|
external_tool_id: external_tool.id,
|
|
|
|
lti_launch_url: "http://localhost/some-url",
|
|
|
|
resource_link_lookup_uuid: uuid,
|
|
|
|
submission_id: @submission.id
|
|
|
|
)
|
|
|
|
expect(result.dig(:data, :createSubmissionDraft, :submissionDraft, :resourceLinkLookupUuid)).to eq uuid
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2021-02-02 13:30:50 +08:00
|
|
|
context "when dup records exist" do
|
|
|
|
before do
|
|
|
|
# simulate creating a dup record
|
|
|
|
submission_draft = SubmissionDraft.where(
|
|
|
|
submission: @submission,
|
|
|
|
submission_attempt: @submission.attempt
|
|
|
|
).first_or_create!
|
|
|
|
submission_draft.update_attribute(:submission_attempt, @submission.attempt + 1)
|
|
|
|
SubmissionDraft.where(
|
|
|
|
submission: @submission,
|
|
|
|
submission_attempt: @submission.attempt
|
|
|
|
).first_or_create!
|
|
|
|
submission_draft.update_attribute(:submission_attempt, @submission.attempt)
|
|
|
|
end
|
|
|
|
|
|
|
|
it "updates an existing submission draft without error" do
|
|
|
|
result = run_mutation(
|
|
|
|
active_submission_type: "online_text_entry",
|
|
|
|
attempt: @submission.attempt,
|
|
|
|
body: "some text body 123",
|
|
|
|
submission_id: @submission.id
|
|
|
|
)
|
|
|
|
|
|
|
|
drafts = SubmissionDraft.where(
|
|
|
|
submission: @submission, submission_attempt: @submission.attempt
|
|
|
|
)
|
|
|
|
expect(drafts.first.body).to eq "some text body 123"
|
|
|
|
expect(
|
|
|
|
result.dig(:data, :createSubmissionDraft, :submissionDraft, :activeSubmissionType)
|
|
|
|
).to eq "online_text_entry"
|
|
|
|
end
|
|
|
|
|
|
|
|
it "removes dup records" do
|
|
|
|
drafts = SubmissionDraft.where(
|
|
|
|
submission: @submission, submission_attempt: @submission.attempt
|
|
|
|
)
|
|
|
|
|
|
|
|
expect(drafts.count).to be 2
|
|
|
|
run_mutation(
|
|
|
|
active_submission_type: "online_text_entry",
|
|
|
|
attempt: @submission.attempt,
|
|
|
|
body: "some text body 123",
|
|
|
|
submission_id: @submission.id
|
|
|
|
)
|
|
|
|
|
|
|
|
drafts = SubmissionDraft.where(
|
|
|
|
submission: @submission, submission_attempt: @submission.attempt
|
|
|
|
)
|
|
|
|
expect(drafts.count).to be 1
|
|
|
|
end
|
|
|
|
end
|
2019-05-18 06:50:20 +08:00
|
|
|
end
|