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 = `

Chapter 1

Chapter 2: The Road

Part 1

` const result = parseDaisyMetadata(nccHtml) expect(result.chapters).to.deep.equal([ { title: 'Chapter 1' }, { title: 'Chapter 2: The Road' }, { title: 'Part 1' } ]) }) })