web-highlighter
Version:
✨A no-runtime dependency lib for text highlighting & persistence on any website ✨🖍️
49 lines (39 loc) • 1.46 kB
text/typescript
import { expect } from 'chai';
import { readFileSync } from 'fs';
import { resolve } from 'path';
import jsdomGlobal from 'jsdom-global';
import Highlighter from '../src/index';
import HighlightSource from '../src/model/source';
describe('Integration Usage', function () {
this.timeout(50000);
let cleanup;
beforeEach(() => {
cleanup = jsdomGlobal();
});
it('should work correctly when root contains no dom', () => {
const html = readFileSync(resolve(__dirname, 'fixtures', 'index.html'), 'utf-8');
document.body.innerHTML = html;
let highlighter = new Highlighter({
$root: document.querySelector('p')
});
let s: HighlightSource;
(highlighter as any).on(Highlighter.event.CREATE, data => {
s = data.sources[0];
});
const range = document.createRange();
const $p = document.querySelectorAll('p')[0];
range.setStart($p.childNodes[0], 0);
range.setEnd($p.childNodes[0], 17);
highlighter.fromRange(range);
const htmlHighlighted = document.body.innerHTML;
document.body.innerHTML = html;
highlighter = new Highlighter({
$root: document.querySelector('p')
});
highlighter.fromStore(s.startMeta, s.endMeta, s.text, s.id);
expect(document.body.innerHTML).to.be.equal(htmlHighlighted);
});
afterEach(() => {
cleanup();
});
});