-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathmodus-wc-content-tree.spec.ts
More file actions
82 lines (72 loc) · 2.73 KB
/
Copy pathmodus-wc-content-tree.spec.ts
File metadata and controls
82 lines (72 loc) · 2.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import { newSpecPage } from '@stencil/core/testing';
import { ModusWcContentTree } from './modus-wc-content-tree';
describe('modus-wc-content-tree', () => {
it('should render with default props', async () => {
const page = await newSpecPage({
components: [ModusWcContentTree],
html: '<modus-wc-content-tree></modus-wc-content-tree>',
});
expect(page.root).toMatchSnapshot();
});
it('should render with custom props', async () => {
const page = await newSpecPage({
components: [ModusWcContentTree],
html: `<modus-wc-content-tree
custom-class="test-class"
expand-all="true"
multi-select="true"
selected-values='["item1", "item2"]'>
</modus-wc-content-tree>`,
});
expect(page.root).toMatchSnapshot();
});
it('should filter nodes based on search input', async () => {
const page = await newSpecPage({
components: [ModusWcContentTree],
html: `<modus-wc-content-tree include-search="true">
<modus-wc-tree-item value="item1">Item 1</modus-wc-tree-item>
<modus-wc-tree-item value="item2">Item 2</modus-wc-tree-item>
<modus-wc-tree-item value="item3">Item 3</modus-wc-tree-item>
</modus-wc-content-tree>`,
});
const searchInput = page.root!.querySelector('input[type="search"]');
expect(searchInput as HTMLInputElement).toBeDefined();
if (searchInput) {
(searchInput as HTMLInputElement).value = 'Item 2';
searchInput.dispatchEvent(new Event('input'));
await page.waitForChanges();
const visibleItems = page.root!.querySelectorAll(
'modus-wc-tree-item:not([hidden])'
);
expect(visibleItems.length).toBe(1);
expect(visibleItems[0].getAttribute('value')).toBe('item2');
}
});
it('clears filter on Escape key', async () => {
const page = await newSpecPage({
components: [ModusWcContentTree],
html: `
<modus-wc-content-tree>
<modus-wc-tree-item label="Alpha"></modus-wc-tree-item>
<modus-wc-tree-item label="Beta"></modus-wc-tree-item>
</modus-wc-content-tree>
`,
});
const input = page.root!.querySelector('modus-wc-text-input')!;
input.dispatchEvent(
new CustomEvent('inputChange', {
bubbles: true,
composed: true,
})
);
await page.waitForChanges();
// Now press Escape
input.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape' }));
await page.waitForChanges();
// Assert all items visible
const items = page.root!.querySelectorAll('modus-wc-tree-item');
items.forEach((item) => {
expect((item as HTMLElement).style.display).toBe('');
});
});
});