forked from Txio-labs/txio
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathContextToolbar.test.tsx
More file actions
79 lines (66 loc) · 2.02 KB
/
Copy pathContextToolbar.test.tsx
File metadata and controls
79 lines (66 loc) · 2.02 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
import { useState } from 'react';
import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { describe, expect, it, vi } from 'vitest';
import { ContextToolbar } from './ContextToolbar';
const ToolbarHarness = () => {
const [isFilterOpen, setIsFilterOpen] = useState(false);
const [filterQuery, setFilterQuery] = useState('');
const handleToggleFilter = () => {
if (isFilterOpen) {
setFilterQuery('');
}
setIsFilterOpen(!isFilterOpen);
};
return (
<>
<ContextToolbar
mode="collections"
isFilterOpen={isFilterOpen}
filterQuery={filterQuery}
onFilterQueryChange={setFilterQuery}
onToggleFilter={handleToggleFilter}
/>
<output aria-label="Current filter">{filterQuery}</output>
</>
);
};
describe('ContextToolbar collection filter', () => {
it('opens an accessible, focused filter input', () => {
render(
<ContextToolbar
mode="collections"
isFilterOpen
filterQuery=""
onFilterQueryChange={vi.fn()}
/>
);
const input = screen.getByRole('searchbox', {
name: 'Filter collections'
});
expect(input).toHaveFocus();
expect(input).toHaveAttribute(
'placeholder',
'Filter by name or RPC method...'
);
});
it('updates the query and clears it when Escape closes the filter', async () => {
const user = userEvent.setup();
render(<ToolbarHarness />);
await user.click(screen.getByRole('button', {
name: 'Filter collections'
}));
const input = screen.getByRole('searchbox', {
name: 'Filter collections'
});
await user.type(input, 'sui_getObject');
expect(screen.getByRole('status', {
name: 'Current filter'
})).toHaveTextContent('sui_getObject');
await user.keyboard('{Escape}');
expect(screen.queryByRole('searchbox')).not.toBeInTheDocument();
expect(screen.getByRole('status', {
name: 'Current filter'
})).toBeEmptyDOMElement();
});
});