ElectronicBabylonianLiterature/ebl-frontend

View on GitHub
src/fragmentarium/domain/Genres.test.ts

Summary

Maintainability
A
0 mins
Test Coverage
import { Genre, Genres } from 'fragmentarium/domain/Genres'

const genresOptions = [
  ['ARCHIVAL123'],
  ['ARCHIVAL', 'Administrative'],
  ['ARCHIVAL', 'Memos'],
]

const genreConfig1 = {
  category: ['ARCHIVAL'],
  uncertain: false,
}

const genreConfig2 = {
  category: ['ARCHIVAL', 'Memos'],
  uncertain: false,
}

const genresConfig = [genreConfig1, genreConfig2]

const genre = new Genre(genreConfig1.category, genreConfig1.uncertain)
const genres = Genres.fromJson(genresConfig)

let genreNew
let genresNew

describe('Genre', () => {
  beforeEach(() => {
    genreNew = genre.setUncertain(true)
  })
  test('empty init', () => {
    const emptyGenre = new Genres([])
    expect(emptyGenre.genres).toEqual([])
  })
  test('toString', () => {
    expect(genre.toString).toEqual('ARCHIVAL')
  })
  test('setter', () => {
    expect(genreNew.uncertain).toEqual(true)
  })
})

describe('Genres', () => {
  test('Genres init', () => {
    expect(genres.isPresent(genre)).toEqual(true)
  })
  test('find category', () => {
    expect(genres.find(genre)).toEqual(genre)
  })
  test('insert', () => {
    genreNew = new Genre(['ARCHIVAL', 'Administrative'], false)
    genresNew = genres.insertWithOrder(genreNew, genresOptions)
    expect(genresNew.genres[1]).toEqual(genreNew)
  })
  test('delete genre', () => {
    genresNew = genres.delete(genre)
    expect(genresNew.genres.length).toEqual(1)
    expect(genresNew.find(genre)).toEqual(undefined)
  })
  test('replace genre', () => {
    genreNew = genre.setUncertain(true)
    genresNew = genres.replace(genreNew)
    expect(genresNew.find(genreNew).uncertain).toEqual(true)
  })
})