UNPKG

@instructure/quiz-grading

Version:

The Quiz React SDK by Instructure Inc.

78 lines (67 loc) 2.56 kB
import React from 'react' import {render, screen} from '../../../../../../tests/utils/rtlRenderOverride' import {describe, it, expect, vi} from 'vitest' import {GradingSidebarItem as SidebarItem} from '../presenter' import runAxeCheck from '@instructure/ui-axe-check' describe('Grading SidebarItem Presenter', () => { const pinSessionItemStub = vi.fn() const defaultProps = { isAnswered: false, isGraded: true, itemBody: 'Hi', itemName: 'MultipleChoice', pinSessionItem: pinSessionItemStub, pointsPossible: 1, position: 1, sessionItemId: '5', sidebarOpen: true, scrollToItem: () => {}, } it('renders common sidebarItem', () => { render(<SidebarItem {...defaultProps} />) expect(screen.getByText(/multiplechoice/i)).toBeInTheDocument() }) it('sends sessionItemId as itemId to common sidebarItem', () => { render(<SidebarItem {...defaultProps} />) expect(screen.getByRole('link', {name: /navigate to question at position 1/i})).toHaveAttribute( 'data-automation-item-id', '5', ) }) describe('with ungraded item', () => { it('does render a dot', () => { const {container} = render(<SidebarItem {...defaultProps} isGraded={false} />) expect(container.querySelector('.needsGradingDot')).toBeInTheDocument() }) it('renders a SR message', () => { render(<SidebarItem {...defaultProps} isGraded={false} />) expect(screen.getByText(/Question at position 1 needs grading/)).toBeInTheDocument() }) it('applies style when in stimulus and sidebarOpen', () => { const {container} = render( <SidebarItem {...defaultProps} isGraded={false} sidebarOpen={true} inStimulus={true} />, ) expect(container.querySelector('.needsGradingDot')).toBeInTheDocument() }) }) describe('with graded item', () => { it('does not render a dot', () => { const {container} = render(<SidebarItem {...defaultProps} isGraded={true} />) expect(container.querySelector('.needsGradingDot')).not.toBeInTheDocument() }) it('renders a SR message', () => { render(<SidebarItem {...defaultProps} isGraded={true} />) expect(screen.getByText(/Question at position 1 is graded/)).toBeInTheDocument() }) }) describe('a11y tests', () => { it('should meet a11y standards', async () => { render(<SidebarItem {...defaultProps} />) expect( await runAxeCheck(document.body, { ignores: ['aria-tooltip-name', 'region'], }), ).toBe(true) }) }) })