UNPKG

als-document

Version:

A powerful HTML parser & DOM manipulation library for both backend and frontend.

68 lines (55 loc) 2.31 kB
const { describe, it, beforeEach } = require('node:test'); const assert = require('node:assert'); const { Node, Root, TextNode, Document } = require('../index') describe('NodeClassList', () => { let node; beforeEach(() => { node = new Node('div'); }); it('className', () => { node.setAttribute('class','some test') assert(node.className === 'some test') }) it('initially has no classes', () => { assert.deepStrictEqual(node.classList.classes, []); }); it('adds a class', () => { node.classList.add('test-class'); assert.deepStrictEqual(node.classList.classes, ['test-class']); assert.strictEqual(node.attributes.class, 'test-class'); }); it('removes a class', () => { node.attributes.class = 'test-class another-class'; node.classList.remove('test-class'); assert.deepStrictEqual(node.classList.classes, ['another-class']); }); it('does not remove a class that does not exist', () => { node.attributes.class = 'test-class'; node.classList.remove('nonexistent-class'); assert.deepStrictEqual(node.classList.classes, ['test-class']); }); it('toggles a class off if it is present', () => { node.attributes.class = 'test-class'; node.classList.toggle('test-class'); assert.deepStrictEqual(node.classList.classes, []); }); it('toggles a class on if it is not present', () => { node.classList.toggle('test-class'); assert.deepStrictEqual(node.classList.classes, ['test-class']); }); it('replaces an old class with a new one', () => { node.attributes.class = 'old-class'; node.classList.replace('old-class', 'new-class'); assert.deepStrictEqual(node.classList.classes, ['new-class']); }); it('contains checks for the presence of a class', () => { node.attributes.class = 'test-class'; assert(node.classList.contains('test-class')); assert(!node.classList.contains('nonexistent-class')); }); it('sets multiple classes', () => { node.classList.classes = ['class1', 'class2']; assert.strictEqual(node.attributes.class, 'class1 class2'); assert.deepStrictEqual(node.classList.classes, ['class1', 'class2']); }); });