|
| 1 | +import { useState } from 'react'; |
| 2 | + |
1 | 3 | import { cleanup, render } from '@testing-library/react'; |
2 | 4 | import userEvent from '@testing-library/user-event'; |
3 | 5 | import { axe } from 'vitest-axe'; |
4 | 6 |
|
5 | 7 | import { Sheet } from '.'; |
| 8 | +import { Tabs } from '../tabs'; |
6 | 9 |
|
7 | 10 | describe('Sheet', () => { |
8 | 11 | const consoleWarnMockFunction = vi.spyOn(console, 'warn').mockImplementation(vi.fn()); |
@@ -154,6 +157,22 @@ describe('Sheet', () => { |
154 | 157 | expect(popup).toBeInTheDocument(); |
155 | 158 | expect(popup).not.toBeVisible(); |
156 | 159 | }); |
| 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 | + }); |
157 | 176 | }); |
158 | 177 |
|
159 | 178 | const TRIGGER_TEXT = 'Trigger'; |
@@ -199,3 +218,33 @@ const UndefinedDescriptionSheetTest = (props: Sheet.Root.Props) => { |
199 | 218 | </Sheet.Root> |
200 | 219 | ); |
201 | 220 | }; |
| 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