UNPKG

@instructure/quiz-grading

Version:

The Quiz React SDK by Instructure Inc.

149 lines (140 loc) 3.7 kB
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() }) })