forked from containers/podman-desktop
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ContributionActions.spec.ts
110 lines (99 loc) · 2.63 KB
/
ContributionActions.spec.ts
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import '@testing-library/jest-dom/vitest';
import { beforeAll, test, expect, vi } from 'vitest';
import { fireEvent, render, screen } from '@testing-library/svelte';
import ContributionActions from '/@/lib/actions/ContributionActions.svelte';
const executeCommand = vi.fn();
beforeAll(() => {
(window as any).executeCommand = executeCommand;
executeCommand.mockImplementation(() => {});
(window.events as unknown) = {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
receive: (_channel: string, func: any) => {
func();
},
};
});
test('Expect no ListItemButtonIcon', async () => {
render(ContributionActions, {
args: [],
contributions: [],
onError: () => {},
});
const imgs = screen.queryAllByRole('img');
expect(imgs).lengthOf(0);
});
test('Expect one ListItemButtonIcon', async () => {
render(ContributionActions, {
args: [],
contributions: [
{
command: 'dummy.command',
title: 'dummy-title',
},
],
onError: () => {},
dropdownMenu: true,
});
const item = screen.getByText('dummy-title');
expect(item).toBeInTheDocument();
});
test('Expect executeCommand to be called', async () => {
render(ContributionActions, {
args: [],
contributions: [
{
command: 'dummy.command',
title: 'dummy-title',
},
],
onError: () => {},
dropdownMenu: true,
});
const item = screen.getByText('dummy-title');
await fireEvent.click(item);
expect(executeCommand).toBeCalledWith('dummy.command');
});
test('Expect executeCommand to be called with sanitize object', async () => {
render(ContributionActions, {
args: [
{
nonSerializable: () => {},
serializable: 'hello',
},
],
contributions: [
{
command: 'dummy.command',
title: 'dummy-title',
},
],
onError: () => {},
dropdownMenu: true,
});
const item = screen.getByText('dummy-title');
await fireEvent.click(item);
expect(executeCommand).toBeCalledWith('dummy.command', { serializable: 'hello' });
});
test('Expect executeCommand to be called with sanitize object nested', async () => {
render(ContributionActions, {
args: [
{
parent: {
nonSerializable: () => {},
serializable: 'hello',
},
},
],
contributions: [
{
command: 'dummy.command',
title: 'dummy-title',
},
],
onError: () => {},
dropdownMenu: true,
});
const item = screen.getByText('dummy-title');
await fireEvent.click(item);
expect(executeCommand).toBeCalledWith('dummy.command', { parent: { serializable: 'hello' } });
});