UNPKG

@snippetify/book-reader

Version:
82 lines (69 loc) 2.71 kB
require('./utils/mock').initJsDOM() const jquery = require('jquery') const { JSDOM } = require('jsdom') const Events = require('../src/events') const { assert, expect } = require('chai') const BookBuilder = require('../src/BookBuilder') const EventManager = require('../src/EventManager') const Selection = require('../src/models/Selection') const SelectionManager = require('../src/SelectionManager') const { pages, content, selectTextInDom } = require('./utils/mock') describe('SelectionManager', () => { let selectionManager beforeEach(() => { selectionManager = SelectionManager.getInstance() selectionManager .setEvents(EventManager.getInstance()) .setRootElement($(document).find('body').get(0)) }) describe('#getInstance', () => { it('doit retourner une instance de SelectionManager', () => { assert.isTrue(SelectionManager.getInstance() instanceof SelectionManager) }) }) describe('#setRootElement', () => { it('doit injecter le root element', () => { selectionManager.setRootElement(document) expect(document).to.equal(selectionManager.rootElement) }) }) describe('#setEvents', () => { it('doit injecter le manager d\'evenement', () => { const events = EventManager.getInstance() selectionManager.setEvents(events) expect(events).to.eql(selectionManager.events) }) }) describe('#create', () => { it('doit retourner un objet Selection contenant l\'element selectionné', () => { const bookBuilder = BookBuilder.getInstance() bookBuilder.setRootElement($(document).find('body').get(0)) .setPages(pages).build().print() selectTextInDom($(document).find('p').get(0)) const selection = selectionManager.create() expect(selection).to.be.instanceOf(Selection) expect(selection.content).to.contains($(content).first().text()) }) }) // TODO: Test non réussi, à retravailler describe('#initDispatcher', () => { it('s\'assurer que l\'événement textSelected a été lancé et contient le contenu selectionné', () => { const jsdom = new JSDOM('<!doctype html><html><body></body></html>') const { window } = jsdom const { document } = window const myJquery = jquery(window) const rootElement = myJquery(document).find('body').get(0) BookBuilder .getInstance() .setRootElement(rootElement) .setPages(pages) .build() .print() .events.subscribe(Events.textSelected, selection => { expect(selection.content).to.contains($(content).first().text()) }) selectTextInDom(rootElement) $(rootElement).trigger('click') }) }) })