UNPKG

@instructure/quiz-grading

Version:

The Quiz React SDK by Instructure Inc.

77 lines (70 loc) 2.36 kB
import React from 'react' import {fromJS} from 'immutable' import {expect, describe, it, vi} from 'vitest' import {render, screen} from '../../../../../../tests/utils/rtlRenderOverride' import {Item as ItemRecord} from '@instructure/quiz-core/common/records/Item' import {SessionItem as SessionItemRecord} from '@instructure/quiz-core/common/records/SessionItem' import {SessionItemResultList} from '../presenter' describe('SessionItemResultList', () => { const id = '1' const item = new ItemRecord({id}) item.getInteractionType = () => ({slug: 'foo', isSubjective: false}) const sessionItems = [ new SessionItemRecord({id: '1_1', item, position: '1', questionNumber: '1'}), ] const defaultProps = { handleChangeFeedback: Function.prototype, handleChangePoints: Function.prototype, handleChangeGradeStatus: Function.prototype, postToParent: Function.prototype, quizSessionId: '1', regradingIdentifier: 'someIdentifier', renderUpdateButton: Function.prototype, sessionItems: fromJS(sessionItems), withConfirm: Function.prototype, } const storeOptions = { state: { quizSessions: { activeQuizSessionId: '1', }, ui: { appContainer: '.root', }, }, } it('renders a list of session item results', () => { render(<SessionItemResultList {...defaultProps} />, {storeOptions}) const sessionItemText = screen.getByText(/Results for question/i) expect(sessionItemText).toBeInTheDocument() }) it('scrolls to active item on mount', () => { const scrollToItemStub = vi.fn() render( <SessionItemResultList {...defaultProps} activeItemId="1" gradeByQuestionEnabled scrollToItem={scrollToItemStub} />, {storeOptions}, ) expect(scrollToItemStub).toHaveBeenCalledExactlyOnceWith('1_1') }) it('opens a confirmation modal if active item is not found', () => { const scrollToItemStub = vi.fn() const withConfirmStub = vi.fn() render( <SessionItemResultList {...defaultProps} activeItemId="99" gradeByQuestionEnabled scrollToItem={scrollToItemStub} withConfirm={withConfirmStub} />, {storeOptions}, ) expect(scrollToItemStub).not.toHaveBeenCalled() expect(withConfirmStub).toHaveBeenCalled() }) })