ElectronicBabylonianLiterature/ebl-frontend

View on GitHub
src/fragmentarium/ui/display/Display.test.tsx

Summary

Maintainability
A
0 mins
Test Coverage
import React from 'react'
import { render, screen, waitFor } from '@testing-library/react'
import { Fragment } from 'fragmentarium/domain/fragment'
import complexText from 'test-support/complexTestText'
import WordService from 'dictionary/application/WordService'
import Display from './Display'
import { MemoryRouter } from 'react-router-dom'
import { fragmentFactory } from 'test-support/fragment-fixtures'
import { DictionaryContext } from 'dictionary/ui/dictionary-context'
import Bluebird from 'bluebird'
import { createDictionaryWord } from 'test-support/glossary'

jest.mock('dictionary/application/WordService')

let wordService: WordService
let fragment: Fragment
let container: Element

beforeEach(async () => {
  wordService = new (WordService as jest.Mock<WordService>)()
  jest.spyOn(wordService, 'findAll').mockImplementation((ids) => {
    const words = [...new Set(ids)].map((id) => createDictionaryWord(id))
    return Bluebird.resolve(words)
  })
  fragment = fragmentFactory.build(
    {
      notes: {
        text: 'lorem ipsum quia @i{dolor sit amet}',
        parts: [
          { text: 'lorem ipsum quia ', type: 'StringPart' },
          { text: 'dolor sit amet', type: 'EmphasisPart' },
        ],
      },
      publication: 'Guod cigipli epibif odepuwu.',
      description:
        'Balbodduh lifuseb wuuk nasu hulwajo ho hiskuk riwa eldat ivu jandara nosrina abike befukiz ravsus.\nZut uzzejum ub mil ika roppar zewize ipifac vut eci avimez cewmikjov kiwso zamli jecja now.',
    },
    { associations: { text: complexText } }
  )
  container = render(
    <MemoryRouter>
      <DictionaryContext.Provider value={wordService}>
        <Display fragment={fragment} wordService={wordService} activeLine="" />
      </DictionaryContext.Provider>
    </MemoryRouter>
  ).container

  await waitFor(() =>
    expect(screen.queryByText('Loading...')).not.toBeInTheDocument()
  )
})

test('Snapshot', () => {
  expect(container).toMatchSnapshot()
})