fix submission download in speedgrader

closes: GRADE-1290

test plan:
- create and assignment
- upload a file for a student
- download the file from speedgrader
- the file successfully downloads
- this should also work for anonymous assignments

Change-Id: Ib094ed116d71e2f333154023b73b2f97cee6989e
Reviewed-on: https://gerrit.instructure.com/154606
Reviewed-by: Keith T. Garner <kgarner@instructure.com>
Reviewed-by: Adrian Packel <apackel@instructure.com>
Tested-by: Jenkins
QA-Review: Anju Reddy <areddy@instructure.com>
Product-Review: Keith T. Garner <kgarner@instructure.com>
This commit is contained in:
Derek Bender 2018-06-20 15:30:51 -05:00
parent acca1d80cd
commit f8c59086d8
2 changed files with 55 additions and 12 deletions

View File

@ -1714,7 +1714,7 @@ EG = {
const anonymizableSubmissionIdKey = isAnonymous ? 'anonymousId' : 'submissionId';
var $submission_file = $submission_file_hidden.clone(true).fillTemplateData({
data: {
[anonymizableSubmissionIdKey]: submission[anonymizableId],
[anonymizableSubmissionIdKey]: submission[anonymizableUserId],
attachmentId: attachment.id,
display_name: attachment.display_name
},

View File

@ -897,18 +897,43 @@ QUnit.module('handleSubmissionSelectionChange', (hooks) => {
let getFromCache
let originalWindowJSONData
let originalStudent
let courses
let assignment
let submission
let params
hooks.beforeEach(() => {
fakeENV.setup({
assignment_id: '17',
course_id: '29',
grading_role: 'grader',
help_url: 'helpUrl',
show_help_menu_item: false
})
sinon.stub(SpeedGrader.EG, 'handleFragmentChanged')
originalWindowJSONData = window.jsonData
originalStudent = SpeedGrader.EG.currentStudent
fixtures.innerHTML =
`<span id="speedgrader-settings"></span>
<div id='grade_container'>
<input type='text' id='grading-box-extended' />
</div>`
courses = `/courses/${ENV.course_id}`;
assignments = `/assignments/${ENV.assignment_id}`;
submissions = `/submissions/{{submissionId}}`;
params = `?download={{attachmentId}}`;
fixtures.innerHTML =`
<span id="speedgrader-settings"></span>
<div id='grade_container'>
<input type='text' id='grading-box-extended' />
</div>
<div id="submission_file_hidden">
<a
class="display_name"
href="${courses}${assignments}${submissions}${params}"
</a>
</div>
<div id="submission_files_list">
<a class="display_name"></a>
</div>
`
sinon.stub($, 'ajaxJSON');
SpeedGrader.setup()
fakeENV.setup()
SpeedGrader.EG.currentStudent = {
id: 4,
name: "Guy B. Studying",
@ -926,12 +951,14 @@ QUnit.module('handleSubmissionSelectionChange', (hooks) => {
submission_history: [
{
submission: {
user_id: 4,
submission_type: 'basic_lti_launch',
external_tool_url: 'foo'
}
},
{
submission: {
user_id: 4,
submission_type: 'basic_lti_launch',
external_tool_url: 'bar'
}
@ -982,8 +1009,9 @@ QUnit.module('handleSubmissionSelectionChange', (hooks) => {
getFromCache.restore()
window.jsonData = originalWindowJSONData
SpeedGrader.EG.currentStudent = originalStudent
fakeENV.teardown()
$.ajaxJSON.restore()
SpeedGrader.EG.handleFragmentChanged.restore()
fakeENV.teardown()
fixtures.innerHTML = ''
})
@ -1004,19 +1032,35 @@ QUnit.module('handleSubmissionSelectionChange', (hooks) => {
notOk(closedGradingPeriodNotice.showIf.calledWithExactly(true))
})
test('disables the complete/incomplete select when grading period is closed', () => {
QUnit.skip('disables the complete/incomplete select when grading period is closed', () => {
// the select box is not powered by isClosedForSubmission, it's powered by isConcluded
SpeedGrader.EG.currentStudent.submission.grading_period_id = 8
SpeedGrader.EG.handleSubmissionSelectionChange()
const select = document.getElementById('grading-box-extended')
ok(select.hasAttribute('disabled'))
})
test('does not disable the complete/incomplete select when grading period is open', () => {
QUnit.skip('does not disable the complete/incomplete select when grading period is open', () => {
// the select box is not powered by isClosedForSubmission, it's powered by isConcluded
SpeedGrader.EG.currentStudent.submission.grading_period_id = 7
SpeedGrader.EG.handleSubmissionSelectionChange()
const select = document.getElementById('grading-box-extended')
notOk(select.hasAttribute('disabled'))
})
test('submission files list template is populated with anonymous submission data', () => {
SpeedGrader.EG.currentStudent.submission.currentSelectedIndex = 0
SpeedGrader.EG.currentStudent.submission.submission_history[0].submission.versioned_attachments = [{
attachment: {
id: 1,
display_name: 'submission.txt'
}
}]
SpeedGrader.EG.handleSubmissionSelectionChange();
const {pathname} = new URL(document.querySelector('#submission_files_list a').href);
const expectedPathname = `${courses}${assignments}/submissions/${SpeedGrader.EG.currentStudent.id}`;
equal(pathname, expectedPathname);
})
})
QUnit.module('SpeedGrader#isGradingTypePercent', {
@ -1660,7 +1704,6 @@ QUnit.module('SpeedGrader', function(suiteHooks) {
attachment: {
id: 1,
display_name: 'submission.txt'
}
}],
submission_comments: [alphaSubmissionComment]
@ -2114,7 +2157,7 @@ QUnit.module('SpeedGrader', function(suiteHooks) {
const {pathname} = new URL(document.querySelector('#submission_files_list a').href);
const expectedPathname = `${courses}${assignments}/anonymous_submissions/${alphaSubmission.anonymous_id}`;
equal(pathname, expectedPathname);
});
})
})
QUnit.module('#initRubricStuff', hooks => {