@instructure/quiz-grading
Version:
The Quiz React SDK by Instructure Inc.
77 lines (70 loc) • 2.36 kB
JavaScript
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()
})
})