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 File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
|
|
|
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,
|
2019-09-17 04:55:04 +08:00
|
|
|
file_ids: [],
|
2019-10-22 06:15:28 +08:00
|
|
|
media_id: 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}
|
2019-05-18 06:50:20 +08:00
|
|
|
fileIds: #{file_ids}
|
2019-10-22 06:15:28 +08:00
|
|
|
#{"mediaId: \"#{media_id}\"" if media_id}
|
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
|
2019-10-22 06:15:28 +08:00
|
|
|
mediaObject {
|
|
|
|
_id
|
|
|
|
}
|
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)
|
2019-08-03 04:57:13 +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)
|
|
|
|
)
|
|
|
|
attachment_ids = first_result.dig(:data, :createSubmissionDraft, :submissionDraft, :attachments).map { |attachment| attachment[:_id] }
|
|
|
|
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]
|
|
|
|
)
|
|
|
|
attachment_ids = second_result.dig(:data, :createSubmissionDraft, :submissionDraft, :attachments).map { |attachment| attachment[:_id] }
|
|
|
|
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)
|
|
|
|
)
|
|
|
|
attachment_ids = result.dig(:data, :createSubmissionDraft, :submissionDraft, :attachments).map { |attachment| attachment[:_id] }
|
|
|
|
|
|
|
|
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
|
|
|
|
end
|