epubavocado
Version:
I am an EPUB object model aspiring to be standards compliant.
49 lines (38 loc) • 1.14 kB
text/typescript
import { readFileSync } from 'fs'
import { join } from 'path'
import xmldom from 'xmldom'
import { graphql, buildASTSchema } from 'graphql'
import { loadFilesSync } from '@graphql-tools/load-files'
import { mergeTypeDefs } from '@graphql-tools/merge'
import { Package } from '../../src/models.js'
const typesArray = loadFilesSync(join(__dirname, 'types/**/*.graphql'))
test('Package', async () => {
const xmlDoc = new xmldom.DOMParser().parseFromString(
readFileSync(join(__dirname, '../data/package.opf'), 'utf-8'),
)
const result = await graphql(
buildASTSchema(mergeTypeDefs(typesArray)),
`
{
package {
version
uniqueIdentifier {
id
value
}
}
}
`,
{
package: () => {
return new Package(xmlDoc)
},
},
)
expect(result.data).toBeDefined()
const testPackage = result.data?.package
expect(testPackage.version).toBe('3.0')
const uniqueIdentifier = testPackage.uniqueIdentifier
expect(uniqueIdentifier.id).toBe('pub-id')
expect(uniqueIdentifier.value).toBe('urn:isbn:9780316000000')
})