Files
BIPMaterialManager/tests/unit/cleaner-handler.test.ts
2026-03-21 18:26:13 +08:00

76 lines
2.3 KiB
TypeScript

import { beforeEach, describe, expect, it, vi } from 'vitest'
import { IPC_CHANNELS } from '../../src/shared/ipc-channels'
const handleMock = vi.fn()
const withErrorHandlingMock = vi.fn(async (handler: () => Promise<unknown>) => {
const data = await handler()
return { success: true, data }
})
const serviceMethods = {
runCleaner: vi.fn(async (_sender: unknown, input: unknown) => ({ success: true, input })),
exportResults: vi.fn(async (items: unknown[]) => ({ success: true, total: items.length }))
}
vi.mock('electron', () => ({
ipcMain: {
handle: handleMock
}
}))
vi.mock('../../src/main/ipc/index', () => ({
withErrorHandling: withErrorHandlingMock
}))
vi.mock('../../src/main/services/cleaner/cleaner-application-service', () => ({
CleanerApplicationService: class {
runCleaner = serviceMethods.runCleaner
exportResults = serviceMethods.exportResults
}
}))
describe('registerCleanerHandlers', () => {
beforeEach(() => {
vi.clearAllMocks()
})
it('registers cleaner IPC handlers and forwards the sender to the application service', async () => {
const { registerCleanerHandlers } = await import('../../src/main/ipc/cleaner-handler')
const sender = { id: 99 }
const event = { sender }
const input = { orderNumbers: ['MO-001'] }
registerCleanerHandlers()
expect(handleMock).toHaveBeenCalledTimes(2)
expect(handleMock).toHaveBeenCalledWith(IPC_CHANNELS.CLEANER_RUN, expect.any(Function))
const runHandler = handleMock.mock.calls.find(
([channel]) => channel === IPC_CHANNELS.CLEANER_RUN
)?.[1]
const result = await runHandler?.(event, input)
expect(serviceMethods.runCleaner).toHaveBeenCalledWith(sender, input)
expect(result).toEqual({
success: true,
data: { success: true, input }
})
})
it('forwards export requests to the cleaner application service', async () => {
const { registerCleanerHandlers } = await import('../../src/main/ipc/cleaner-handler')
const items = [{ id: '1' }, { id: '2' }]
registerCleanerHandlers()
const exportHandler = handleMock.mock.calls.find(
([channel]) => channel === IPC_CHANNELS.CLEANER_EXPORT_RESULTS
)?.[1]
await exportHandler?.({}, items)
expect(serviceMethods.exportResults).toHaveBeenCalledWith(items)
})
})