import { TransactionsController } from "../src/transactions/transactions.controller"; describe("TransactionsController", () => { const createController = () => { const service = { list: jest.fn().mockResolvedValue([]), sync: jest.fn().mockResolvedValue({ created: 0 }), summary: jest.fn().mockResolvedValue({ total: "0.00", count: 0 }), updateDerived: jest.fn().mockResolvedValue({}), createManualTransaction: jest.fn().mockResolvedValue({ id: "tx_1" }), cashflow: jest.fn().mockResolvedValue([]), merchantInsights: jest.fn().mockResolvedValue([]) }; return { controller: new TransactionsController(service as any), service }; }; it("lists transactions", async () => { const { controller, service } = createController(); const result = await controller.list({ user_id: "user_1" }); expect(service.list).toHaveBeenCalledWith( expect.objectContaining({ userId: "user_1" }) ); expect(result.data).toEqual([]); }); it("syncs transactions", async () => { const { controller, service } = createController(); const result = await controller.sync({ userId: "user_1" }); expect(service.sync).toHaveBeenCalled(); expect(result.data).toEqual({ created: 0 }); }); it("returns summary", async () => { const { controller, service } = createController(); const result = await controller.summary({ user_id: "user_1" }); expect(service.summary).toHaveBeenCalled(); expect(result.data.total).toBe("0.00"); }); it("creates manual transaction", async () => { const { controller, service } = createController(); const result = await controller.manual({ userId: "user_1", date: "2025-01-01", description: "Manual", amount: 10 }); expect(service.createManualTransaction).toHaveBeenCalled(); expect(result.data.id).toBe("tx_1"); }); it("returns cashflow", async () => { const { controller, service } = createController(); const result = await controller.cashflow({ user_id: "user_1", months: "3" }); expect(service.cashflow).toHaveBeenCalledWith("user_1", 3); expect(result.data).toEqual([]); }); it("returns merchant insights", async () => { const { controller, service } = createController(); const result = await controller.merchants({ user_id: "user_1", limit: "5" }); expect(service.merchantInsights).toHaveBeenCalledWith("user_1", 5); expect(result.data).toEqual([]); }); });