import { describe, it, expect } from "vitest"; import { getArticleBySlugUseCase } from "@/application/use-cases/get-article-by-slug.use-case"; import { MockArticlesRepository } from "@/infrastructure/repositories/articles.repository.mock"; import { ArticleNotFoundError } from "@/entities/errors/article"; import { articleFactory } from "@/__factories__/article.factory"; describe("getArticleBySlugUseCase", () => { it("returns the article when slug exists", async () => { const repo = new MockArticlesRepository(); const seed = articleFactory.build({ slug: "test-slug" }); await repo.createArticle(seed); const useCase = getArticleBySlugUseCase(repo); const result = await useCase({ slug: "test-slug" }); expect(result?.slug).toBe("test-slug"); }); it("throws ArticleNotFoundError when slug is missing", async () => { const repo = new MockArticlesRepository(); const useCase = getArticleBySlugUseCase(repo); await expect(useCase({ slug: "does-not-exist" })).rejects.toThrow(ArticleNotFoundError); }); });