Files
dify/web/service/use-common.spec.tsx
yyh 3a8bbd10cd feat(logout): implement logout mutation and reset login cache on success
test(logout): add unit tests for useLogout hook to verify cache reset
refactor(signin): enhance signin URL handling for OAuth and generic redirects
2026-02-10 17:55:22 +08:00

44 lines
1.3 KiB
TypeScript

import type { ReactNode } from 'react'
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
import { act, renderHook } from '@testing-library/react'
import { beforeEach, describe, expect, it, vi } from 'vitest'
import { post } from './base'
import { commonQueryKeys, useLogout } from './use-common'
vi.mock('./base', () => ({
get: vi.fn(),
post: vi.fn(),
}))
const createWrapper = (queryClient: QueryClient) => {
return ({ children }: { children: ReactNode }) => (
<QueryClientProvider client={queryClient}>
{children}
</QueryClientProvider>
)
}
describe('useLogout', () => {
beforeEach(() => {
vi.clearAllMocks()
})
it('should reset login cache when logout succeeds', async () => {
// Arrange
const queryClient = new QueryClient()
const wrapper = createWrapper(queryClient)
queryClient.setQueryData(commonQueryKeys.isLogin, { logged_in: true })
vi.mocked(post).mockResolvedValue({ result: 'success' } as never)
const { result } = renderHook(() => useLogout(), { wrapper })
// Act
await act(async () => {
await result.current.mutateAsync()
})
// Assert
expect(post).toHaveBeenCalledWith('/logout')
expect(queryClient.getQueryData(commonQueryKeys.isLogin)).toEqual({ logged_in: false })
})
})