UNPKG

@instructure/quiz-interactions

Version:

A React UI component Library for quiz interaction types.

120 lines (110 loc) 3.98 kB
import React from 'react' import {accessible, expect, mount, within} from '@instructure/ui-test-utils' import EssayResult from '../index' const merge = (objA, objB) => { return Object.assign({}, objA, objB) } const interactionData = { rce: false, spellCheck: true, wordCount: true, wordLimitEnabled: true, wordLimitMax: 10, wordLimitMin: 1, } describe('Essay Result', async () => { describe('rendering', async () => { it('renders basic content with notes', async () => { const subject = await mount( <EssayResult interactionData={interactionData} itemBody="This is an essay question:" scoringData={{value: 'grading notes'}} scoredData={{gradeStatus: 'graded', value: '&amp; an essay by me'}} />, ) const essay = within(subject.getDOMNode()) expect(essay).to.exist() expect(await essay.find(':textContent(&amp; an essay by me)')).to.exist() expect(await essay.find(':textContent(Grading Notes)')).to.exist() }) it('renders rich content with no notes', async () => { const subject = await mount( <EssayResult interactionData={merge(interactionData, {rce: true})} itemBody="This is an essay question:" scoredData={{gradeStatus: 'graded', value: '&amp; an essay <b>by</b> <i>me</i>'}} />, ) const essay = within(subject.getDOMNode()) expect(essay).to.exist() const essayBody = await essay.find(':textContent(& an essay by me)', {exact: false}) expect(essayBody).to.exist() expect(await essay.find(':textContent(Grading Notes)', {expectEmpty: true})).to.not.exist() }) it('renders when response is missing', async () => { const subject = await mount( <EssayResult interactionData={merge(interactionData, {rce: true})} itemBody="This is an essay question:" scoredData={{gradeStatus: 'correct'}} />, ) const essay = within(subject.getDOMNode()) expect(essay).to.exist() expect(await essay.find(':textContent((response not displayed))')).to.exist() }) it('renders when response is empty', async () => { const subject = await mount( <EssayResult interactionData={merge(interactionData, {rce: true})} itemBody="This is an essay question:" scoredData={{gradeStatus: 'waiting', value: ''}} />, ) const essay = within(subject.getDOMNode()) expect(essay).to.exist() expect(await essay.find(':textContent((no answer))')).to.exist() }) }) describe('getGradeStatus', async () => { it('uses the scoredData value', async () => { let essayRef await mount( <EssayResult componentRef={ref => (essayRef = ref)} interactionData={interactionData} itemBody="This is an essay question:" scoredData={{gradeStatus: 'graded'}} />, ) expect(essayRef.getGradeStatus()).to.equal('graded') }) it('uses itemResultsModifications if provided', async () => { let essayRef await mount( <EssayResult componentRef={ref => (essayRef = ref)} interactionData={interactionData} itemBody="This is an essay question:" scoredData={{gradeStatus: 'incorrect'}} itemResultsModifications={{scoredData: {gradeStatus: 'correct'}}} />, ) expect(essayRef.getGradeStatus()).to.equal('correct') }) }) describe('a11y tests', async () => { it('should meet a11y standards', async () => { await mount( <EssayResult interactionData={interactionData} itemBody="This is an essay question:" scoringData={{value: 'grading notes'}} scoredData={{gradeStatus: 'graded', value: 'an essay by me'}} />, ) expect(await accessible(document.body, {ignores: ['region']})).to.be.true() }) }) })