UNPKG

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

58 lines (39 loc) 1.52 kB
import { insertHtml, byId, removeElement, createElement, generateId } from './assets/helpers'; import addClass from '../addClass'; const testID = generateId('AddClass'); describe('"addClass"', () => { let testNode: HTMLElement; beforeAll(() => { insertHtml(`<div id="${testID}"></div>`); testNode = byId(testID); }); beforeEach(() => { testNode.className = ''; }); afterAll(() => removeElement(testID)); it('Adds a given CSS class to a DOM element', () => { expect(testNode.className).toBe(''); addClass(testNode, 'inserted'); expect(testNode.className).toBe('inserted'); }); it('Does not add a given CSS class twice to a DOM element', () => { testNode.className = 'inserted'; expect(testNode.className).toBe('inserted'); addClass(testNode, 'inserted'); expect(testNode.className).toBe('inserted'); }); it('Returns the given element', () => { const div = createElement('div'); expect(addClass(div, 'inserted')).toBe(div); }); describe('Multiple class names', () => { it('Adds several CSS classes to a DOM element', () => { testNode.className = ''; addClass(testNode, ['inserted', 'added', 'class3']); expect(testNode.className).toBe('inserted added class3'); }); it('Only adds unset CSS classes to a DOM element', () => { testNode.className = 'inserted class3'; addClass(testNode, ['inserted', 'added', 'class3']); expect(testNode.className).toBe('inserted class3 added'); }); }); });