-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathgetKeyForNode.test.ts
More file actions
23 lines (18 loc) · 1019 Bytes
/
Copy pathgetKeyForNode.test.ts
File metadata and controls
23 lines (18 loc) · 1019 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import { describe, expect, it, run } from 'https://deno.land/x/tincan@1.0.1/mod.ts';
import { evaluateXPathToFirstNode } from 'https://esm.sh/fontoxpath@3.29.0';
import { parseXmlDocument } from 'https://esm.sh/slimdom@4.0.1';
import { getKeyForNode } from './getKeyForNode.ts';
describe('getKeyForNode()', () => {
it('for nodes without identifiers', () => {
const dom = parseXmlDocument(`<a><b /><x><c /></x></a>`);
expect(getKeyForNode(evaluateXPathToFirstNode('//a', dom) as Node)).toBe('node-key--0');
expect(getKeyForNode(evaluateXPathToFirstNode('//b', dom) as Node)).toBe('node-key--0-0');
expect(getKeyForNode(evaluateXPathToFirstNode('//c', dom) as Node)).toBe('node-key--0-1-0');
});
it('for nodes with identifiers', () => {
const dom = parseXmlDocument(`<x><a id="foo"><b /></a></x>`);
expect(getKeyForNode(evaluateXPathToFirstNode('//a', dom) as Node)).toBe('node-key--foo');
expect(getKeyForNode(evaluateXPathToFirstNode('//b', dom) as Node)).toBe('node-key--foo-0');
});
});
run();