als-document
Version:
A powerful HTML parser & DOM manipulation library for both backend and frontend.
68 lines (55 loc) • 2.31 kB
JavaScript
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']);
});
});