import { describe, it, expect, beforeEach } from "vitest";
import { InMemorySendersRepository } from "../repositories/in-memory-senders-repository";
import { GetSendersByUserUseCase } from "./get-senders-by-user-use-case";

let sendersRepository: InMemorySendersRepository;
let sut: GetSendersByUserUseCase;

describe("Get Senders By User Use Case", () => {
  beforeEach(() => {
    sendersRepository = new InMemorySendersRepository();
    sut = new GetSendersByUserUseCase(sendersRepository);
  });

  it("should be able to get senders by user id", async () => {
    await sendersRepository.create({
      name: "Sender",
      fromEmail: "sender@example.com",
      smtpHost: "smtp.com",
      smtpPort: 587,
      smtpUser: "user",
      provider: "SMTP",
      userId: "user-1",
      encryptedPass: "enc-pass",
    });

    const { senders } = await sut.execute({ userId: "user-1" });

    expect(senders).toHaveLength(1);
    expect(senders[0].fromEmail).toEqual("sender@example.com");
  });
});
