Просмотр исходного кода

test: add tests for sign out dialog

satnaing 2 месяцев назад
Родитель
Сommit
e35f45913a
1 измененных файлов с 45 добавлено и 0 удалено
  1. 45 0
      src/components/sign-out-dialog.test.tsx

+ 45 - 0
src/components/sign-out-dialog.test.tsx

@@ -0,0 +1,45 @@
+import { beforeEach, describe, expect, it, vi } from 'vitest'
+import { render } from 'vitest-browser-react'
+import { userEvent } from 'vitest/browser'
+import { SignOutDialog } from './sign-out-dialog'
+
+const navigate = vi.fn()
+const reset = vi.fn()
+
+const MOCK_HREF = 'https://app.test/dashboard?tab=1'
+
+vi.mock('@/stores/auth-store', () => ({
+  useAuthStore: () => ({
+    auth: { reset },
+  }),
+}))
+
+vi.mock('@tanstack/react-router', async (importOriginal) => {
+  const actual = await importOriginal<typeof import('@tanstack/react-router')>()
+  return {
+    ...actual,
+    useNavigate: () => navigate,
+    useLocation: () => ({ href: MOCK_HREF }),
+  }
+})
+
+describe('SignOutDialog', () => {
+  beforeEach(() => {
+    vi.clearAllMocks()
+  })
+
+  it('calls auth.reset and navigates to sign-in with current location as redirect', async () => {
+    const { getByRole } = await render(
+      <SignOutDialog open onOpenChange={vi.fn()} />
+    )
+
+    await userEvent.click(getByRole('button', { name: /^Sign out$/i }))
+
+    expect(reset).toHaveBeenCalledOnce()
+    expect(navigate).toHaveBeenCalledWith({
+      to: '/sign-in',
+      search: { redirect: MOCK_HREF },
+      replace: true,
+    })
+  })
+})