import { describe, it, expect, beforeEach } from "vitest";
import { InMemoryContactsRepository } from "../repositories/in-memory-contacts-repository";
import { DeleteContactUseCase } from "./delete-contact-use-case";

let contactsRepository: InMemoryContactsRepository;
let sut: DeleteContactUseCase;

describe("Delete Contact Use Case", () => {
  beforeEach(() => {
    contactsRepository = new InMemoryContactsRepository();
    sut = new DeleteContactUseCase(contactsRepository);
  });

  it("should be able to delete a contact", async () => {
    await contactsRepository.createMany(["contact1@example.com"]);
    const [contact] = await contactsRepository.findAll();

    const result = await sut.execute({ id: contact.id });

    expect(result.success).toBe(true);
    expect(contactsRepository.items).toHaveLength(0);
  });
});
