const chai = require('chai')
const expect = chai.expect
const { parseDaisyMetadata } = require('../../../../server/utils/parsers/parseDaisyMetadata')
describe('parseDaisyMetadata', () => {
it('returns null if htmlText is empty', () => {
const result = parseDaisyMetadata('')
expect(result).to.be.null
})
it('parses common metadata values from DAISY ncc.html', () => {
const nccHtml = `
Fallback Title
`
const result = parseDaisyMetadata(nccHtml)
expect(result.title).to.equal('The DAISY Book')
expect(result.authors).to.deep.equal(['Jane Doe', 'Richard Roe'])
expect(result.narrators).to.deep.equal(['Reader One', 'Reader Two'])
expect(result.publisher).to.equal('Talking Books Inc')
expect(result.publishedYear).to.equal('2021')
expect(result.language).to.equal('en')
expect(result.genres).to.deep.equal(['Fiction', 'Mystery'])
expect(result.tags).to.deep.equal(['audio', 'daisy'])
expect(result.isbn).to.equal('978-1-4028-9462-6')
expect(result.asin).to.equal('B012345678')
})
it('falls back to title tag when dc:title is not set', () => {
const nccHtml = `
Title From Head
`
const result = parseDaisyMetadata(nccHtml)
expect(result.title).to.equal('Title From Head')
})
it('parses isbn from dc:source in DAISY ncc.html', () => {
const nccHtml = `
`
const result = parseDaisyMetadata(nccHtml)
expect(result.isbn).to.equal('978-0-553-38016-3')
})
it('parses chapter names from heading entries in ncc.html', () => {
const nccHtml = `
Part 1
`
const result = parseDaisyMetadata(nccHtml)
expect(result.chapters).to.deep.equal([
{ title: 'Chapter 1' },
{ title: 'Chapter 2: The Road' },
{ title: 'Part 1' }
])
})
})