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

let campaignsRepository: InMemoryCampaignsRepository;
let sut: GetCampaignsByUserUseCase;

describe("Get Campaigns By User Use Case", () => {
  beforeEach(() => {
    campaignsRepository = new InMemoryCampaignsRepository();
    sut = new GetCampaignsByUserUseCase(campaignsRepository);
  });

  it("should list only campaigns belonging to the given user", async () => {
    await campaignsRepository.create({
      title: "A",
      subject: "A",
      htmlBody: "<p>A</p>",
      createdById: "user-1",
    });
    await campaignsRepository.create({
      title: "B",
      subject: "B",
      htmlBody: "<p>B</p>",
      createdById: "user-2",
    });

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

    expect(campaigns).toHaveLength(1);
    expect(campaigns[0].title).toEqual("A");
  });
});
