diff --git a/packages/marketing-pages/src/application/use-cases/get-site-settings.use-case.test.ts b/packages/marketing-pages/src/application/use-cases/get-site-settings.use-case.test.ts new file mode 100644 index 0000000..054cff3 --- /dev/null +++ b/packages/marketing-pages/src/application/use-cases/get-site-settings.use-case.test.ts @@ -0,0 +1,25 @@ +import { beforeEach, describe, expect, it } from "vitest"; +import { marketingPagesContainer } from "@/di/container"; +import { MARKETING_PAGES_SYMBOLS } from "@/di/symbols"; +import { MockSiteSettingsRepository } from "@/infrastructure/repositories/mock-site-settings.repository"; +import type { ISiteSettingsRepository } from "@/application/repositories/site-settings-repository.interface"; +import { getSiteSettingsUseCase } from "./get-site-settings.use-case"; + +describe("getSiteSettingsUseCase", () => { + let repo: MockSiteSettingsRepository; + + beforeEach(() => { + if (marketingPagesContainer.isBound(MARKETING_PAGES_SYMBOLS.ISiteSettingsRepository)) { + marketingPagesContainer.unbind(MARKETING_PAGES_SYMBOLS.ISiteSettingsRepository); + } + repo = new MockSiteSettingsRepository(); + marketingPagesContainer + .bind(MARKETING_PAGES_SYMBOLS.ISiteSettingsRepository) + .toConstantValue(repo); + }); + + it("returns the seeded site settings", async () => { + const result = await getSiteSettingsUseCase(); + expect(result.siteName).toBe("My App"); + }); +}); diff --git a/packages/marketing-pages/src/application/use-cases/get-site-settings.use-case.ts b/packages/marketing-pages/src/application/use-cases/get-site-settings.use-case.ts new file mode 100644 index 0000000..5ad748e --- /dev/null +++ b/packages/marketing-pages/src/application/use-cases/get-site-settings.use-case.ts @@ -0,0 +1,11 @@ +import type { SiteSettings } from "../../entities/site-settings"; +import { marketingPagesContainer } from "../../di/container"; +import { MARKETING_PAGES_SYMBOLS } from "../../di/symbols"; +import type { ISiteSettingsRepository } from "../repositories/site-settings-repository.interface"; + +export async function getSiteSettingsUseCase(): Promise { + const repo = marketingPagesContainer.get( + MARKETING_PAGES_SYMBOLS.ISiteSettingsRepository, + ); + return repo.getSiteSettings(); +}