@snippetify/book-reader
Version:
Book reader utilities
121 lines (106 loc) • 3.57 kB
JavaScript
require('./utils/mock').initJsDOM()
const config = require('../src/config')
const { expect, assert } = require('chai')
const BookBuilder = require('../src/BookBuilder')
const { pages, decorators, template, generateReference } = require('./utils/mock')
describe('BookBuilder', () => {
let bookBuilder
beforeEach(() => {
bookBuilder = BookBuilder.getInstance()
})
describe('#getInstance', () => {
it('doit retourner une instance de BookBuilder', () => {
assert.isTrue(BookBuilder.getInstance() instanceof BookBuilder)
})
})
describe('#setConfig', () => {
it('contient la configuration', () => {
bookBuilder.setConfig(config)
expect(config).to.eql(bookBuilder.config)
})
})
describe('#setRootElement', () => {
it('doit injecter le root element', () => {
bookBuilder.setRootElement(document)
expect(document).to.equal(bookBuilder.rootElement)
})
})
describe('#setPages', () => {
it('contient les pages', () => {
bookBuilder.setPages(pages)
expect(bookBuilder.pages).to.eql(pages)
})
})
describe('#setDecorators', () => {
it('contient les decorators', () => {
bookBuilder.setDecorators(decorators)
expect(bookBuilder.decorators).to.eql(decorators)
})
})
describe('#build', () => {
it('doit initialiser toutes les dependances', () => {
bookBuilder
.setPages(pages)
.setConfig(config)
.setRootElement($('body').get(0))
.build()
expect(config.style).to.eql(bookBuilder.styleBuilder.config)
expect(config.decorator).to.eql(bookBuilder.decoratorManager.config)
})
})
describe('#buildContent', () => {
it('contient tous les éléments du build', () => {
const myConfig = { ...config }
myConfig.page.reference.template = template
const value = bookBuilder
.setConfig(myConfig)
.setPages(pages)
.build()
.buildContent()
assert.isTrue(value.html().includes($(generateReference(1)).html()))
})
})
describe('#print', () => {
it('les pages ont été imprimées et contiennent les références', () => {
const myConfig = { ...config }
myConfig.page.reference.template = template
bookBuilder
.setPages(pages)
.setConfig(myConfig)
.setRootElement($('body').get(0))
.build()
.print()
assert.isTrue($('body').html().includes($(generateReference(1)).html()))
})
})
describe('#isPrinted', () => {
it('les pages ont bien été imprimées', () => {
bookBuilder
.setPages(pages)
.setRootElement($('body').get(0))
.build()
.print()
assert.isTrue(bookBuilder.isPrinted())
})
})
describe('#getReadingStyle', () => {
it('doit retourner le style du reading', () => {
expect(config.style.styles.reading).to.eql(bookBuilder.build().getReadingStyle())
})
})
describe('#updateReadingStyle', () => {
it('doit imprimer le style reading dans le head', () => {
bookBuilder
.setPages(pages)
.setRootElement($('body').get(0))
.build()
.print()
$('head').find('style[id]').html()
assert.isTrue($('head').find('style[id]').html().includes(bookBuilder.config.style.styles.reading['text-align']))
const configuration = bookBuilder.getReadingStyle()
configuration['text-align'] = 'center'
bookBuilder.updateReadingStyle(configuration)
assert.isTrue($('head').find('style[id]').html().includes('center'))
})
})
})