This commit is contained in:
yyh
2026-03-23 16:16:37 +08:00
parent b2c473260b
commit 4fcc6edcaf

View File

@ -2,11 +2,15 @@ import type { InvitationResponse } from '@/models/common'
import { fireEvent, render, screen, waitFor } from '@testing-library/react' import { fireEvent, render, screen, waitFor } from '@testing-library/react'
import userEvent from '@testing-library/user-event' import userEvent from '@testing-library/user-event'
import { vi } from 'vitest' import { vi } from 'vitest'
import { ToastContext } from '@/app/components/base/toast/context' import { toast } from '@/app/components/base/ui/toast'
import { useProviderContextSelector } from '@/context/provider-context' import { useProviderContextSelector } from '@/context/provider-context'
import { inviteMember } from '@/service/common' import { inviteMember } from '@/service/common'
import InviteModal from '../index' import InviteModal from '../index'
const { mockToastError } = vi.hoisted(() => ({
mockToastError: vi.fn(),
}))
vi.mock('@/context/provider-context', () => ({ vi.mock('@/context/provider-context', () => ({
useProviderContextSelector: vi.fn(), useProviderContextSelector: vi.fn(),
useProviderContext: vi.fn(() => ({ useProviderContext: vi.fn(() => ({
@ -14,6 +18,11 @@ vi.mock('@/context/provider-context', () => ({
})), })),
})) }))
vi.mock('@/service/common') vi.mock('@/service/common')
vi.mock('@/app/components/base/ui/toast', () => ({
toast: {
error: mockToastError,
},
}))
vi.mock('@/context/i18n', () => ({ vi.mock('@/context/i18n', () => ({
useLocale: () => 'en-US', useLocale: () => 'en-US',
})) }))
@ -37,7 +46,6 @@ describe('InviteModal', () => {
const mockOnCancel = vi.fn() const mockOnCancel = vi.fn()
const mockOnSend = vi.fn() const mockOnSend = vi.fn()
const mockRefreshLicenseLimit = vi.fn() const mockRefreshLicenseLimit = vi.fn()
const mockNotify = vi.fn()
beforeEach(() => { beforeEach(() => {
vi.clearAllMocks() vi.clearAllMocks()
@ -49,9 +57,7 @@ describe('InviteModal', () => {
}) })
const renderModal = (isEmailSetup = true) => render( const renderModal = (isEmailSetup = true) => render(
<ToastContext.Provider value={{ notify: mockNotify, close: vi.fn() }}> <InviteModal isEmailSetup={isEmailSetup} onCancel={mockOnCancel} onSend={mockOnSend} />,
<InviteModal isEmailSetup={isEmailSetup} onCancel={mockOnCancel} onSend={mockOnSend} />
</ToastContext.Provider>,
) )
const fillEmails = (value: string) => { const fillEmails = (value: string) => {
fireEvent.change(screen.getByTestId('mock-email-input'), { target: { value } }) fireEvent.change(screen.getByTestId('mock-email-input'), { target: { value } })
@ -143,10 +149,7 @@ describe('InviteModal', () => {
fillEmails('invalid@email.c') fillEmails('invalid@email.c')
await user.click(screen.getByRole('button', { name: /members\.sendInvite/i })) await user.click(screen.getByRole('button', { name: /members\.sendInvite/i }))
expect(mockNotify).toHaveBeenCalledWith({ expect(toast.error).toHaveBeenCalledWith('common.members.emailInvalid')
type: 'error',
message: 'common.members.emailInvalid',
})
expect(inviteMember).not.toHaveBeenCalled() expect(inviteMember).not.toHaveBeenCalled()
}) })