import { vi, type Mock } from "vitest"; import type { PurchaseItemRepository } from "../repository/purchaseItemRepository"; import type { PurchaseOrderRepository } from "../repository/purchaseOrderRepository"; export interface PurchaseItemRepositoryMock extends PurchaseItemRepository { findByItemId: Mock; findByItemIds: Mock; save: Mock; deleteByItemId: Mock; } export function mockPurchaseItemRepository(): PurchaseItemRepositoryMock { return { findByItemId: vi.fn().mockResolvedValue(null), findByItemIds: vi.fn().mockResolvedValue(new Map()), save: vi.fn(), deleteByItemId: vi.fn(), }; } export interface PurchaseOrderRepositoryMock extends PurchaseOrderRepository { findById: Mock; findByLineIds: Mock; save: Mock; } // Injected through the commands' repositoryFactory parameter. vi.mock is not // an option: vitest runs with isolate: false, which shares the module cache // across test files. export function mockPurchaseOrderRepository(): PurchaseOrderRepositoryMock { return { findById: vi.fn().mockResolvedValue(null), findByLineIds: vi.fn().mockResolvedValue([]), save: vi.fn(), }; }