66 lines
2.4 KiB
TypeScript
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([]);
|
|
});
|
|
});
|