@snippetify/book-reader
Version:
Book reader utilities
99 lines (86 loc) • 3.01 kB
JavaScript
require('./utils/mock').initJsDOM()
const config = require('../src/config')
const { assert, expect } = require('chai')
const StyleBuilder = require('../src/StyleBuilder')
describe('StyleBuilder', () => {
let styleBuilder
beforeEach(() => {
styleBuilder = StyleBuilder.getInstance()
styleBuilder
.setConfig(config.style)
.setRootElement($(document).find('body').get(0))
})
describe('#getInstance', () => {
it('doit retourner une instance de StyleBuilder', () => {
assert.isTrue(StyleBuilder.getInstance() instanceof StyleBuilder)
})
})
describe('#find', () => {
it('doit retourner un seul element', () => {
const value = { color: 'red' }
styleBuilder.add('reading', value)
expect(value).to.eql(styleBuilder.find('reading'))
})
})
describe('#setMany', () => {
it('doit inserer plusieurs elements', () => {
styleBuilder.setMany(config.style.styles)
expect(config.style.styles).to.eql(styleBuilder.styles)
})
})
describe('#add', () => {
it('doit inserer un seul element', () => {
const name = 'note'
const value = { color: 'red' }
styleBuilder.add(name, value)
expect(value).to.eql(styleBuilder.styles[name])
})
})
describe('#remove', () => {
it('doit effacer un seul element', () => {
const name = 'note'
const value = { color: 'red' }
styleBuilder.add(name, value)
expect(value).to.eql(styleBuilder.styles[name])
styleBuilder.remove(name)
assert.equal(undefined, styleBuilder.styles[name])
})
})
describe('#removeMany', () => {
it('doit effacer plusieurs elements', () => {
styleBuilder.setMany(config.style.styles)
expect(config.style.styles).to.eql(styleBuilder.styles)
const names = []
$.each(styleBuilder.styles, key => names.push(key))
styleBuilder.removeMany(names)
assert.equal(0, Object.keys(styleBuilder.styles).length)
})
})
describe('#removeAll', () => {
it('doit effacer tous les elements', () => {
styleBuilder.setMany(config.style.styles)
expect(config.style.styles).to.eql(styleBuilder.styles)
styleBuilder.removeAll()
assert.equal(0, Object.keys(styleBuilder.styles).length)
})
})
describe('#build', () => {
it('contient les styles', () => {
assert.isTrue(styleBuilder.add('note', { color: 'red' }).build().includes(config.style.vendor))
})
})
describe('#print', () => {
it('doit etre ajouté dans le head de la page', () => {
styleBuilder.print()
assert.isTrue($(document).find('head').find(`#${config.style.vendor}`).length > 0)
})
})
describe('#unprint', () => {
it('doit etre enlevé dans le head de la page', () => {
styleBuilder.print()
assert.isTrue($(document).find('head').find(`#${config.style.vendor}`).length > 0)
styleBuilder.unprint()
assert.isTrue($(document).find('head').find(`#${config.style.vendor}`).length === 0)
})
})
})