Repository URL to install this package:
|
Version:
0.6.0 ▾
|
import { getDataTrackingEl } from './getTrackingClickHandler';
const wrapEl = el => {
const wrapped = document.createElement('div');
wrapped.appendChild(el);
return wrapped;
};
describe('getDataTrackingEl', () => {
let clickedTarget;
let trackingEl;
beforeEach(() => {
clickedTarget = document.createElement('span');
trackingEl = document.createElement('button');
trackingEl.dataset.tracking = {
event: 'clicked it',
};
});
it('does not find tracking element when there are no tracking-related data attributes in parents', () => {
const wrapped = wrapEl(wrapEl(wrapEl(wrapEl(clickedTarget))));
trackingEl.dataset.tracking = '';
trackingEl.appendChild(wrapped);
expect(getDataTrackingEl(clickedTarget)).toEqual(null);
});
it('finds tracking element when a direct child is the target', () => {
trackingEl.appendChild(clickedTarget);
expect(getDataTrackingEl(clickedTarget)).toEqual(trackingEl);
});
it('finds tracking element when target is 2 levels deep', () => {
const wrapped = wrapEl(clickedTarget);
trackingEl.appendChild(wrapped);
expect(getDataTrackingEl(clickedTarget)).toEqual(trackingEl);
});
it('finds tracking element when target is 5 levels deep', () => {
const wrapped = wrapEl(wrapEl(wrapEl(wrapEl(clickedTarget))));
trackingEl.appendChild(wrapped);
expect(getDataTrackingEl(clickedTarget)).toEqual(trackingEl);
});
it('does not throw exception checking SVGs on IE 11', () => {
// In IE11 an SVG's dataset is undefined
clickedTarget = {};
expect(() => getDataTrackingEl(clickedTarget)).not.toThrow(TypeError);
});
});