Skip to content

Commit 4ee6c51

Browse files
committed
test(sheet): add test to ensure tab value persists on rerender
1 parent d3583fe commit 4ee6c51

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

packages/core/src/components/sheet/sheet.test.tsx

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1+
import { useState } from 'react';
2+
13
import { cleanup, render } from '@testing-library/react';
24
import userEvent from '@testing-library/user-event';
35
import { axe } from 'vitest-axe';
46

57
import { Sheet } from '.';
8+
import { Tabs } from '../tabs';
69

710
describe('Sheet', () => {
811
const consoleWarnMockFunction = vi.spyOn(console, 'warn').mockImplementation(vi.fn());
@@ -154,6 +157,22 @@ describe('Sheet', () => {
154157
expect(popup).toBeInTheDocument();
155158
expect(popup).not.toBeVisible();
156159
});
160+
161+
it('should keeping value tab in sheet when rerender', async () => {
162+
const rendered = render(<RerenderSheetTest />);
163+
const trigger = rendered.getByText(TRIGGER_TEXT);
164+
165+
// Open Sheet
166+
await userEvent.click(trigger);
167+
const packageTab = rendered.getByRole('tab', { name: 'Package' });
168+
169+
// Switch to Package tab
170+
await userEvent.click(packageTab);
171+
const packagePanel = rendered.getByTestId('package-panel');
172+
expect(packagePanel).toBeVisible();
173+
await userEvent.click(rendered.getByTestId('package-button'));
174+
expect(packagePanel).toBeVisible();
175+
});
157176
});
158177

159178
const TRIGGER_TEXT = 'Trigger';
@@ -199,3 +218,33 @@ const UndefinedDescriptionSheetTest = (props: Sheet.Root.Props) => {
199218
</Sheet.Root>
200219
);
201220
};
221+
222+
const RerenderSheetTest = (props: Sheet.Root.Props) => {
223+
const [, rerender] = useState({});
224+
return (
225+
<Sheet.Root {...props}>
226+
<Sheet.Trigger>{TRIGGER_TEXT}</Sheet.Trigger>
227+
<Sheet.Popup>
228+
<Sheet.Body>
229+
<Tabs.Root defaultValue={'sort'}>
230+
<Tabs.List>
231+
<Tabs.Trigger value="sort">Sort</Tabs.Trigger>
232+
<Tabs.Trigger value="package">Package</Tabs.Trigger>
233+
<Tabs.Trigger value="status">Status</Tabs.Trigger>
234+
<Tabs.Trigger value="tag">Tag</Tabs.Trigger>
235+
<Tabs.Indicator />
236+
</Tabs.List>
237+
<Tabs.Panel value="sort">1</Tabs.Panel>
238+
<Tabs.Panel value="package" data-testid="package-panel">
239+
<button data-testid="package-button" onClick={() => rerender({})}>
240+
rerender
241+
</button>
242+
</Tabs.Panel>
243+
<Tabs.Panel value="status">3</Tabs.Panel>
244+
<Tabs.Panel value="tag">4</Tabs.Panel>
245+
</Tabs.Root>
246+
</Sheet.Body>
247+
</Sheet.Popup>
248+
</Sheet.Root>
249+
);
250+
};

0 commit comments

Comments
 (0)