UNPKG

@snippetify/book-reader

Version:
202 lines (176 loc) 6.82 kB
require('./utils/mock').initJsDOM() const config = require('../src/config') const Events = require('../src/events') const { assert, expect } = require('chai') const BookBuilder = require('../src/BookBuilder') const Decorator = require('../src/models/Decorator') const EventManager = require('../src/EventManager') const DecoratorManager = require('../src/DecoratorManager') const { decorators, pages, selectTextInDom } = require('./utils/mock') describe('DecoratorManager', () => { let decorationManager const getOneDecorator = () => { const bookBuilder = BookBuilder.getInstance() .setRootElement($(document).find('body').get(0)) .setPages(pages) .build() .print() selectTextInDom($(document).find('p').get(0)) const selection = bookBuilder.selectionManager.create() return new Decorator({ ...selection, uuid: 'ert2', type: 'note' }) } beforeEach(() => { decorationManager = DecoratorManager.getInstance() decorationManager .setConfig(config.decorator) .setRootElement($(document).find('body').get(0)) }) describe('#getInstance', () => { it('doit retourner une instance de DecoratorManager', () => { assert.isTrue(DecoratorManager.getInstance() instanceof DecoratorManager) }) }) describe('#setConfig', () => { it('contient la configuration', () => { decorationManager.setConfig(config.decorator) expect(config.decorator).to.eql(decorationManager.config) }) }) describe('#setRootElement', () => { it('doit injecter le root element', () => { decorationManager.setRootElement(document) expect(document).to.equal(decorationManager.rootElement) }) }) describe('#setEvents', () => { it('doit injecter le manager d\'evenement', () => { const events = EventManager.getInstance() decorationManager.setEvents(events) expect(events).to.eql(decorationManager.events) }) }) describe('#find', () => { it('doit retourner un seul element', () => { const index = 0 const decorator = decorators[index] decorationManager.add(decorator) expect(decorator).to.eql(decorationManager.find(decorator.uuid)) }) }) describe('#setMany', () => { it('doit inserer plusieurs elements', () => { decorationManager.setMany(decorators) expect(decorators).to.eql(decorationManager.decorators) }) }) describe('#add', () => { it('doit inserer un seul element', () => { const index = 0 decorationManager.add(decorators[index]) expect(decorators[index]).to.eql(decorationManager.decorators[index]) }) }) describe('#update', () => { it('doit modifier un seul element', () => { const index = 0 decorationManager.add(decorators[index]) expect(undefined).to.eql(decorationManager.decorators[index].style) decorators[index].style = { color: 'red' } decorationManager.update(decorators[index]) expect(decorators[index].style).to.eql(decorationManager.decorators[index].style) }) }) describe('#updateMany', () => { it('doit modifier plusieurs elements', () => { const index = 0 const decorator = decorators[index] decorator.style = {} decorationManager.add(decorator) expect({}).to.eql(decorationManager.decorators[index].style) decorator.style = { color: 'red' } decorationManager.updateMany([decorator]) expect(decorator.style).to.eql(decorationManager.decorators[index].style) }) }) describe('#remove', () => { it('doit effacer un seul element', () => { const index = 0 const decorator = decorators[index] decorationManager.add(decorator) expect(decorator).to.eql(decorationManager.decorators[index]) decorationManager.remove(decorator) assert.equal(undefined, decorationManager.decorators[index]) }) }) describe('#removeMany', () => { it('doit effacer plusieurs elements', () => { decorationManager.setMany(decorators) expect(decorators).to.eql(decorationManager.decorators) decorationManager.removeMany(decorators) assert.equal(0, decorationManager.decorators.length) }) }) describe('#removeAll', () => { it('doit effacer tous les elements', () => { decorationManager.setMany(decorators) expect(decorators).to.eql(decorationManager.decorators) decorationManager.removeAll() assert.equal(0, decorationManager.decorators.length) }) }) describe('#printOne', () => { it('doit imprimer un decorator', () => { decorationManager.printOne(getOneDecorator()) assert.isTrue($(document).find('body').find('[data-uuid="ert2"]').length > 0) }) }) describe('#print', () => { it('doit etre ajouté dans le body de la page', () => { decorationManager.setMany([getOneDecorator()]).print() assert.isTrue($(document).find('body').find('[data-uuid="ert2"]').length > 0) }) }) describe('#updatePrinting', () => { it('modifier un decorator dans la page', () => { const decorator = getOneDecorator() decorationManager.setMany([decorator]).print() assert.isTrue($(document).find('body').find('[data-uuid="ert2"]').length > 0) decorator.style = { color: 'red' } decorationManager.updatePrinting(decorator) assert.equal('red', $(document).find('body').find('[data-uuid="ert2"]').css('color')) }) }) describe('#unprintOne', () => { it('doit etre enlevé dans le body de la page', () => { const decorator = getOneDecorator() decorationManager.printOne(decorator) assert.isTrue($(document).find('body').find('[data-uuid="ert2"]').length > 0) decorationManager.unprintOne(decorator) assert.isTrue($(document).find('body').find('[data-uuid="ert2"]').length === 0) }) }) describe('#unprintAll', () => { it('doit enlever tous les decorator dans le body de la page', () => { const decorator = getOneDecorator() decorationManager.printOne(decorator) assert.isTrue($(document).find('body').find('[data-uuid="ert2"]').length > 0) decorationManager.unprintAll() assert.isTrue($(document).find('body').find('[data-uuid="ert2"]').length === 0) }) }) describe('#initDispatcher', () => { it('doit etre à l\'ecoute de l\'evenement onDecoratorClick afin de l\'intercepter', () => { const decorator = getOneDecorator() const bookBuilder = BookBuilder.getInstance() .setRootElement($(document).find('body').get(0)) .setPages(pages) .setDecorators([decorator]) .build() .print() bookBuilder.events.subscribe(Events.decoratorClick, item => { expect(decorator).to.eql(item) }) $('body').find('[data-uuid]').trigger('click') }) }) })