diff --git a/packages/mui-base/src/Select/Arrow/SelectArrow.test.tsx b/packages/mui-base/src/Select/Arrow/SelectArrow.test.tsx index 1ccf28a15..e1da70572 100644 --- a/packages/mui-base/src/Select/Arrow/SelectArrow.test.tsx +++ b/packages/mui-base/src/Select/Arrow/SelectArrow.test.tsx @@ -1,18 +1,18 @@ -// import * as React from 'react'; -// import { Select } from '@base_ui/react/Select'; -// import { createRenderer, describeConformance } from '#test-utils'; +import * as React from 'react'; +import { Select } from '@base_ui/react/Select'; +import { createRenderer, describeConformance } from '#test-utils'; -// describe('', () => { -// const { render } = createRenderer(); +describe('', () => { + const { render } = createRenderer(); -// describeConformance(, () => ({ -// refInstanceof: window.HTMLDivElement, -// render(node) { -// return render( -// -// {node} -// , -// ); -// }, -// })); -// }); + describeConformance(, () => ({ + refInstanceof: window.HTMLDivElement, + render(node) { + return render( + + {node} + , + ); + }, + })); +}); diff --git a/packages/mui-base/src/Select/Backdrop/SelectBackdrop.test.tsx b/packages/mui-base/src/Select/Backdrop/SelectBackdrop.test.tsx index a06c83d9a..3d8251c77 100644 --- a/packages/mui-base/src/Select/Backdrop/SelectBackdrop.test.tsx +++ b/packages/mui-base/src/Select/Backdrop/SelectBackdrop.test.tsx @@ -1,18 +1,18 @@ -// import * as React from 'react'; -// import { Select } from '@base_ui/react/Select'; -// import { createRenderer, describeConformance } from '#test-utils'; +import * as React from 'react'; +import { Select } from '@base_ui/react/Select'; +import { createRenderer, describeConformance } from '#test-utils'; -// describe('', () => { -// const { render } = createRenderer(); +describe('', () => { + const { render } = createRenderer(); -// describeConformance(, () => ({ -// refInstanceof: window.HTMLDivElement, -// render(node) { -// return render( -// -// {node} -// , -// ); -// }, -// })); -// }); + describeConformance(, () => ({ + refInstanceof: window.HTMLDivElement, + render(node) { + return render( + + {node} + , + ); + }, + })); +}); diff --git a/packages/mui-base/src/Select/Group/SelectGroup.test.tsx b/packages/mui-base/src/Select/Group/SelectGroup.test.tsx index 0017235ae..a9a673870 100644 --- a/packages/mui-base/src/Select/Group/SelectGroup.test.tsx +++ b/packages/mui-base/src/Select/Group/SelectGroup.test.tsx @@ -1,55 +1,55 @@ -// import * as React from 'react'; -// import { Select } from '@base_ui/react/Select'; -// import { createRenderer, describeConformance } from '#test-utils'; -// import { screen } from '@mui/internal-test-utils'; -// import { expect } from 'chai'; +import * as React from 'react'; +import { Select } from '@base_ui/react/Select'; +import { createRenderer, describeConformance } from '#test-utils'; +import { screen } from '@mui/internal-test-utils'; +import { expect } from 'chai'; -// describe('', () => { -// const { render } = createRenderer(); +describe('', () => { + const { render } = createRenderer(); -// describeConformance(, () => ({ -// refInstanceof: window.HTMLDivElement, -// render(node) { -// return render( -// -// {node} -// , -// ); -// }, -// })); + describeConformance(, () => ({ + refInstanceof: window.HTMLDivElement, + render(node) { + return render( + + {node} + , + ); + }, + })); -// it('should render option group with label', async () => { -// await render( -// -// -// -// Fruits -// Apple -// Banana -// -// -// , -// ); + it('should render option group with label', async () => { + await render( + + + + Fruits + Apple + Banana + + + , + ); -// expect(screen.getByRole('group')).to.have.attribute('aria-labelledby'); -// expect(screen.getByText('Fruits')).toBeVisible(); -// }); + expect(screen.getByRole('group')).to.have.attribute('aria-labelledby'); + expect(screen.getByText('Fruits')).toBeVisible(); + }); -// it('should associate label with option group', async () => { -// await render( -// -// -// -// Vegetables -// Carrot -// Lettuce -// -// -// , -// ); + it('should associate label with option group', async () => { + await render( + + + + Vegetables + Carrot + Lettuce + + + , + ); -// const Group = screen.getByRole('group'); -// const label = screen.getByText('Vegetables'); -// expect(Group).to.have.attribute('aria-labelledby', label.id); -// }); -// }); + const Group = screen.getByRole('group'); + const label = screen.getByText('Vegetables'); + expect(Group).to.have.attribute('aria-labelledby', label.id); + }); +}); diff --git a/packages/mui-base/src/Select/GroupLabel/SelectGroupLabel.test.tsx b/packages/mui-base/src/Select/GroupLabel/SelectGroupLabel.test.tsx index 9a26f59c5..85f838786 100644 --- a/packages/mui-base/src/Select/GroupLabel/SelectGroupLabel.test.tsx +++ b/packages/mui-base/src/Select/GroupLabel/SelectGroupLabel.test.tsx @@ -1,18 +1,18 @@ -// import * as React from 'react'; -// import { Select } from '@base_ui/react/Select'; -// import { createRenderer, describeConformance } from '#test-utils'; +import * as React from 'react'; +import { Select } from '@base_ui/react/Select'; +import { createRenderer, describeConformance } from '#test-utils'; -// describe('', () => { -// const { render } = createRenderer(); +describe('', () => { + const { render } = createRenderer(); -// describeConformance(, () => ({ -// refInstanceof: window.HTMLDivElement, -// render(node) { -// return render( -// -// {node} -// , -// ); -// }, -// })); -// }); + describeConformance(, () => ({ + refInstanceof: window.HTMLDivElement, + render(node) { + return render( + + {node} + , + ); + }, + })); +}); diff --git a/packages/mui-base/src/Select/Icon/SelectIcon.test.tsx b/packages/mui-base/src/Select/Icon/SelectIcon.test.tsx index 4283e54b1..1ab6b6f44 100644 --- a/packages/mui-base/src/Select/Icon/SelectIcon.test.tsx +++ b/packages/mui-base/src/Select/Icon/SelectIcon.test.tsx @@ -1,18 +1,18 @@ -// import * as React from 'react'; -// import { Select } from '@base_ui/react/Select'; -// import { createRenderer, describeConformance } from '#test-utils'; +import * as React from 'react'; +import { Select } from '@base_ui/react/Select'; +import { createRenderer, describeConformance } from '#test-utils'; -// describe('', () => { -// const { render } = createRenderer(); +describe('', () => { + const { render } = createRenderer(); -// describeConformance(, () => ({ -// refInstanceof: window.HTMLSpanElement, -// render(node) { -// return render( -// -// {node} -// , -// ); -// }, -// })); -// }); + describeConformance(, () => ({ + refInstanceof: window.HTMLSpanElement, + render(node) { + return render( + + {node} + , + ); + }, + })); +}); diff --git a/packages/mui-base/src/Select/Option/SelectOption.test.tsx b/packages/mui-base/src/Select/Option/SelectOption.test.tsx index 87dcab572..b91100e4d 100644 --- a/packages/mui-base/src/Select/Option/SelectOption.test.tsx +++ b/packages/mui-base/src/Select/Option/SelectOption.test.tsx @@ -1,262 +1,262 @@ -// import * as React from 'react'; -// import { Select } from '@base_ui/react/Select'; -// import { fireEvent, flushMicrotasks, screen, waitFor } from '@mui/internal-test-utils'; -// import { createRenderer, describeConformance } from '#test-utils'; -// import { expect } from 'chai'; - -// describe('', () => { -// const { render } = createRenderer(); - -// describeConformance(, () => ({ -// refInstanceof: window.HTMLDivElement, -// render(node) { -// return render( -// -// {node} -// , -// ); -// }, -// })); - -// it('should select the option and close popup when clicked', async () => { -// await render( -// -// -// -// -// -// one -// -// , -// ); - -// const value = screen.getByTestId('value'); -// const trigger = screen.getByTestId('trigger'); -// const positioner = screen.getByTestId('positioner'); - -// expect(value.textContent).to.equal('null'); - -// fireEvent.click(trigger); - -// await flushMicrotasks(); - -// fireEvent.click(screen.getByText('one')); - -// expect(value.textContent).to.equal('one'); - -// expect(positioner).not.toBeVisible(); -// }); - -// it('navigating with keyboard should highlight option', async () => { -// const { user } = await render( -// -// -// -// -// -// -// one -// two -// three -// -// -// , -// ); - -// const trigger = screen.getByTestId('trigger'); - -// fireEvent.click(trigger); - -// await flushMicrotasks(); - -// await waitFor(() => { -// expect(screen.getByText('one')).toHaveFocus(); -// }); - -// await user.keyboard('{ArrowDown}'); - -// await waitFor(() => { -// expect(screen.getByText('two')).toHaveFocus(); -// }); -// }); - -// it('should select option when Enter key is pressed', async function test() { -// if (!/jsdom/.test(window.navigator.userAgent)) { -// this.skip(); -// } - -// const { user } = await render( -// -// -// -// -// -// -// one -// two -// -// -// , -// ); - -// const trigger = screen.getByTestId('trigger'); -// const value = screen.getByTestId('value'); - -// fireEvent.click(trigger); - -// await flushMicrotasks(); - -// await user.keyboard('{ArrowDown}'); -// await user.keyboard('{Enter}'); - -// await waitFor(() => { -// expect(value.textContent).to.equal('two'); -// }); -// }); - -// it('should not select disabled option', async () => { -// await render( -// -// -// -// -// -// -// one -// -// two -// -// -// -// , -// ); - -// const trigger = screen.getByTestId('trigger'); -// const value = screen.getByTestId('value'); - -// fireEvent.click(trigger); - -// await flushMicrotasks(); - -// fireEvent.click(screen.getByText('two')); - -// expect(value.textContent).to.equal(''); -// }); - -// it('should focus the selected option upon opening the popup', async () => { -// const { user } = await render( -// -// -// -// -// -// -// one -// two -// three -// -// -// , -// ); - -// const trigger = screen.getByTestId('trigger'); - -// fireEvent.click(trigger); - -// await flushMicrotasks(); - -// await waitFor(() => { -// expect(screen.getByRole('option', { name: 'one' })).toHaveFocus(); -// }); - -// await user.keyboard('{ArrowDown}'); -// await user.keyboard('{ArrowUp}'); -// await user.keyboard('{ArrowUp}'); - -// fireEvent.click(screen.getByRole('option', { name: 'three' })); -// fireEvent.click(trigger); - -// await flushMicrotasks(); - -// await waitFor(() => { -// expect(screen.getByRole('option', { name: 'three', hidden: false })).toHaveFocus(); -// }); -// }); - -// describe('style hooks', () => { -// it('should apply data-highlighted attribute when option is highlighted', async () => { -// const { user } = await render( -// -// -// -// -// a -// b -// -// -// , -// ); - -// const trigger = screen.getByTestId('trigger'); - -// fireEvent.click(trigger); - -// await flushMicrotasks(); - -// expect(screen.getByRole('option', { name: 'a' })).to.have.attribute( -// 'data-highlighted', -// 'true', -// ); -// expect(screen.getByRole('option', { name: 'b' })).not.to.have.attribute('data-highlighted'); - -// await user.keyboard('{ArrowDown}'); - -// expect(screen.getByRole('option', { name: 'b' })).to.have.attribute( -// 'data-highlighted', -// 'true', -// ); -// expect(screen.getByRole('option', { name: 'a' })).not.to.have.attribute('data-highlighted'); -// }); - -// it('should apply data-selected attribute when option is selected', async () => { -// await render( -// -// -// -// -// a -// b -// -// -// , -// ); - -// const trigger = screen.getByTestId('trigger'); - -// fireEvent.click(trigger); - -// await flushMicrotasks(); - -// expect(screen.getByRole('option', { name: 'a', hidden: false })).not.to.have.attribute( -// 'data-selected', -// ); -// expect(screen.getByRole('option', { name: 'b', hidden: false })).not.to.have.attribute( -// 'data-selected', -// ); - -// fireEvent.click(screen.getByRole('option', { name: 'a', hidden: false })); - -// fireEvent.click(trigger); - -// await flushMicrotasks(); - -// expect(screen.getByRole('option', { name: 'a', hidden: false })).to.have.attribute( -// 'data-selected', -// 'true', -// ); -// expect(screen.getByRole('option', { name: 'b', hidden: false })).not.to.have.attribute( -// 'data-selected', -// ); -// }); -// }); -// }); +import * as React from 'react'; +import { Select } from '@base_ui/react/Select'; +import { fireEvent, flushMicrotasks, screen, waitFor } from '@mui/internal-test-utils'; +import { createRenderer, describeConformance } from '#test-utils'; +import { expect } from 'chai'; + +describe('', () => { + const { render } = createRenderer(); + + describeConformance(, () => ({ + refInstanceof: window.HTMLDivElement, + render(node) { + return render( + + {node} + , + ); + }, + })); + + it('should select the option and close popup when clicked', async () => { + await render( + + + + + + one + + , + ); + + const value = screen.getByTestId('value'); + const trigger = screen.getByTestId('trigger'); + const positioner = screen.getByTestId('positioner'); + + expect(value.textContent).to.equal('null'); + + fireEvent.click(trigger); + + await flushMicrotasks(); + + fireEvent.click(screen.getByText('one')); + + expect(value.textContent).to.equal('one'); + + expect(positioner).not.toBeVisible(); + }); + + it('navigating with keyboard should highlight option', async () => { + const { user } = await render( + + + + + + + one + two + three + + + , + ); + + const trigger = screen.getByTestId('trigger'); + + fireEvent.click(trigger); + + await flushMicrotasks(); + + await waitFor(() => { + expect(screen.getByText('one')).toHaveFocus(); + }); + + await user.keyboard('{ArrowDown}'); + + await waitFor(() => { + expect(screen.getByText('two')).toHaveFocus(); + }); + }); + + it('should select option when Enter key is pressed', async function test() { + if (!/jsdom/.test(window.navigator.userAgent)) { + this.skip(); + } + + const { user } = await render( + + + + + + + one + two + + + , + ); + + const trigger = screen.getByTestId('trigger'); + const value = screen.getByTestId('value'); + + fireEvent.click(trigger); + + await flushMicrotasks(); + + await user.keyboard('{ArrowDown}'); + await user.keyboard('{Enter}'); + + await waitFor(() => { + expect(value.textContent).to.equal('two'); + }); + }); + + it('should not select disabled option', async () => { + await render( + + + + + + + one + + two + + + + , + ); + + const trigger = screen.getByTestId('trigger'); + const value = screen.getByTestId('value'); + + fireEvent.click(trigger); + + await flushMicrotasks(); + + fireEvent.click(screen.getByText('two')); + + expect(value.textContent).to.equal(''); + }); + + it('should focus the selected option upon opening the popup', async () => { + const { user } = await render( + + + + + + + one + two + three + + + , + ); + + const trigger = screen.getByTestId('trigger'); + + fireEvent.click(trigger); + + await flushMicrotasks(); + + await waitFor(() => { + expect(screen.getByRole('option', { name: 'one' })).toHaveFocus(); + }); + + await user.keyboard('{ArrowDown}'); + await user.keyboard('{ArrowUp}'); + await user.keyboard('{ArrowUp}'); + + fireEvent.click(screen.getByRole('option', { name: 'three' })); + fireEvent.click(trigger); + + await flushMicrotasks(); + + await waitFor(() => { + expect(screen.getByRole('option', { name: 'three', hidden: false })).toHaveFocus(); + }); + }); + + describe('style hooks', () => { + it('should apply data-highlighted attribute when option is highlighted', async () => { + const { user } = await render( + + + + + a + b + + + , + ); + + const trigger = screen.getByTestId('trigger'); + + fireEvent.click(trigger); + + await flushMicrotasks(); + + expect(screen.getByRole('option', { name: 'a' })).to.have.attribute( + 'data-highlighted', + 'true', + ); + expect(screen.getByRole('option', { name: 'b' })).not.to.have.attribute('data-highlighted'); + + await user.keyboard('{ArrowDown}'); + + expect(screen.getByRole('option', { name: 'b' })).to.have.attribute( + 'data-highlighted', + 'true', + ); + expect(screen.getByRole('option', { name: 'a' })).not.to.have.attribute('data-highlighted'); + }); + + it('should apply data-selected attribute when option is selected', async () => { + await render( + + + + + a + b + + + , + ); + + const trigger = screen.getByTestId('trigger'); + + fireEvent.click(trigger); + + await flushMicrotasks(); + + expect(screen.getByRole('option', { name: 'a', hidden: false })).not.to.have.attribute( + 'data-selected', + ); + expect(screen.getByRole('option', { name: 'b', hidden: false })).not.to.have.attribute( + 'data-selected', + ); + + fireEvent.click(screen.getByRole('option', { name: 'a', hidden: false })); + + fireEvent.click(trigger); + + await flushMicrotasks(); + + expect(screen.getByRole('option', { name: 'a', hidden: false })).to.have.attribute( + 'data-selected', + 'true', + ); + expect(screen.getByRole('option', { name: 'b', hidden: false })).not.to.have.attribute( + 'data-selected', + ); + }); + }); +}); diff --git a/packages/mui-base/src/Select/OptionIndicator/SelectOptionIndicator.test.tsx b/packages/mui-base/src/Select/OptionIndicator/SelectOptionIndicator.test.tsx index 13375ae02..7f410cc70 100644 --- a/packages/mui-base/src/Select/OptionIndicator/SelectOptionIndicator.test.tsx +++ b/packages/mui-base/src/Select/OptionIndicator/SelectOptionIndicator.test.tsx @@ -1,32 +1,28 @@ -import * as React from 'react'; -import { Select } from '@base_ui/react/Select'; -import { createRenderer, describeConformance } from '#test-utils'; -import { SelectOptionContext } from '../Option/SelectOptionContext'; +// import * as React from 'react'; +// import { Select } from '@base_ui/react/Select'; +// import { createRenderer, describeConformance } from '#test-utils'; +// import { SelectOptionContext } from '../Option/SelectOptionContext'; -const selectItemContextValue = { - open: true, - selected: true, -}; +// const selectItemContextValue = { +// open: true, +// selected: true, +// }; -describe('', () => { - const { render } = createRenderer(); +// describe('', () => { +// const { render } = createRenderer(); - if (/firefox/i.test(navigator.userAgent)) { - return; - } - - describeConformance(, () => ({ - refInstanceof: window.HTMLSpanElement, - render(node) { - return render( - - - - {node} - - - , - ); - }, - })); -}); +// describeConformance(, () => ({ +// refInstanceof: window.HTMLSpanElement, +// render(node) { +// return render( +// +// +// +// {node} +// +// +// , +// ); +// }, +// })); +// }); diff --git a/packages/mui-base/src/Select/OptionText/SelectOptionText.test.tsx b/packages/mui-base/src/Select/OptionText/SelectOptionText.test.tsx index 72cd9562e..34d5e12be 100644 --- a/packages/mui-base/src/Select/OptionText/SelectOptionText.test.tsx +++ b/packages/mui-base/src/Select/OptionText/SelectOptionText.test.tsx @@ -1,20 +1,20 @@ -// import * as React from 'react'; -// import { Select } from '@base_ui/react/Select'; -// import { createRenderer, describeConformance } from '#test-utils'; +import * as React from 'react'; +import { Select } from '@base_ui/react/Select'; +import { createRenderer, describeConformance } from '#test-utils'; -// describe('', () => { -// const { render } = createRenderer(); +describe('', () => { + const { render } = createRenderer(); -// describeConformance(, () => ({ -// refInstanceof: window.HTMLDivElement, -// render(node) { -// return render( -// -// -// {node} -// -// , -// ); -// }, -// })); -// }); + describeConformance(, () => ({ + refInstanceof: window.HTMLDivElement, + render(node) { + return render( + + + {node} + + , + ); + }, + })); +});