@d3fc/d3fc-element
Version:
Custom HTML elements that make it easier to create responsive visualisations that integrate easily with other UI frameworks (e.g. React, Angular)
51 lines (42 loc) • 1.88 kB
JavaScript
import requestRedraw from '../src/requestRedraw';
describe('document', () => {
beforeEach(() => {
global.requestAnimationFrame = () => {};
});
afterEach(() => {
delete global.requestAnimationFrame;
// Jest triggers test environment setup/teardown per test suite,
// not per test, so we reset '__d3fc-elements__' after each test here.
delete document['__d3fc-elements__'];
});
it('should enqueue a single element', () => {
document.body.innerHTML = '<div></div>';
const element = document.querySelector('div');
requestRedraw(element);
expect(document['__d3fc-elements__'].queue).toEqual([element]);
});
it('should not enqueue a duplicate element', () => {
document.body.innerHTML = '<div></div>';
const element = document.querySelector('div');
requestRedraw(element);
requestRedraw(element);
expect(document['__d3fc-elements__'].queue).toEqual([element]);
});
it('should enqueue an ancestor and drop the original element', () => {
document.body.innerHTML = '<div><a></a></div>';
let element = document.querySelector('a');
requestRedraw(element);
expect(document['__d3fc-elements__'].queue).toEqual([element]);
element = document.querySelector('div');
requestRedraw(element);
expect(document['__d3fc-elements__'].queue).toEqual([element]);
});
it('should not enqueue element if an ancestor is enqueued', () => {
document.body.innerHTML = '<div><a></a></div>';
let element = document.querySelector('div');
requestRedraw(element);
expect(document['__d3fc-elements__'].queue).toEqual([element]);
requestRedraw(document.querySelector('a'));
expect(document['__d3fc-elements__'].queue).toEqual([element]);
});
});