Uecko_ERP/apps/server/archive/contexts/accounts/domain/services/account-service.test.ts
2025-05-04 22:06:57 +02:00

71 lines
2.1 KiB
TypeScript

import { UniqueID } from "@/core/common/domain";
import { Account } from "../aggregates";
import { IAccountRepository } from "../repositories";
import { AccountService } from "./account.service";
const mockAccountRepository: IAccountRepository = {
accountExists: jest.fn(),
findAll: jest.fn(),
findByEmail: jest.fn(),
findById: jest.fn(),
create: jest.fn(),
update: jest.fn(),
};
const sampleAccount = {
id: "c5743279-e1cf-4dd5-baae-6698c8c6183c",
is_freelancer: false,
name: "Empresa XYZ",
trade_name: "XYZ Trading",
tin: "123456789",
street: "Calle Principal 123",
city: "Madrid",
state: "Madrid",
postal_code: "28001",
country: "España",
email: "contacto@xyz.com",
phone: "+34 600 123 456",
fax: "+34 600 654 321",
website: "https://xyz.com",
legal_record: "Registro Mercantil XYZ",
default_tax: 21,
status: "active",
lang_code: "es",
currency_code: "EUR",
logo: "https://xyz.com/logo.png",
};
const accountId = UniqueID.create(sampleAccount.id).data;
describe("AccountService", () => {
let accountService: AccountService;
beforeEach(() => {
accountService = new AccountService(mockAccountRepository);
});
it("debería actualizar una cuenta existente", async () => {
const existingAccount = new Account(
{
/* datos simulados */
},
"123"
);
(mockAccountRepository.findById as jest.Mock).mockResolvedValue(existingAccount);
(mockAccountRepository.create as jest.Mock).mockResolvedValue(undefined);
const result = await accountService.updateAccountById(accountId, { name: "Nuevo Nombre" });
expect(result.isSuccess).toBe(true);
expect(result.data.name).toBe("Nuevo Nombre");
expect(mockAccountRepository.save).toHaveBeenCalled();
});
it("debería retornar error si la cuenta no existe", async () => {
(mockAccountRepository.findById as jest.Mock).mockResolvedValue(null);
const result = await accountService.updateAccountById(accountId, { name: "Nuevo Nombre" });
expect(result.isFailure).toBe(true);
expect(result.error.message).toBe("Account not found");
});
});