ledgerone_backend/test/transactions.controller.spec.ts
2026-02-24 21:45:18 +00:00

66 lines
2.4 KiB
TypeScript

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([]);
});
});