From 903c1e23aceea549a11c1a6ba39bdbfacca59d90 Mon Sep 17 00:00:00 2001 From: Danijel Martinek Date: Tue, 5 May 2026 08:28:19 +0200 Subject: [PATCH] feat(marketing-pages): add getSiteSettingsUseCase (test red until DI lands) --- .../get-site-settings.use-case.test.ts | 25 +++++++++++++++++++ .../use-cases/get-site-settings.use-case.ts | 11 ++++++++ 2 files changed, 36 insertions(+) create mode 100644 packages/marketing-pages/src/application/use-cases/get-site-settings.use-case.test.ts create mode 100644 packages/marketing-pages/src/application/use-cases/get-site-settings.use-case.ts 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(); +}