vanillajs-browser-helpers
Version:
Collection of convenience code snippets (helpers) that aims to make it a little easier to work with vanilla JS in the browser
65 lines (49 loc) • 1.6 kB
text/typescript
import { insertHtml, removeElement, byId, generateId } from './assets/helpers';
import elementData, { resetCache } from '../elementData';
const testID = generateId('ElementData');
describe('"elementData"', () => {
let testNode: HTMLElement;
beforeAll(() => {
insertHtml(`<div id="${testID}"></div>`);
testNode = byId(testID);
});
beforeEach(() => resetCache());
afterAll(() => removeElement(testNode));
it('Returns an object with all data stored for the given element, when no key is given', () => {
elementData(testNode, 'string', 'data');
elementData(testNode, 'number', 1);
elementData(testNode, 'boolean', true);
elementData(testNode, 'object', { a: 1 });
elementData(testNode, 'array', [1]);
elementData(testNode, 'null', null);
expect(elementData(testNode)).toEqual({
string: 'data',
number: 1,
boolean: true,
object: { a: 1 },
array: [1],
null: null
});
});
describe('Stores given data under the given key for a given element', () => {
it.each([
null,
{ a: 1 },
[1],
'string',
1,
true
])('data: %s', (data) => {
elementData(testNode, 'key', data);
expect(elementData(testNode, 'key')).toBe(data);
});
});
describe('Returns undefined when', () => {
it('No data is stored for the given element', () => {
expect(elementData(testNode)).toBeUndefined();
});
it('No data is stored for the given element, under the given key', () => {
expect(elementData(testNode, 'key')).toBeUndefined();
});
});
});