@instructure/quiz-grading
Version:
The Quiz React SDK by Instructure Inc.
149 lines (140 loc) • 3.7 kB
JavaScript
import React from 'react'
import {render, screen} from '../../../../../../tests/utils/rtlRenderOverride'
import {describe, expect, it} from 'vitest'
import {SessionItem} from '@instructure/quiz-core/common/records/SessionItem'
import {RegradeOverride} from '../index'
describe('Regrade Override', () => {
const quizId = '22'
const quizEntryId = '222'
const regradedQuizEntryId = '223'
const sessionItem = new SessionItem({
id: '333',
quizEntryId,
})
const scoreReconciliation = 'new_score'
const itemId = '100'
const otherItemId = '200'
const scoringAlgorithm = 'Equivalence'
const pointsPossible = 1.0
const regradeAdjustedPointsPossible = 1.0
const regradeAdjustedScoringData = {value: 'wrong'}
const handleValidationErrorsFromApi = Function.prototype
const clearValidationErrorsFromApi = Function.prototype
// The props below are to avoid prop type error
const displayPosition = 1
const parentId = '1'
const clearNextQuizEntry = Function.prototype
const createTempItem = Function.prototype
const guid = '1'
const parentType = 'div'
const createTempStimulus = Function.prototype
const addContentPopoverOpen = false
const onCancel = Function.prototype
const scoringData = {
value: 'true',
}
// Add some modifications
const newScoringData = {value: 'false'}
const newPointsPossible = 14.0
const defaultProps = {
addContentPopoverOpen,
clearNextQuizEntry,
createTempItem,
createTempStimulus,
displayPosition,
guid,
itemId,
onCancel,
parentId,
parentType,
quizSessionId: '333',
sessionItem,
handleValidationErrorsFromApi,
clearValidationErrorsFromApi,
regradingPayload: {
quizEntryId: '222',
scoringAlgorithm: 'someAlgorithm',
scoringData,
},
}
const defaultState = {
regrading: {
quizEntryId,
scoreReconciliation,
regradingPayload: {
quizEntryId: '223',
scoringAlgorithm: 'someAlgorithm',
scoringData,
},
},
items: {
[itemId]: {
id: itemId,
interactionType: '1',
scoringAlgorithm,
scoringData,
},
[otherItemId]: {
id: otherItemId,
interactionType: '1',
scoringAlgorithm,
scoringData,
},
},
modifications: {
items: {[itemId]: {id: itemId, scoringData: newScoringData}},
quizEntries: {[quizEntryId]: {pointsPossible: newPointsPossible}},
},
quizzes: {
activeQuizId: quizId,
[quizId]: {
id: quizId,
oneAtATimeType: 'question',
},
},
quizEntries: {
[quizEntryId]: {
entry: {
id: itemId,
schema: 'Item',
},
entryType: 'Item',
id: quizEntryId,
pointsPossible,
},
[regradedQuizEntryId]: {
entry: {
id: otherItemId,
schema: 'Item',
},
entryType: 'Item',
id: regradedQuizEntryId,
pointsPossible,
regradeAdjustedPointsPossible,
regradeAdjustedScoringData,
quizEntryRegrades: [
{
itemId: otherItemId,
pointsPossible: 5.0,
scoringData: {value: 'regraded'},
scoringAlgorithm: 'NoPointsForYou',
},
],
},
},
ui: {
appContainer: '.root',
},
enableRichContentEditor: false,
}
it('RegradeOverride should exist', () => {
render(<RegradeOverride {...defaultProps} />, {
storeOptions: {
state: defaultState,
},
})
expect(
screen.getByText(/Regrading only applies to completed submissions\./i),
).toBeInTheDocument()
})
})