@instructure/ui-menu 9.2.1-snapshot-1 → 9.2.1-snapshot-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -1
- package/es/Menu/MenuItem/__new-tests__/MenuItem.test.js +4 -3
- package/es/Menu/MenuItemGroup/__new-tests__/MenuItemGroup.test.js +6 -5
- package/es/Menu/__new-tests__/Menu.test.js +25 -10
- package/lib/Menu/MenuItem/__new-tests__/MenuItem.test.js +4 -3
- package/lib/Menu/MenuItemGroup/__new-tests__/MenuItemGroup.test.js +6 -5
- package/lib/Menu/__new-tests__/Menu.test.js +25 -10
- package/package.json +21 -20
- package/src/Menu/MenuItem/__new-tests__/MenuItem.test.tsx +4 -3
- package/src/Menu/MenuItemGroup/__new-tests__/MenuItemGroup.test.tsx +6 -5
- package/src/Menu/__new-tests__/Menu.test.tsx +32 -11
- package/tsconfig.build.tsbuildinfo +1 -1
- package/types/Menu/MenuItem/__new-tests__/MenuItem.test.d.ts.map +1 -1
- package/types/Menu/MenuItemGroup/__new-tests__/MenuItemGroup.test.d.ts.map +1 -1
- package/types/Menu/__new-tests__/Menu.test.d.ts.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
-
## [9.2.1-snapshot-
|
|
6
|
+
## [9.2.1-snapshot-2](https://github.com/instructure/instructure-ui/compare/v9.2.0...v9.2.1-snapshot-2) (2024-07-10)
|
|
7
7
|
|
|
8
8
|
**Note:** Version bump only for package @instructure/ui-menu
|
|
9
9
|
|
|
@@ -25,6 +25,7 @@ var _MenuItem, _MenuItem2, _ExtendedMenuItem, _MenuItem3, _MenuItem4, _MenuItem5
|
|
|
25
25
|
|
|
26
26
|
import React from 'react';
|
|
27
27
|
import { fireEvent, render, screen } from '@testing-library/react';
|
|
28
|
+
import { vi } from 'vitest';
|
|
28
29
|
import '@testing-library/jest-dom';
|
|
29
30
|
import { MenuItem } from '../index';
|
|
30
31
|
const ExtendedMenuItem = ({
|
|
@@ -54,7 +55,7 @@ describe('<MenuItem />', () => {
|
|
|
54
55
|
expect(menuItem).toHaveAttribute('to', '/example');
|
|
55
56
|
});
|
|
56
57
|
it('should call onSelect after click', () => {
|
|
57
|
-
const onSelect =
|
|
58
|
+
const onSelect = vi.fn();
|
|
58
59
|
render( /*#__PURE__*/React.createElement(MenuItem, {
|
|
59
60
|
onSelect: onSelect,
|
|
60
61
|
value: "foo"
|
|
@@ -64,7 +65,7 @@ describe('<MenuItem />', () => {
|
|
|
64
65
|
expect(onSelect).toHaveBeenCalledWith(expect.any(Object), 'foo', true, expect.any(Object));
|
|
65
66
|
});
|
|
66
67
|
it('should call onClick after click', () => {
|
|
67
|
-
const onClick =
|
|
68
|
+
const onClick = vi.fn();
|
|
68
69
|
render( /*#__PURE__*/React.createElement(MenuItem, {
|
|
69
70
|
onClick: onClick,
|
|
70
71
|
value: "foo"
|
|
@@ -104,7 +105,7 @@ describe('<MenuItem />', () => {
|
|
|
104
105
|
render( /*#__PURE__*/React.createElement(MenuItem, {
|
|
105
106
|
type: "checkbox",
|
|
106
107
|
selected: true,
|
|
107
|
-
onSelect:
|
|
108
|
+
onSelect: vi.fn()
|
|
108
109
|
}, "Hello"));
|
|
109
110
|
const menuItem = screen.getByRole('menuitemcheckbox');
|
|
110
111
|
expect(menuItem).toHaveAttribute('aria-checked', 'true');
|
|
@@ -25,6 +25,7 @@ var _MenuItemGroup, _MenuItemGroup2, _MenuItemGroup3, _MenuItemGroup4, _MenuItem
|
|
|
25
25
|
|
|
26
26
|
import React from 'react';
|
|
27
27
|
import { fireEvent, render, screen } from '@testing-library/react';
|
|
28
|
+
import { vi } from 'vitest';
|
|
28
29
|
import '@testing-library/jest-dom';
|
|
29
30
|
import { MenuItem } from '../../MenuItem';
|
|
30
31
|
import { MenuItemSeparator } from '../../MenuItemSeparator';
|
|
@@ -100,7 +101,7 @@ describe('<MenuItemGroup />', () => {
|
|
|
100
101
|
it('should set selected from selected prop', () => {
|
|
101
102
|
render( /*#__PURE__*/React.createElement(MenuItemGroup, {
|
|
102
103
|
label: "Select one",
|
|
103
|
-
onSelect:
|
|
104
|
+
onSelect: vi.fn(),
|
|
104
105
|
selected: [1]
|
|
105
106
|
}, _MenuItem3 || (_MenuItem3 = /*#__PURE__*/React.createElement(MenuItem, null, "Foo")), _MenuItem4 || (_MenuItem4 = /*#__PURE__*/React.createElement(MenuItem, null, "Bar")), _MenuItemSeparator2 || (_MenuItemSeparator2 = /*#__PURE__*/React.createElement(MenuItemSeparator, null))));
|
|
106
107
|
const menuItems = screen.getAllByRole('menuitemradio');
|
|
@@ -118,7 +119,7 @@ describe('<MenuItemGroup />', () => {
|
|
|
118
119
|
}, "Foo")), /*#__PURE__*/React.createElement(MenuItem, {
|
|
119
120
|
key: "bar",
|
|
120
121
|
selected: true,
|
|
121
|
-
onSelect:
|
|
122
|
+
onSelect: vi.fn()
|
|
122
123
|
}, "Bar")));
|
|
123
124
|
const menuItems = screen.getAllByRole('menuitemcheckbox');
|
|
124
125
|
expect(menuItems).toHaveLength(2);
|
|
@@ -132,7 +133,7 @@ describe('<MenuItemGroup />', () => {
|
|
|
132
133
|
defaultSelected: true
|
|
133
134
|
}, "Foo")), /*#__PURE__*/React.createElement(MenuItem, {
|
|
134
135
|
selected: true,
|
|
135
|
-
onSelect:
|
|
136
|
+
onSelect: vi.fn()
|
|
136
137
|
}, "Bar")));
|
|
137
138
|
const menuItems = screen.getAllByRole('menuitemradio');
|
|
138
139
|
expect(menuItems).toHaveLength(2);
|
|
@@ -140,7 +141,7 @@ describe('<MenuItemGroup />', () => {
|
|
|
140
141
|
expect(menuItems[1]).toHaveAttribute('aria-checked', 'false');
|
|
141
142
|
});
|
|
142
143
|
it('calls onSelect when items are selected', () => {
|
|
143
|
-
const onSelect =
|
|
144
|
+
const onSelect = vi.fn();
|
|
144
145
|
render( /*#__PURE__*/React.createElement(MenuItemGroup, {
|
|
145
146
|
label: "Select one",
|
|
146
147
|
onSelect: onSelect,
|
|
@@ -153,7 +154,7 @@ describe('<MenuItemGroup />', () => {
|
|
|
153
154
|
expect(onSelect.mock.calls[0][2]).toEqual(true);
|
|
154
155
|
});
|
|
155
156
|
it('does not call onSelect when disabled', () => {
|
|
156
|
-
const onSelect =
|
|
157
|
+
const onSelect = vi.fn();
|
|
157
158
|
render( /*#__PURE__*/React.createElement(MenuItemGroup, {
|
|
158
159
|
label: "Select one",
|
|
159
160
|
onSelect: onSelect,
|
|
@@ -24,11 +24,23 @@ var _Menu, _Menu2, _Menu3, _Menu4, _MenuItem, _MenuItem2, _MenuItem3, _Menu5, _b
|
|
|
24
24
|
*/
|
|
25
25
|
import React from 'react';
|
|
26
26
|
import { render, screen, fireEvent } from '@testing-library/react';
|
|
27
|
+
import { vi } from 'vitest';
|
|
27
28
|
import { userEvent } from '@testing-library/user-event';
|
|
28
29
|
import '@testing-library/jest-dom';
|
|
29
30
|
import { runAxeCheck } from '@instructure/ui-axe-check';
|
|
30
31
|
import { Menu, MenuItem, MenuItemSeparator } from '../index';
|
|
31
32
|
describe('<Menu />', () => {
|
|
33
|
+
let consoleWarningMock;
|
|
34
|
+
let consoleErrorMock;
|
|
35
|
+
beforeEach(() => {
|
|
36
|
+
// Mocking console to prevent test output pollution and expect for messages
|
|
37
|
+
consoleWarningMock = vi.spyOn(console, 'warn').mockImplementation(() => {});
|
|
38
|
+
consoleErrorMock = vi.spyOn(console, 'error').mockImplementation(() => {});
|
|
39
|
+
});
|
|
40
|
+
afterEach(() => {
|
|
41
|
+
consoleWarningMock.mockRestore();
|
|
42
|
+
consoleErrorMock.mockRestore();
|
|
43
|
+
});
|
|
32
44
|
describe('without a trigger', () => {
|
|
33
45
|
it('should render', () => {
|
|
34
46
|
render(_Menu || (_Menu = /*#__PURE__*/React.createElement(Menu, {
|
|
@@ -69,7 +81,7 @@ describe('<Menu />', () => {
|
|
|
69
81
|
expect(axeCheck).toBe(true);
|
|
70
82
|
});
|
|
71
83
|
it('should call onSelect when menu item is selected', async () => {
|
|
72
|
-
const onSelect =
|
|
84
|
+
const onSelect = vi.fn();
|
|
73
85
|
const _render4 = render( /*#__PURE__*/React.createElement(Menu, {
|
|
74
86
|
label: "Settings",
|
|
75
87
|
onSelect: onSelect
|
|
@@ -83,7 +95,7 @@ describe('<Menu />', () => {
|
|
|
83
95
|
expect(onSelect.mock.calls[0][1]).toEqual('Test');
|
|
84
96
|
});
|
|
85
97
|
it('should not call onSelect when disabled', () => {
|
|
86
|
-
const onSelect =
|
|
98
|
+
const onSelect = vi.fn();
|
|
87
99
|
const _render5 = render( /*#__PURE__*/React.createElement(Menu, {
|
|
88
100
|
label: "Settings",
|
|
89
101
|
onSelect: onSelect,
|
|
@@ -92,12 +104,15 @@ describe('<Menu />', () => {
|
|
|
92
104
|
value: "Account"
|
|
93
105
|
}, "Account")))),
|
|
94
106
|
getByText = _render5.getByText;
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
107
|
+
const itemText = getByText('Account');
|
|
108
|
+
const menu = screen.getByRole('menu');
|
|
109
|
+
const menuItem = screen.getByRole('menuitem');
|
|
110
|
+
expect(itemText).toBeInTheDocument();
|
|
111
|
+
expect(menu).toHaveAttribute('aria-disabled', 'true');
|
|
112
|
+
expect(menuItem).toHaveAttribute('aria-disabled', 'true');
|
|
98
113
|
});
|
|
99
114
|
it('should provide a menu ref', () => {
|
|
100
|
-
const menuRef =
|
|
115
|
+
const menuRef = vi.fn();
|
|
101
116
|
render( /*#__PURE__*/React.createElement(Menu, {
|
|
102
117
|
label: "Settings",
|
|
103
118
|
menuRef: menuRef
|
|
@@ -155,7 +170,7 @@ describe('<Menu />', () => {
|
|
|
155
170
|
expect(menu).toHaveAttribute('aria-labelledby', trigger.getAttribute('id'));
|
|
156
171
|
});
|
|
157
172
|
it('should call onFocus on focus', () => {
|
|
158
|
-
const onFocus =
|
|
173
|
+
const onFocus = vi.fn();
|
|
159
174
|
const _render6 = render( /*#__PURE__*/React.createElement(Menu, {
|
|
160
175
|
trigger: _button2 || (_button2 = /*#__PURE__*/React.createElement("button", null, "More")),
|
|
161
176
|
onFocus: onFocus
|
|
@@ -227,7 +242,7 @@ describe('<Menu />', () => {
|
|
|
227
242
|
expect(menuItem2).toBeInTheDocument();
|
|
228
243
|
});
|
|
229
244
|
it('should provide a menu ref', () => {
|
|
230
|
-
const menuRef =
|
|
245
|
+
const menuRef = vi.fn();
|
|
231
246
|
render( /*#__PURE__*/React.createElement(Menu, {
|
|
232
247
|
trigger: _button4 || (_button4 = /*#__PURE__*/React.createElement("button", null, "More")),
|
|
233
248
|
defaultShow: true,
|
|
@@ -239,7 +254,7 @@ describe('<Menu />', () => {
|
|
|
239
254
|
expect(menuRef).toHaveBeenCalledWith(menu);
|
|
240
255
|
});
|
|
241
256
|
it('should provide a popoverRef ref', () => {
|
|
242
|
-
const popoverRef =
|
|
257
|
+
const popoverRef = vi.fn();
|
|
243
258
|
render( /*#__PURE__*/React.createElement(Menu, {
|
|
244
259
|
trigger: _button5 || (_button5 = /*#__PURE__*/React.createElement("button", null, "More")),
|
|
245
260
|
defaultShow: true,
|
|
@@ -250,7 +265,7 @@ describe('<Menu />', () => {
|
|
|
250
265
|
expect(popoverRef).toHaveBeenCalled();
|
|
251
266
|
});
|
|
252
267
|
it('should call onToggle on click', () => {
|
|
253
|
-
const onToggle =
|
|
268
|
+
const onToggle = vi.fn();
|
|
254
269
|
render( /*#__PURE__*/React.createElement(Menu, {
|
|
255
270
|
trigger: _button6 || (_button6 = /*#__PURE__*/React.createElement("button", null, "More")),
|
|
256
271
|
onToggle: onToggle
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
var _react = _interopRequireDefault(require("react"));
|
|
5
5
|
var _react2 = require("@testing-library/react");
|
|
6
|
+
var _vitest = require("vitest");
|
|
6
7
|
require("@testing-library/jest-dom");
|
|
7
8
|
var _index = require("../index");
|
|
8
9
|
var _MenuItem, _MenuItem2, _ExtendedMenuItem, _MenuItem3, _MenuItem4, _MenuItem5, _MenuItem6, _MenuItem7, _MenuItem8, _MenuItem9;
|
|
@@ -56,7 +57,7 @@ describe('<MenuItem />', () => {
|
|
|
56
57
|
expect(menuItem).toHaveAttribute('to', '/example');
|
|
57
58
|
});
|
|
58
59
|
it('should call onSelect after click', () => {
|
|
59
|
-
const onSelect =
|
|
60
|
+
const onSelect = _vitest.vi.fn();
|
|
60
61
|
(0, _react2.render)( /*#__PURE__*/_react.default.createElement(_index.MenuItem, {
|
|
61
62
|
onSelect: onSelect,
|
|
62
63
|
value: "foo"
|
|
@@ -66,7 +67,7 @@ describe('<MenuItem />', () => {
|
|
|
66
67
|
expect(onSelect).toHaveBeenCalledWith(expect.any(Object), 'foo', true, expect.any(Object));
|
|
67
68
|
});
|
|
68
69
|
it('should call onClick after click', () => {
|
|
69
|
-
const onClick =
|
|
70
|
+
const onClick = _vitest.vi.fn();
|
|
70
71
|
(0, _react2.render)( /*#__PURE__*/_react.default.createElement(_index.MenuItem, {
|
|
71
72
|
onClick: onClick,
|
|
72
73
|
value: "foo"
|
|
@@ -106,7 +107,7 @@ describe('<MenuItem />', () => {
|
|
|
106
107
|
(0, _react2.render)( /*#__PURE__*/_react.default.createElement(_index.MenuItem, {
|
|
107
108
|
type: "checkbox",
|
|
108
109
|
selected: true,
|
|
109
|
-
onSelect:
|
|
110
|
+
onSelect: _vitest.vi.fn()
|
|
110
111
|
}, "Hello"));
|
|
111
112
|
const menuItem = _react2.screen.getByRole('menuitemcheckbox');
|
|
112
113
|
expect(menuItem).toHaveAttribute('aria-checked', 'true');
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
var _react = _interopRequireDefault(require("react"));
|
|
5
5
|
var _react2 = require("@testing-library/react");
|
|
6
|
+
var _vitest = require("vitest");
|
|
6
7
|
require("@testing-library/jest-dom");
|
|
7
8
|
var _MenuItem11 = require("../../MenuItem");
|
|
8
9
|
var _MenuItemSeparator5 = require("../../MenuItemSeparator");
|
|
@@ -102,7 +103,7 @@ describe('<MenuItemGroup />', () => {
|
|
|
102
103
|
it('should set selected from selected prop', () => {
|
|
103
104
|
(0, _react2.render)( /*#__PURE__*/_react.default.createElement(_index.MenuItemGroup, {
|
|
104
105
|
label: "Select one",
|
|
105
|
-
onSelect:
|
|
106
|
+
onSelect: _vitest.vi.fn(),
|
|
106
107
|
selected: [1]
|
|
107
108
|
}, _MenuItem3 || (_MenuItem3 = /*#__PURE__*/_react.default.createElement(_MenuItem11.MenuItem, null, "Foo")), _MenuItem4 || (_MenuItem4 = /*#__PURE__*/_react.default.createElement(_MenuItem11.MenuItem, null, "Bar")), _MenuItemSeparator2 || (_MenuItemSeparator2 = /*#__PURE__*/_react.default.createElement(_MenuItemSeparator5.MenuItemSeparator, null))));
|
|
108
109
|
const menuItems = _react2.screen.getAllByRole('menuitemradio');
|
|
@@ -120,7 +121,7 @@ describe('<MenuItemGroup />', () => {
|
|
|
120
121
|
}, "Foo")), /*#__PURE__*/_react.default.createElement(_MenuItem11.MenuItem, {
|
|
121
122
|
key: "bar",
|
|
122
123
|
selected: true,
|
|
123
|
-
onSelect:
|
|
124
|
+
onSelect: _vitest.vi.fn()
|
|
124
125
|
}, "Bar")));
|
|
125
126
|
const menuItems = _react2.screen.getAllByRole('menuitemcheckbox');
|
|
126
127
|
expect(menuItems).toHaveLength(2);
|
|
@@ -134,7 +135,7 @@ describe('<MenuItemGroup />', () => {
|
|
|
134
135
|
defaultSelected: true
|
|
135
136
|
}, "Foo")), /*#__PURE__*/_react.default.createElement(_MenuItem11.MenuItem, {
|
|
136
137
|
selected: true,
|
|
137
|
-
onSelect:
|
|
138
|
+
onSelect: _vitest.vi.fn()
|
|
138
139
|
}, "Bar")));
|
|
139
140
|
const menuItems = _react2.screen.getAllByRole('menuitemradio');
|
|
140
141
|
expect(menuItems).toHaveLength(2);
|
|
@@ -142,7 +143,7 @@ describe('<MenuItemGroup />', () => {
|
|
|
142
143
|
expect(menuItems[1]).toHaveAttribute('aria-checked', 'false');
|
|
143
144
|
});
|
|
144
145
|
it('calls onSelect when items are selected', () => {
|
|
145
|
-
const onSelect =
|
|
146
|
+
const onSelect = _vitest.vi.fn();
|
|
146
147
|
(0, _react2.render)( /*#__PURE__*/_react.default.createElement(_index.MenuItemGroup, {
|
|
147
148
|
label: "Select one",
|
|
148
149
|
onSelect: onSelect,
|
|
@@ -155,7 +156,7 @@ describe('<MenuItemGroup />', () => {
|
|
|
155
156
|
expect(onSelect.mock.calls[0][2]).toEqual(true);
|
|
156
157
|
});
|
|
157
158
|
it('does not call onSelect when disabled', () => {
|
|
158
|
-
const onSelect =
|
|
159
|
+
const onSelect = _vitest.vi.fn();
|
|
159
160
|
(0, _react2.render)( /*#__PURE__*/_react.default.createElement(_index.MenuItemGroup, {
|
|
160
161
|
label: "Select one",
|
|
161
162
|
onSelect: onSelect,
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
var _react = _interopRequireDefault(require("react"));
|
|
5
5
|
var _react2 = require("@testing-library/react");
|
|
6
|
+
var _vitest = require("vitest");
|
|
6
7
|
var _userEvent = require("@testing-library/user-event");
|
|
7
8
|
require("@testing-library/jest-dom");
|
|
8
9
|
var _runAxeCheck = require("@instructure/ui-axe-check/lib/runAxeCheck.js");
|
|
@@ -32,6 +33,17 @@ var _Menu, _Menu2, _Menu3, _Menu4, _MenuItem, _MenuItem2, _MenuItem3, _Menu5, _b
|
|
|
32
33
|
* SOFTWARE.
|
|
33
34
|
*/
|
|
34
35
|
describe('<Menu />', () => {
|
|
36
|
+
let consoleWarningMock;
|
|
37
|
+
let consoleErrorMock;
|
|
38
|
+
beforeEach(() => {
|
|
39
|
+
// Mocking console to prevent test output pollution and expect for messages
|
|
40
|
+
consoleWarningMock = _vitest.vi.spyOn(console, 'warn').mockImplementation(() => {});
|
|
41
|
+
consoleErrorMock = _vitest.vi.spyOn(console, 'error').mockImplementation(() => {});
|
|
42
|
+
});
|
|
43
|
+
afterEach(() => {
|
|
44
|
+
consoleWarningMock.mockRestore();
|
|
45
|
+
consoleErrorMock.mockRestore();
|
|
46
|
+
});
|
|
35
47
|
describe('without a trigger', () => {
|
|
36
48
|
it('should render', () => {
|
|
37
49
|
(0, _react2.render)(_Menu || (_Menu = /*#__PURE__*/_react.default.createElement(_index.Menu, {
|
|
@@ -72,7 +84,7 @@ describe('<Menu />', () => {
|
|
|
72
84
|
expect(axeCheck).toBe(true);
|
|
73
85
|
});
|
|
74
86
|
it('should call onSelect when menu item is selected', async () => {
|
|
75
|
-
const onSelect =
|
|
87
|
+
const onSelect = _vitest.vi.fn();
|
|
76
88
|
const _render4 = (0, _react2.render)( /*#__PURE__*/_react.default.createElement(_index.Menu, {
|
|
77
89
|
label: "Settings",
|
|
78
90
|
onSelect: onSelect
|
|
@@ -86,7 +98,7 @@ describe('<Menu />', () => {
|
|
|
86
98
|
expect(onSelect.mock.calls[0][1]).toEqual('Test');
|
|
87
99
|
});
|
|
88
100
|
it('should not call onSelect when disabled', () => {
|
|
89
|
-
const onSelect =
|
|
101
|
+
const onSelect = _vitest.vi.fn();
|
|
90
102
|
const _render5 = (0, _react2.render)( /*#__PURE__*/_react.default.createElement(_index.Menu, {
|
|
91
103
|
label: "Settings",
|
|
92
104
|
onSelect: onSelect,
|
|
@@ -95,12 +107,15 @@ describe('<Menu />', () => {
|
|
|
95
107
|
value: "Account"
|
|
96
108
|
}, "Account")))),
|
|
97
109
|
getByText = _render5.getByText;
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
110
|
+
const itemText = getByText('Account');
|
|
111
|
+
const menu = _react2.screen.getByRole('menu');
|
|
112
|
+
const menuItem = _react2.screen.getByRole('menuitem');
|
|
113
|
+
expect(itemText).toBeInTheDocument();
|
|
114
|
+
expect(menu).toHaveAttribute('aria-disabled', 'true');
|
|
115
|
+
expect(menuItem).toHaveAttribute('aria-disabled', 'true');
|
|
101
116
|
});
|
|
102
117
|
it('should provide a menu ref', () => {
|
|
103
|
-
const menuRef =
|
|
118
|
+
const menuRef = _vitest.vi.fn();
|
|
104
119
|
(0, _react2.render)( /*#__PURE__*/_react.default.createElement(_index.Menu, {
|
|
105
120
|
label: "Settings",
|
|
106
121
|
menuRef: menuRef
|
|
@@ -158,7 +173,7 @@ describe('<Menu />', () => {
|
|
|
158
173
|
expect(menu).toHaveAttribute('aria-labelledby', trigger.getAttribute('id'));
|
|
159
174
|
});
|
|
160
175
|
it('should call onFocus on focus', () => {
|
|
161
|
-
const onFocus =
|
|
176
|
+
const onFocus = _vitest.vi.fn();
|
|
162
177
|
const _render6 = (0, _react2.render)( /*#__PURE__*/_react.default.createElement(_index.Menu, {
|
|
163
178
|
trigger: _button2 || (_button2 = /*#__PURE__*/_react.default.createElement("button", null, "More")),
|
|
164
179
|
onFocus: onFocus
|
|
@@ -230,7 +245,7 @@ describe('<Menu />', () => {
|
|
|
230
245
|
expect(menuItem2).toBeInTheDocument();
|
|
231
246
|
});
|
|
232
247
|
it('should provide a menu ref', () => {
|
|
233
|
-
const menuRef =
|
|
248
|
+
const menuRef = _vitest.vi.fn();
|
|
234
249
|
(0, _react2.render)( /*#__PURE__*/_react.default.createElement(_index.Menu, {
|
|
235
250
|
trigger: _button4 || (_button4 = /*#__PURE__*/_react.default.createElement("button", null, "More")),
|
|
236
251
|
defaultShow: true,
|
|
@@ -242,7 +257,7 @@ describe('<Menu />', () => {
|
|
|
242
257
|
expect(menuRef).toHaveBeenCalledWith(menu);
|
|
243
258
|
});
|
|
244
259
|
it('should provide a popoverRef ref', () => {
|
|
245
|
-
const popoverRef =
|
|
260
|
+
const popoverRef = _vitest.vi.fn();
|
|
246
261
|
(0, _react2.render)( /*#__PURE__*/_react.default.createElement(_index.Menu, {
|
|
247
262
|
trigger: _button5 || (_button5 = /*#__PURE__*/_react.default.createElement("button", null, "More")),
|
|
248
263
|
defaultShow: true,
|
|
@@ -253,7 +268,7 @@ describe('<Menu />', () => {
|
|
|
253
268
|
expect(popoverRef).toHaveBeenCalled();
|
|
254
269
|
});
|
|
255
270
|
it('should call onToggle on click', () => {
|
|
256
|
-
const onToggle =
|
|
271
|
+
const onToggle = _vitest.vi.fn();
|
|
257
272
|
(0, _react2.render)( /*#__PURE__*/_react.default.createElement(_index.Menu, {
|
|
258
273
|
trigger: _button6 || (_button6 = /*#__PURE__*/_react.default.createElement("button", null, "More")),
|
|
259
274
|
onToggle: onToggle
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@instructure/ui-menu",
|
|
3
|
-
"version": "9.2.1-snapshot-
|
|
3
|
+
"version": "9.2.1-snapshot-2",
|
|
4
4
|
"description": "A dropdown menu component",
|
|
5
5
|
"author": "Instructure, Inc. Engineering and Product Design",
|
|
6
6
|
"module": "./es/index.js",
|
|
@@ -23,30 +23,31 @@
|
|
|
23
23
|
},
|
|
24
24
|
"license": "MIT",
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@instructure/ui-axe-check": "9.2.1-snapshot-
|
|
27
|
-
"@instructure/ui-babel-preset": "9.2.1-snapshot-
|
|
28
|
-
"@instructure/ui-color-utils": "9.2.1-snapshot-
|
|
29
|
-
"@instructure/ui-test-utils": "9.2.1-snapshot-
|
|
30
|
-
"@instructure/ui-themes": "9.2.1-snapshot-
|
|
26
|
+
"@instructure/ui-axe-check": "9.2.1-snapshot-2",
|
|
27
|
+
"@instructure/ui-babel-preset": "9.2.1-snapshot-2",
|
|
28
|
+
"@instructure/ui-color-utils": "9.2.1-snapshot-2",
|
|
29
|
+
"@instructure/ui-test-utils": "9.2.1-snapshot-2",
|
|
30
|
+
"@instructure/ui-themes": "9.2.1-snapshot-2",
|
|
31
31
|
"@testing-library/jest-dom": "^6.4.5",
|
|
32
32
|
"@testing-library/react": "^15.0.7",
|
|
33
|
-
"@testing-library/user-event": "^14.5.2"
|
|
33
|
+
"@testing-library/user-event": "^14.5.2",
|
|
34
|
+
"vitest": "^1.6.0"
|
|
34
35
|
},
|
|
35
36
|
"dependencies": {
|
|
36
37
|
"@babel/runtime": "^7.24.5",
|
|
37
|
-
"@instructure/console": "9.2.1-snapshot-
|
|
38
|
-
"@instructure/emotion": "9.2.1-snapshot-
|
|
39
|
-
"@instructure/shared-types": "9.2.1-snapshot-
|
|
40
|
-
"@instructure/ui-a11y-utils": "9.2.1-snapshot-
|
|
41
|
-
"@instructure/ui-dom-utils": "9.2.1-snapshot-
|
|
42
|
-
"@instructure/ui-icons": "9.2.1-snapshot-
|
|
43
|
-
"@instructure/ui-popover": "9.2.1-snapshot-
|
|
44
|
-
"@instructure/ui-position": "9.2.1-snapshot-
|
|
45
|
-
"@instructure/ui-prop-types": "9.2.1-snapshot-
|
|
46
|
-
"@instructure/ui-react-utils": "9.2.1-snapshot-
|
|
47
|
-
"@instructure/ui-testable": "9.2.1-snapshot-
|
|
48
|
-
"@instructure/ui-utils": "9.2.1-snapshot-
|
|
49
|
-
"@instructure/ui-view": "9.2.1-snapshot-
|
|
38
|
+
"@instructure/console": "9.2.1-snapshot-2",
|
|
39
|
+
"@instructure/emotion": "9.2.1-snapshot-2",
|
|
40
|
+
"@instructure/shared-types": "9.2.1-snapshot-2",
|
|
41
|
+
"@instructure/ui-a11y-utils": "9.2.1-snapshot-2",
|
|
42
|
+
"@instructure/ui-dom-utils": "9.2.1-snapshot-2",
|
|
43
|
+
"@instructure/ui-icons": "9.2.1-snapshot-2",
|
|
44
|
+
"@instructure/ui-popover": "9.2.1-snapshot-2",
|
|
45
|
+
"@instructure/ui-position": "9.2.1-snapshot-2",
|
|
46
|
+
"@instructure/ui-prop-types": "9.2.1-snapshot-2",
|
|
47
|
+
"@instructure/ui-react-utils": "9.2.1-snapshot-2",
|
|
48
|
+
"@instructure/ui-testable": "9.2.1-snapshot-2",
|
|
49
|
+
"@instructure/ui-utils": "9.2.1-snapshot-2",
|
|
50
|
+
"@instructure/ui-view": "9.2.1-snapshot-2",
|
|
50
51
|
"keycode": "^2.2.1",
|
|
51
52
|
"prop-types": "^15.8.1"
|
|
52
53
|
},
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
|
|
25
25
|
import React from 'react'
|
|
26
26
|
import { fireEvent, render, screen } from '@testing-library/react'
|
|
27
|
+
import { vi } from 'vitest'
|
|
27
28
|
import '@testing-library/jest-dom'
|
|
28
29
|
|
|
29
30
|
import { MenuItem } from '../index'
|
|
@@ -63,7 +64,7 @@ describe('<MenuItem />', () => {
|
|
|
63
64
|
})
|
|
64
65
|
|
|
65
66
|
it('should call onSelect after click', () => {
|
|
66
|
-
const onSelect =
|
|
67
|
+
const onSelect = vi.fn()
|
|
67
68
|
render(
|
|
68
69
|
<MenuItem onSelect={onSelect} value="foo">
|
|
69
70
|
Hello
|
|
@@ -82,7 +83,7 @@ describe('<MenuItem />', () => {
|
|
|
82
83
|
})
|
|
83
84
|
|
|
84
85
|
it('should call onClick after click', () => {
|
|
85
|
-
const onClick =
|
|
86
|
+
const onClick = vi.fn()
|
|
86
87
|
render(
|
|
87
88
|
<MenuItem onClick={onClick} value="foo">
|
|
88
89
|
Hello
|
|
@@ -129,7 +130,7 @@ describe('<MenuItem />', () => {
|
|
|
129
130
|
|
|
130
131
|
it('should set the aria-checked attribute when selected prop is true', () => {
|
|
131
132
|
render(
|
|
132
|
-
<MenuItem type="checkbox" selected onSelect={
|
|
133
|
+
<MenuItem type="checkbox" selected onSelect={vi.fn()}>
|
|
133
134
|
Hello
|
|
134
135
|
</MenuItem>
|
|
135
136
|
)
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
|
|
25
25
|
import React from 'react'
|
|
26
26
|
import { fireEvent, render, screen } from '@testing-library/react'
|
|
27
|
+
import { vi } from 'vitest'
|
|
27
28
|
import '@testing-library/jest-dom'
|
|
28
29
|
|
|
29
30
|
import { MenuItem } from '../../MenuItem'
|
|
@@ -139,7 +140,7 @@ describe('<MenuItemGroup />', () => {
|
|
|
139
140
|
|
|
140
141
|
it('should set selected from selected prop', () => {
|
|
141
142
|
render(
|
|
142
|
-
<MenuItemGroup label="Select one" onSelect={
|
|
143
|
+
<MenuItemGroup label="Select one" onSelect={vi.fn()} selected={[1]}>
|
|
143
144
|
<MenuItem>Foo</MenuItem>
|
|
144
145
|
<MenuItem>Bar</MenuItem>
|
|
145
146
|
<MenuItemSeparator />
|
|
@@ -158,7 +159,7 @@ describe('<MenuItemGroup />', () => {
|
|
|
158
159
|
<MenuItem key="foo" defaultSelected>
|
|
159
160
|
Foo
|
|
160
161
|
</MenuItem>
|
|
161
|
-
<MenuItem key="bar" selected onSelect={
|
|
162
|
+
<MenuItem key="bar" selected onSelect={vi.fn()}>
|
|
162
163
|
Bar
|
|
163
164
|
</MenuItem>
|
|
164
165
|
</MenuItemGroup>
|
|
@@ -174,7 +175,7 @@ describe('<MenuItemGroup />', () => {
|
|
|
174
175
|
render(
|
|
175
176
|
<MenuItemGroup label="Select one">
|
|
176
177
|
<MenuItem defaultSelected>Foo</MenuItem>
|
|
177
|
-
<MenuItem selected onSelect={
|
|
178
|
+
<MenuItem selected onSelect={vi.fn()}>
|
|
178
179
|
Bar
|
|
179
180
|
</MenuItem>
|
|
180
181
|
</MenuItemGroup>
|
|
@@ -187,7 +188,7 @@ describe('<MenuItemGroup />', () => {
|
|
|
187
188
|
})
|
|
188
189
|
|
|
189
190
|
it('calls onSelect when items are selected', () => {
|
|
190
|
-
const onSelect =
|
|
191
|
+
const onSelect = vi.fn()
|
|
191
192
|
render(
|
|
192
193
|
<MenuItemGroup label="Select one" onSelect={onSelect} selected={[1]}>
|
|
193
194
|
<MenuItem>Item 1</MenuItem>
|
|
@@ -205,7 +206,7 @@ describe('<MenuItemGroup />', () => {
|
|
|
205
206
|
})
|
|
206
207
|
|
|
207
208
|
it('does not call onSelect when disabled', () => {
|
|
208
|
-
const onSelect =
|
|
209
|
+
const onSelect = vi.fn()
|
|
209
210
|
render(
|
|
210
211
|
<MenuItemGroup label="Select one" onSelect={onSelect} disabled>
|
|
211
212
|
<MenuItem>Item 1</MenuItem>
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
*/
|
|
24
24
|
import React from 'react'
|
|
25
25
|
import { render, screen, fireEvent } from '@testing-library/react'
|
|
26
|
+
import { vi } from 'vitest'
|
|
26
27
|
import { userEvent } from '@testing-library/user-event'
|
|
27
28
|
import '@testing-library/jest-dom'
|
|
28
29
|
|
|
@@ -31,6 +32,24 @@ import { Popover } from '@instructure/ui-popover'
|
|
|
31
32
|
import { Menu, MenuItem, MenuItemSeparator } from '../index'
|
|
32
33
|
|
|
33
34
|
describe('<Menu />', () => {
|
|
35
|
+
let consoleWarningMock: ReturnType<typeof vi.spyOn>
|
|
36
|
+
let consoleErrorMock: ReturnType<typeof vi.spyOn>
|
|
37
|
+
|
|
38
|
+
beforeEach(() => {
|
|
39
|
+
// Mocking console to prevent test output pollution and expect for messages
|
|
40
|
+
consoleWarningMock = vi
|
|
41
|
+
.spyOn(console, 'warn')
|
|
42
|
+
.mockImplementation(() => {}) as any
|
|
43
|
+
consoleErrorMock = vi
|
|
44
|
+
.spyOn(console, 'error')
|
|
45
|
+
.mockImplementation(() => {}) as any
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
afterEach(() => {
|
|
49
|
+
consoleWarningMock.mockRestore()
|
|
50
|
+
consoleErrorMock.mockRestore()
|
|
51
|
+
})
|
|
52
|
+
|
|
34
53
|
describe('without a trigger', () => {
|
|
35
54
|
it('should render', () => {
|
|
36
55
|
render(
|
|
@@ -82,7 +101,7 @@ describe('<Menu />', () => {
|
|
|
82
101
|
})
|
|
83
102
|
|
|
84
103
|
it('should call onSelect when menu item is selected', async () => {
|
|
85
|
-
const onSelect =
|
|
104
|
+
const onSelect = vi.fn()
|
|
86
105
|
|
|
87
106
|
const { getByText } = render(
|
|
88
107
|
<Menu label="Settings" onSelect={onSelect}>
|
|
@@ -98,22 +117,24 @@ describe('<Menu />', () => {
|
|
|
98
117
|
})
|
|
99
118
|
|
|
100
119
|
it('should not call onSelect when disabled', () => {
|
|
101
|
-
const onSelect =
|
|
120
|
+
const onSelect = vi.fn()
|
|
102
121
|
|
|
103
122
|
const { getByText } = render(
|
|
104
123
|
<Menu label="Settings" onSelect={onSelect} disabled>
|
|
105
124
|
<MenuItem value="Account">Account</MenuItem>
|
|
106
125
|
</Menu>
|
|
107
126
|
)
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
|
|
127
|
+
const itemText = getByText('Account')
|
|
128
|
+
const menu = screen.getByRole('menu')
|
|
129
|
+
const menuItem = screen.getByRole('menuitem')
|
|
111
130
|
|
|
112
|
-
expect(
|
|
131
|
+
expect(itemText).toBeInTheDocument()
|
|
132
|
+
expect(menu).toHaveAttribute('aria-disabled', 'true')
|
|
133
|
+
expect(menuItem).toHaveAttribute('aria-disabled', 'true')
|
|
113
134
|
})
|
|
114
135
|
|
|
115
136
|
it('should provide a menu ref', () => {
|
|
116
|
-
const menuRef =
|
|
137
|
+
const menuRef = vi.fn()
|
|
117
138
|
|
|
118
139
|
render(
|
|
119
140
|
<Menu label="Settings" menuRef={menuRef}>
|
|
@@ -187,7 +208,7 @@ describe('<Menu />', () => {
|
|
|
187
208
|
})
|
|
188
209
|
|
|
189
210
|
it('should call onFocus on focus', () => {
|
|
190
|
-
const onFocus =
|
|
211
|
+
const onFocus = vi.fn()
|
|
191
212
|
|
|
192
213
|
const { getByRole } = render(
|
|
193
214
|
<Menu trigger={<button>More</button>} onFocus={onFocus}>
|
|
@@ -256,7 +277,7 @@ describe('<Menu />', () => {
|
|
|
256
277
|
})
|
|
257
278
|
|
|
258
279
|
it('should provide a menu ref', () => {
|
|
259
|
-
const menuRef =
|
|
280
|
+
const menuRef = vi.fn()
|
|
260
281
|
|
|
261
282
|
render(
|
|
262
283
|
<Menu trigger={<button>More</button>} defaultShow menuRef={menuRef}>
|
|
@@ -270,7 +291,7 @@ describe('<Menu />', () => {
|
|
|
270
291
|
})
|
|
271
292
|
|
|
272
293
|
it('should provide a popoverRef ref', () => {
|
|
273
|
-
const popoverRef =
|
|
294
|
+
const popoverRef = vi.fn()
|
|
274
295
|
|
|
275
296
|
render(
|
|
276
297
|
<Menu
|
|
@@ -287,7 +308,7 @@ describe('<Menu />', () => {
|
|
|
287
308
|
})
|
|
288
309
|
|
|
289
310
|
it('should call onToggle on click', () => {
|
|
290
|
-
const onToggle =
|
|
311
|
+
const onToggle = vi.fn()
|
|
291
312
|
|
|
292
313
|
render(
|
|
293
314
|
<Menu trigger={<button>More</button>} onToggle={onToggle}>
|