@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 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-1](https://github.com/instructure/instructure-ui/compare/v9.2.0...v9.2.1-snapshot-1) (2024-07-10)
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 = jest.fn();
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 = jest.fn();
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: jest.fn()
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: jest.fn(),
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: jest.fn()
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: jest.fn()
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 = jest.fn();
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 = jest.fn();
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 = jest.fn();
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 = jest.fn();
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 item = getByText('Account');
96
- userEvent.click(item);
97
- expect(onSelect).not.toHaveBeenCalled();
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 = jest.fn();
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 = jest.fn();
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 = jest.fn();
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 = jest.fn();
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 = jest.fn();
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 = jest.fn();
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 = jest.fn();
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: jest.fn()
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: jest.fn(),
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: jest.fn()
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: jest.fn()
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 = jest.fn();
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 = jest.fn();
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 = jest.fn();
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 = jest.fn();
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 item = getByText('Account');
99
- _userEvent.userEvent.click(item);
100
- expect(onSelect).not.toHaveBeenCalled();
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 = jest.fn();
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 = jest.fn();
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 = jest.fn();
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 = jest.fn();
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 = jest.fn();
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-1",
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-1",
27
- "@instructure/ui-babel-preset": "9.2.1-snapshot-1",
28
- "@instructure/ui-color-utils": "9.2.1-snapshot-1",
29
- "@instructure/ui-test-utils": "9.2.1-snapshot-1",
30
- "@instructure/ui-themes": "9.2.1-snapshot-1",
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-1",
38
- "@instructure/emotion": "9.2.1-snapshot-1",
39
- "@instructure/shared-types": "9.2.1-snapshot-1",
40
- "@instructure/ui-a11y-utils": "9.2.1-snapshot-1",
41
- "@instructure/ui-dom-utils": "9.2.1-snapshot-1",
42
- "@instructure/ui-icons": "9.2.1-snapshot-1",
43
- "@instructure/ui-popover": "9.2.1-snapshot-1",
44
- "@instructure/ui-position": "9.2.1-snapshot-1",
45
- "@instructure/ui-prop-types": "9.2.1-snapshot-1",
46
- "@instructure/ui-react-utils": "9.2.1-snapshot-1",
47
- "@instructure/ui-testable": "9.2.1-snapshot-1",
48
- "@instructure/ui-utils": "9.2.1-snapshot-1",
49
- "@instructure/ui-view": "9.2.1-snapshot-1",
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 = jest.fn()
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 = jest.fn()
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={jest.fn()}>
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={jest.fn()} selected={[1]}>
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={jest.fn()}>
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={jest.fn()}>
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 = jest.fn()
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 = jest.fn()
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 = jest.fn()
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 = jest.fn()
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 item = getByText('Account')
109
-
110
- userEvent.click(item)
127
+ const itemText = getByText('Account')
128
+ const menu = screen.getByRole('menu')
129
+ const menuItem = screen.getByRole('menuitem')
111
130
 
112
- expect(onSelect).not.toHaveBeenCalled()
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 = jest.fn()
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 = jest.fn()
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 = jest.fn()
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 = jest.fn()
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 = jest.fn()
311
+ const onToggle = vi.fn()
291
312
 
292
313
  render(
293
314
  <Menu trigger={<button>More</button>} onToggle={onToggle}>