mirror of
https://github.com/langgenius/dify.git
synced 2026-04-05 10:12:43 +08:00
Signed-off-by: yyh <yuanyouhuilyz@gmail.com> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: CodingOnStar <hanxujiang@dify.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Coding On Star <447357187@qq.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: -LAN- <laipz8200@outlook.com> Co-authored-by: statxc <tyleradams93226@gmail.com>
58 lines
1.7 KiB
TypeScript
58 lines
1.7 KiB
TypeScript
import type { ReactNode } from 'react'
|
|
import { render } from '@testing-library/react'
|
|
import { ToastContext } from '@/app/components/base/toast/context'
|
|
import { useAppContext } from '@/context/app-context'
|
|
import EditWorkspaceModal from './index'
|
|
|
|
type DialogProps = {
|
|
children: ReactNode
|
|
open?: boolean
|
|
onOpenChange?: (open: boolean) => void
|
|
}
|
|
|
|
let latestOnOpenChange: DialogProps['onOpenChange']
|
|
|
|
vi.mock('@/app/components/base/ui/dialog', () => ({
|
|
Dialog: ({ children, onOpenChange }: DialogProps) => {
|
|
latestOnOpenChange = onOpenChange
|
|
return <div data-testid="dialog">{children}</div>
|
|
},
|
|
DialogCloseButton: ({ ...props }: Record<string, unknown>) => <button {...props} />,
|
|
DialogContent: ({ children, className }: { children: ReactNode, className?: string }) => (
|
|
<div className={className}>{children}</div>
|
|
),
|
|
DialogTitle: ({ children, className }: { children: ReactNode, className?: string }) => (
|
|
<div className={className}>{children}</div>
|
|
),
|
|
}))
|
|
|
|
vi.mock('@/context/app-context', () => ({
|
|
useAppContext: vi.fn(),
|
|
}))
|
|
|
|
describe('EditWorkspaceModal dialog lifecycle', () => {
|
|
beforeEach(() => {
|
|
vi.clearAllMocks()
|
|
latestOnOpenChange = undefined
|
|
vi.mocked(useAppContext).mockReturnValue({
|
|
currentWorkspace: { name: 'Test Workspace' },
|
|
isCurrentWorkspaceOwner: true,
|
|
} as never)
|
|
})
|
|
|
|
it('should only call onCancel when the dialog requests closing', () => {
|
|
const onCancel = vi.fn()
|
|
|
|
render(
|
|
<ToastContext.Provider value={{ notify: vi.fn(), close: vi.fn() }}>
|
|
<EditWorkspaceModal onCancel={onCancel} />
|
|
</ToastContext.Provider>,
|
|
)
|
|
|
|
latestOnOpenChange?.(true)
|
|
latestOnOpenChange?.(false)
|
|
|
|
expect(onCancel).toHaveBeenCalledTimes(1)
|
|
})
|
|
})
|