feat(web): add base AlertDialog with app-card migration example (#32933)

Signed-off-by: yyh <yuanyouhuilyz@gmail.com>
This commit is contained in:
yyh
2026-03-04 13:56:27 +08:00
committed by GitHub
parent dfc6de69c3
commit 84dca83ecd
16 changed files with 529 additions and 106 deletions

View File

@ -14,7 +14,7 @@ import { fireEvent, render, screen, waitFor } from '@testing-library/react'
import { beforeEach, describe, expect, it, vi } from 'vitest'
import AppCard from '@/app/components/apps/app-card'
import { AccessMode } from '@/models/access-control'
import { deleteApp, exportAppConfig, updateAppInfo } from '@/service/apps'
import { exportAppConfig, updateAppInfo } from '@/service/apps'
import { AppModeEnum } from '@/types/app'
let mockIsCurrentWorkspaceEditor = true
@ -26,6 +26,8 @@ let mockSystemFeatures = {
const mockRouterPush = vi.fn()
const mockNotify = vi.fn()
const mockOnPlanInfoChanged = vi.fn()
const mockDeleteAppMutation = vi.fn().mockResolvedValue(undefined)
let mockDeleteMutationPending = false
vi.mock('next/navigation', () => ({
useRouter: () => ({
@ -117,6 +119,13 @@ vi.mock('@/service/tag', () => ({
fetchTagList: vi.fn().mockResolvedValue([]),
}))
vi.mock('@/service/use-apps', () => ({
useDeleteAppMutation: () => ({
mutateAsync: mockDeleteAppMutation,
isPending: mockDeleteMutationPending,
}),
}))
vi.mock('@/service/apps', () => ({
deleteApp: vi.fn().mockResolvedValue({}),
updateAppInfo: vi.fn().mockResolvedValue({}),
@ -270,6 +279,7 @@ const renderAppCard = (app?: Partial<App>) => {
describe('App Card Operations Flow', () => {
beforeEach(() => {
vi.clearAllMocks()
mockDeleteMutationPending = false
mockIsCurrentWorkspaceEditor = true
mockSystemFeatures = {
branding: { enabled: false },
@ -341,7 +351,7 @@ describe('App Card Operations Flow', () => {
fireEvent.click(confirmBtn)
await waitFor(() => {
expect(deleteApp).toHaveBeenCalledWith('app-to-delete')
expect(mockDeleteAppMutation).toHaveBeenCalledWith('app-to-delete')
})
}
}

View File

@ -104,6 +104,10 @@ vi.mock('@/service/use-apps', () => ({
error: mockError,
refetch: mockRefetch,
}),
useDeleteAppMutation: () => ({
mutateAsync: vi.fn(),
isPending: false,
}),
}))
vi.mock('@/hooks/use-pay', () => ({

View File

@ -91,6 +91,10 @@ vi.mock('@/service/use-apps', () => ({
error: null,
refetch: mockRefetch,
}),
useDeleteAppMutation: () => ({
mutateAsync: vi.fn(),
isPending: false,
}),
}))
vi.mock('@/hooks/use-pay', () => ({