canvas-lms/spec/coffeescripts/TurnitinSpec.js

128 lines
4.1 KiB
JavaScript

/*
* Copyright (C) 2016 - 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/>.
*/
import Turnitin from 'compiled/gradebook/Turnitin'
let submissionWithReport = null
QUnit.module('Turnitin', {
setup() {
return (submissionWithReport = {
id: '7',
body: null,
url: null,
grade: null,
score: null,
submitted_at: '2016-11-29T22:29:44Z',
assignment_id: '52',
user_id: '2',
submission_type: 'online_upload',
workflow_state: 'submitted',
grade_matches_current_submission: true,
graded_at: null,
grader_id: null,
attempt: 1,
excused: null,
late: false,
preview_url:
'http://canvas.docker/courses/2/assignments/52/submissions/2?preview=1&version=1',
turnitin_data: {
attachment_103: {
similarity_score: 0.8,
state: 'acceptable',
report_url: 'http://www.instructure.com',
status: 'pending'
}
},
has_originality_report: true,
attachments: [
{
id: '103',
folder_id: '9',
display_name: 'Untitled-2.rtf',
filename: '1480456390_119__Untitled.rtf',
'content-type': 'text/rtf',
url:
'http://canvas.docker/files/103/download?download_frd=1&verifier=kRS6CMQUNlpF1sobUbALPa0AxE2J70vxPAX7GQqo',
size: null,
created_at: '2016-11-29T22:29:43Z',
updated_at: '2016-11-29T22:29:43Z',
unlock_at: null,
locked: false,
hidden: false,
lock_at: null,
hidden_for_user: false,
thumbnail_url: null,
modified_at: '2016-11-29T22:29:43Z',
mime_class: 'doc',
media_entry_id: null,
locked_for_user: false,
preview_url: null
}
],
turnitin: {}
})
}
})
test('uses originality_report type in url if submission has an OriginalityReport', () => {
const tii_data = Turnitin.extractDataForTurnitin(
submissionWithReport,
'attachment_103',
'/courses/2'
)
equal(
tii_data.reportUrl,
'/courses/2/assignments/52/submissions/2/originality_report/attachment_103'
)
})
test('uses turnitin or vericite type if no OriginalityReport is present for the submission', () => {
submissionWithReport.has_originality_report = null
const tii_data = Turnitin.extractDataForTurnitin(
submissionWithReport,
'attachment_103',
'/courses/2'
)
equal(tii_data.reportUrl, '/courses/2/assignments/52/submissions/2/turnitin/attachment_103')
})
test('it uses vericite type if vericite data is present', () => {
submissionWithReport.vericite_data = submissionWithReport.turnitin_data
submissionWithReport.vericite_data.provider = 'vericite'
delete submissionWithReport.turnitin_data
delete submissionWithReport.has_originality_report
const tii_data = Turnitin.extractDataForTurnitin(
submissionWithReport,
'attachment_103',
'/courses/2'
)
equal(tii_data.reportUrl, '/courses/2/assignments/52/submissions/2/vericite/attachment_103')
})
test('returns undefined for score if originality_score is blank', () => {
submissionWithReport.turnitin_data.attachment_103.similarity_score = null
const tii_data = Turnitin.extractDataForTurnitin(submissionWithReport, 'attachment_103', '/courses/2')
equal(tii_data.score, undefined)
})
test('returns the score percentage if originality_score is present', () => {
const tii_data = Turnitin.extractDataForTurnitin(submissionWithReport, 'attachment_103', '/courses/2')
equal(tii_data.score, '0.8%')
})