refactor(features): rename mock/payload/interface files per Lazar pattern
Convention now: <name>.repository.{ts,mock.ts,interface.ts}.
Renames .mock prefix to .mock suffix; drops .payload prefix from real
impls (canonical name = real impl); dot-separates the .repository
qualifier in interface filenames. Class names follow suit:
PayloadXRepository → XRepository; Mock* unchanged.
Refactor log: §1, §3
Spec: §9.1
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -20,6 +20,51 @@ single follow-up pass.
|
|||||||
|
|
||||||
## 1. File renames (before → after)
|
## 1. File renames (before → after)
|
||||||
|
|
||||||
|
### Task 3: File and class renames
|
||||||
|
|
||||||
|
File renames — 27 files (git mv — history preserved):
|
||||||
|
|
||||||
|
**auth:**
|
||||||
|
- `packages/auth/src/infrastructure/repositories/mock-users.repository.ts` → `users.repository.mock.ts`
|
||||||
|
- `packages/auth/src/infrastructure/repositories/mock-users.repository.test.ts` → `users.repository.mock.test.ts`
|
||||||
|
- `packages/auth/src/application/repositories/users-repository.interface.ts` → `users.repository.interface.ts`
|
||||||
|
- `packages/auth/src/infrastructure/services/mock-authentication.service.ts` → `authentication.service.mock.ts`
|
||||||
|
- `packages/auth/src/application/services/authentication-service.interface.ts` → `authentication.service.interface.ts`
|
||||||
|
|
||||||
|
**blog:**
|
||||||
|
- `packages/blog/src/infrastructure/repositories/mock-articles.repository.ts` → `articles.repository.mock.ts`
|
||||||
|
- `packages/blog/src/infrastructure/repositories/mock-articles.repository.test.ts` → `articles.repository.mock.test.ts`
|
||||||
|
- `packages/blog/src/infrastructure/repositories/payload-articles.repository.ts` → `articles.repository.ts`
|
||||||
|
- `packages/blog/src/infrastructure/repositories/payload-articles.repository.test.ts` → `articles.repository.test.ts`
|
||||||
|
- `packages/blog/src/application/repositories/articles-repository.interface.ts` → `articles.repository.interface.ts`
|
||||||
|
|
||||||
|
**marketing-pages:**
|
||||||
|
- `packages/marketing-pages/src/infrastructure/repositories/mock-pages.repository.ts` → `pages.repository.mock.ts`
|
||||||
|
- `packages/marketing-pages/src/infrastructure/repositories/mock-pages.repository.test.ts` → `pages.repository.mock.test.ts`
|
||||||
|
- `packages/marketing-pages/src/infrastructure/repositories/payload-pages.repository.ts` → `pages.repository.ts`
|
||||||
|
- `packages/marketing-pages/src/infrastructure/repositories/payload-pages.repository.test.ts` → `pages.repository.test.ts`
|
||||||
|
- `packages/marketing-pages/src/application/repositories/pages-repository.interface.ts` → `pages.repository.interface.ts`
|
||||||
|
- `packages/marketing-pages/src/infrastructure/repositories/mock-site-settings.repository.ts` → `site-settings.repository.mock.ts`
|
||||||
|
- `packages/marketing-pages/src/infrastructure/repositories/mock-site-settings.repository.test.ts` → `site-settings.repository.mock.test.ts`
|
||||||
|
- `packages/marketing-pages/src/infrastructure/repositories/payload-site-settings.repository.ts` → `site-settings.repository.ts`
|
||||||
|
- `packages/marketing-pages/src/infrastructure/repositories/payload-site-settings.repository.test.ts` → `site-settings.repository.test.ts`
|
||||||
|
- `packages/marketing-pages/src/application/repositories/site-settings-repository.interface.ts` → `site-settings.repository.interface.ts`
|
||||||
|
|
||||||
|
**navigation:**
|
||||||
|
- `packages/navigation/src/infrastructure/repositories/mock-header.repository.ts` → `header.repository.mock.ts`
|
||||||
|
- `packages/navigation/src/infrastructure/repositories/mock-header.repository.test.ts` → `header.repository.mock.test.ts`
|
||||||
|
- `packages/navigation/src/infrastructure/repositories/payload-header.repository.ts` → `header.repository.ts`
|
||||||
|
- `packages/navigation/src/infrastructure/repositories/payload-header.repository.test.ts` → `header.repository.test.ts`
|
||||||
|
- `packages/navigation/src/application/repositories/header-repository.interface.ts` → `header.repository.interface.ts`
|
||||||
|
|
||||||
|
Class renames (4 classes — Payload prefix dropped; Mock prefix unchanged):
|
||||||
|
- `PayloadArticlesRepository` → `ArticlesRepository` (in `articles.repository.ts`)
|
||||||
|
- `PayloadPagesRepository` → `PagesRepository` (in `pages.repository.ts`)
|
||||||
|
- `PayloadSiteSettingsRepository` → `SiteSettingsRepository` (in `site-settings.repository.ts`)
|
||||||
|
- `PayloadHeaderRepository` → `HeaderRepository` (in `header.repository.ts`)
|
||||||
|
|
||||||
|
Consumers updated (imports + class references): DI modules, bind-production files, contract suites, use case source files, use case tests, controller tests, router tests, feature tests — approximately 35 files total.
|
||||||
|
|
||||||
### Task 2: Entities split
|
### Task 2: Entities split
|
||||||
|
|
||||||
Entity model moves (git mv — history preserved):
|
Entity model moves (git mv — history preserved):
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { it, expect, beforeEach } from "vitest";
|
import { it, expect, beforeEach } from "vitest";
|
||||||
import { defineContractSuite } from "@repo/core-testing/contract";
|
import { defineContractSuite } from "@repo/core-testing/contract";
|
||||||
import type { IUsersRepository } from "../application/repositories/users-repository.interface.js";
|
import type { IUsersRepository } from "../application/repositories/users.repository.interface.js";
|
||||||
import { userFactory } from "../__factories__/user.factory.js";
|
import { userFactory } from "../__factories__/user.factory.js";
|
||||||
|
|
||||||
export const usersRepositoryContract =
|
export const usersRepositoryContract =
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { beforeEach, describe, expect, it } from "vitest";
|
import { beforeEach, describe, expect, it } from "vitest";
|
||||||
import { authContainer } from "@/di/container";
|
import { authContainer } from "@/di/container";
|
||||||
import { AUTH_SYMBOLS } from "@/di/symbols";
|
import { AUTH_SYMBOLS } from "@/di/symbols";
|
||||||
import { MockUsersRepository } from "@/infrastructure/repositories/mock-users.repository";
|
import { MockUsersRepository } from "@/infrastructure/repositories/users.repository.mock";
|
||||||
import { MockAuthenticationService } from "@/infrastructure/services/mock-authentication.service";
|
import { MockAuthenticationService } from "@/infrastructure/services/authentication.service.mock";
|
||||||
import type { IUsersRepository } from "@/application/repositories/users-repository.interface";
|
import type { IUsersRepository } from "@/application/repositories/users.repository.interface";
|
||||||
import type { IAuthenticationService } from "@/application/services/authentication-service.interface";
|
import type { IAuthenticationService } from "@/application/services/authentication.service.interface";
|
||||||
import { AuthenticationError } from "@/entities/errors/auth";
|
import { AuthenticationError } from "@/entities/errors/auth";
|
||||||
import { signInUseCase } from "./sign-in.use-case";
|
import { signInUseCase } from "./sign-in.use-case";
|
||||||
|
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ import type { Cookie } from "../../entities/models/cookie";
|
|||||||
import type { Session } from "../../entities/models/session";
|
import type { Session } from "../../entities/models/session";
|
||||||
import { authContainer } from "../../di/container";
|
import { authContainer } from "../../di/container";
|
||||||
import { AUTH_SYMBOLS } from "../../di/symbols";
|
import { AUTH_SYMBOLS } from "../../di/symbols";
|
||||||
import type { IUsersRepository } from "../repositories/users-repository.interface";
|
import type { IUsersRepository } from "../repositories/users.repository.interface";
|
||||||
import type { IAuthenticationService } from "../services/authentication-service.interface";
|
import type { IAuthenticationService } from "../services/authentication.service.interface";
|
||||||
|
|
||||||
export async function signInUseCase(input: {
|
export async function signInUseCase(input: {
|
||||||
username: string;
|
username: string;
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { beforeEach, describe, expect, it } from "vitest";
|
import { beforeEach, describe, expect, it } from "vitest";
|
||||||
import { authContainer } from "@/di/container";
|
import { authContainer } from "@/di/container";
|
||||||
import { AUTH_SYMBOLS } from "@/di/symbols";
|
import { AUTH_SYMBOLS } from "@/di/symbols";
|
||||||
import { MockUsersRepository } from "@/infrastructure/repositories/mock-users.repository";
|
import { MockUsersRepository } from "@/infrastructure/repositories/users.repository.mock";
|
||||||
import { MockAuthenticationService } from "@/infrastructure/services/mock-authentication.service";
|
import { MockAuthenticationService } from "@/infrastructure/services/authentication.service.mock";
|
||||||
import type { IUsersRepository } from "@/application/repositories/users-repository.interface";
|
import type { IUsersRepository } from "@/application/repositories/users.repository.interface";
|
||||||
import type { IAuthenticationService } from "@/application/services/authentication-service.interface";
|
import type { IAuthenticationService } from "@/application/services/authentication.service.interface";
|
||||||
import { signOutUseCase } from "./sign-out.use-case";
|
import { signOutUseCase } from "./sign-out.use-case";
|
||||||
|
|
||||||
describe("signOutUseCase", () => {
|
describe("signOutUseCase", () => {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import type { Cookie } from "../../entities/models/cookie";
|
import type { Cookie } from "../../entities/models/cookie";
|
||||||
import { authContainer } from "../../di/container";
|
import { authContainer } from "../../di/container";
|
||||||
import { AUTH_SYMBOLS } from "../../di/symbols";
|
import { AUTH_SYMBOLS } from "../../di/symbols";
|
||||||
import type { IAuthenticationService } from "../services/authentication-service.interface";
|
import type { IAuthenticationService } from "../services/authentication.service.interface";
|
||||||
|
|
||||||
export async function signOutUseCase(
|
export async function signOutUseCase(
|
||||||
sessionId: string,
|
sessionId: string,
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { beforeEach, describe, expect, it } from "vitest";
|
import { beforeEach, describe, expect, it } from "vitest";
|
||||||
import { authContainer } from "@/di/container";
|
import { authContainer } from "@/di/container";
|
||||||
import { AUTH_SYMBOLS } from "@/di/symbols";
|
import { AUTH_SYMBOLS } from "@/di/symbols";
|
||||||
import { MockUsersRepository } from "@/infrastructure/repositories/mock-users.repository";
|
import { MockUsersRepository } from "@/infrastructure/repositories/users.repository.mock";
|
||||||
import { MockAuthenticationService } from "@/infrastructure/services/mock-authentication.service";
|
import { MockAuthenticationService } from "@/infrastructure/services/authentication.service.mock";
|
||||||
import type { IUsersRepository } from "@/application/repositories/users-repository.interface";
|
import type { IUsersRepository } from "@/application/repositories/users.repository.interface";
|
||||||
import type { IAuthenticationService } from "@/application/services/authentication-service.interface";
|
import type { IAuthenticationService } from "@/application/services/authentication.service.interface";
|
||||||
import { AuthenticationError } from "@/entities/errors/auth";
|
import { AuthenticationError } from "@/entities/errors/auth";
|
||||||
import { signUpUseCase } from "./sign-up.use-case";
|
import { signUpUseCase } from "./sign-up.use-case";
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import type { Session } from "../../entities/models/session";
|
|||||||
import type { User } from "../../entities/models/user";
|
import type { User } from "../../entities/models/user";
|
||||||
import { authContainer } from "../../di/container";
|
import { authContainer } from "../../di/container";
|
||||||
import { AUTH_SYMBOLS } from "../../di/symbols";
|
import { AUTH_SYMBOLS } from "../../di/symbols";
|
||||||
import type { IUsersRepository } from "../repositories/users-repository.interface";
|
import type { IUsersRepository } from "../repositories/users.repository.interface";
|
||||||
import type { IAuthenticationService } from "../services/authentication-service.interface";
|
import type { IAuthenticationService } from "../services/authentication.service.interface";
|
||||||
|
|
||||||
export async function signUpUseCase(input: {
|
export async function signUpUseCase(input: {
|
||||||
username: string;
|
username: string;
|
||||||
|
|||||||
@@ -2,10 +2,10 @@ import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|||||||
import { authContainer } from "./container";
|
import { authContainer } from "./container";
|
||||||
import { AUTH_SYMBOLS } from "./symbols";
|
import { AUTH_SYMBOLS } from "./symbols";
|
||||||
import { AuthModule } from "./module";
|
import { AuthModule } from "./module";
|
||||||
import { MockUsersRepository } from "@/infrastructure/repositories/mock-users.repository";
|
import { MockUsersRepository } from "@/infrastructure/repositories/users.repository.mock";
|
||||||
import { MockAuthenticationService } from "@/infrastructure/services/mock-authentication.service";
|
import { MockAuthenticationService } from "@/infrastructure/services/authentication.service.mock";
|
||||||
import type { IUsersRepository } from "@/application/repositories/users-repository.interface";
|
import type { IUsersRepository } from "@/application/repositories/users.repository.interface";
|
||||||
import type { IAuthenticationService } from "@/application/services/authentication-service.interface";
|
import type { IAuthenticationService } from "@/application/services/authentication.service.interface";
|
||||||
import { userFactory } from "@/__factories__/user.factory";
|
import { userFactory } from "@/__factories__/user.factory";
|
||||||
|
|
||||||
describe("authContainer", () => {
|
describe("authContainer", () => {
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { ContainerModule, type interfaces } from "inversify";
|
import { ContainerModule, type interfaces } from "inversify";
|
||||||
|
|
||||||
import type { IUsersRepository } from "../application/repositories/users-repository.interface";
|
import type { IUsersRepository } from "../application/repositories/users.repository.interface";
|
||||||
import type { IAuthenticationService } from "../application/services/authentication-service.interface";
|
import type { IAuthenticationService } from "../application/services/authentication.service.interface";
|
||||||
import { MockUsersRepository } from "../infrastructure/repositories/mock-users.repository";
|
import { MockUsersRepository } from "../infrastructure/repositories/users.repository.mock";
|
||||||
import { MockAuthenticationService } from "../infrastructure/services/mock-authentication.service";
|
import { MockAuthenticationService } from "../infrastructure/services/authentication.service.mock";
|
||||||
import { AUTH_SYMBOLS } from "./symbols";
|
import { AUTH_SYMBOLS } from "./symbols";
|
||||||
|
|
||||||
export const AuthModule = new ContainerModule((bind: interfaces.Bind) => {
|
export const AuthModule = new ContainerModule((bind: interfaces.Bind) => {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { describe } from "vitest";
|
import { describe } from "vitest";
|
||||||
import { MockUsersRepository } from "@/infrastructure/repositories/mock-users.repository";
|
import { MockUsersRepository } from "@/infrastructure/repositories/users.repository.mock";
|
||||||
import { usersRepositoryContract } from "@/__contracts__/users-repository.contract";
|
import { usersRepositoryContract } from "@/__contracts__/users-repository.contract";
|
||||||
|
|
||||||
describe("MockUsersRepository", () => {
|
describe("MockUsersRepository", () => {
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
import "reflect-metadata";
|
import "reflect-metadata";
|
||||||
import { injectable } from "inversify";
|
import { injectable } from "inversify";
|
||||||
|
|
||||||
import type { IUsersRepository } from "../../application/repositories/users-repository.interface";
|
import type { IUsersRepository } from "../../application/repositories/users.repository.interface";
|
||||||
import type { User } from "../../entities/models/user";
|
import type { User } from "../../entities/models/user";
|
||||||
|
|
||||||
const DEFAULT_SEED: User[] = [
|
const DEFAULT_SEED: User[] = [
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
import "reflect-metadata";
|
import "reflect-metadata";
|
||||||
import { inject, injectable } from "inversify";
|
import { inject, injectable } from "inversify";
|
||||||
|
|
||||||
import type { IAuthenticationService } from "../../application/services/authentication-service.interface";
|
import type { IAuthenticationService } from "../../application/services/authentication.service.interface";
|
||||||
import type { IUsersRepository } from "../../application/repositories/users-repository.interface";
|
import type { IUsersRepository } from "../../application/repositories/users.repository.interface";
|
||||||
import { UnauthenticatedError } from "../../entities/errors/auth";
|
import { UnauthenticatedError } from "../../entities/errors/auth";
|
||||||
import { sessionSchema, type Session } from "../../entities/models/session";
|
import { sessionSchema, type Session } from "../../entities/models/session";
|
||||||
import type { Cookie } from "../../entities/models/cookie";
|
import type { Cookie } from "../../entities/models/cookie";
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
import { beforeEach, describe, expect, it } from "vitest";
|
import { beforeEach, describe, expect, it } from "vitest";
|
||||||
import { authContainer } from "@/di/container";
|
import { authContainer } from "@/di/container";
|
||||||
import { AUTH_SYMBOLS } from "@/di/symbols";
|
import { AUTH_SYMBOLS } from "@/di/symbols";
|
||||||
import { MockUsersRepository } from "@/infrastructure/repositories/mock-users.repository";
|
import { MockUsersRepository } from "@/infrastructure/repositories/users.repository.mock";
|
||||||
import { MockAuthenticationService } from "@/infrastructure/services/mock-authentication.service";
|
import { MockAuthenticationService } from "@/infrastructure/services/authentication.service.mock";
|
||||||
import type { IUsersRepository } from "@/application/repositories/users-repository.interface";
|
import type { IUsersRepository } from "@/application/repositories/users.repository.interface";
|
||||||
import type { IAuthenticationService } from "@/application/services/authentication-service.interface";
|
import type { IAuthenticationService } from "@/application/services/authentication.service.interface";
|
||||||
import { authRouter } from "./router";
|
import { authRouter } from "./router";
|
||||||
|
|
||||||
describe("authRouter", () => {
|
describe("authRouter", () => {
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { beforeEach, describe, expect, it } from "vitest";
|
import { beforeEach, describe, expect, it } from "vitest";
|
||||||
import { authContainer } from "@/di/container";
|
import { authContainer } from "@/di/container";
|
||||||
import { AUTH_SYMBOLS } from "@/di/symbols";
|
import { AUTH_SYMBOLS } from "@/di/symbols";
|
||||||
import { MockUsersRepository } from "@/infrastructure/repositories/mock-users.repository";
|
import { MockUsersRepository } from "@/infrastructure/repositories/users.repository.mock";
|
||||||
import { MockAuthenticationService } from "@/infrastructure/services/mock-authentication.service";
|
import { MockAuthenticationService } from "@/infrastructure/services/authentication.service.mock";
|
||||||
import type { IUsersRepository } from "@/application/repositories/users-repository.interface";
|
import type { IUsersRepository } from "@/application/repositories/users.repository.interface";
|
||||||
import type { IAuthenticationService } from "@/application/services/authentication-service.interface";
|
import type { IAuthenticationService } from "@/application/services/authentication.service.interface";
|
||||||
import { InputParseError } from "@/entities/errors/common";
|
import { InputParseError } from "@/entities/errors/common";
|
||||||
import { signInController } from "./sign-in.controller";
|
import { signInController } from "./sign-in.controller";
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { beforeEach, describe, expect, it } from "vitest";
|
import { beforeEach, describe, expect, it } from "vitest";
|
||||||
import { authContainer } from "@/di/container";
|
import { authContainer } from "@/di/container";
|
||||||
import { AUTH_SYMBOLS } from "@/di/symbols";
|
import { AUTH_SYMBOLS } from "@/di/symbols";
|
||||||
import { MockUsersRepository } from "@/infrastructure/repositories/mock-users.repository";
|
import { MockUsersRepository } from "@/infrastructure/repositories/users.repository.mock";
|
||||||
import { MockAuthenticationService } from "@/infrastructure/services/mock-authentication.service";
|
import { MockAuthenticationService } from "@/infrastructure/services/authentication.service.mock";
|
||||||
import type { IUsersRepository } from "@/application/repositories/users-repository.interface";
|
import type { IUsersRepository } from "@/application/repositories/users.repository.interface";
|
||||||
import type { IAuthenticationService } from "@/application/services/authentication-service.interface";
|
import type { IAuthenticationService } from "@/application/services/authentication.service.interface";
|
||||||
import { InputParseError } from "@/entities/errors/common";
|
import { InputParseError } from "@/entities/errors/common";
|
||||||
import { signOutController } from "./sign-out.controller";
|
import { signOutController } from "./sign-out.controller";
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { beforeEach, describe, expect, it } from "vitest";
|
import { beforeEach, describe, expect, it } from "vitest";
|
||||||
import { authContainer } from "@/di/container";
|
import { authContainer } from "@/di/container";
|
||||||
import { AUTH_SYMBOLS } from "@/di/symbols";
|
import { AUTH_SYMBOLS } from "@/di/symbols";
|
||||||
import { MockUsersRepository } from "@/infrastructure/repositories/mock-users.repository";
|
import { MockUsersRepository } from "@/infrastructure/repositories/users.repository.mock";
|
||||||
import { MockAuthenticationService } from "@/infrastructure/services/mock-authentication.service";
|
import { MockAuthenticationService } from "@/infrastructure/services/authentication.service.mock";
|
||||||
import type { IUsersRepository } from "@/application/repositories/users-repository.interface";
|
import type { IUsersRepository } from "@/application/repositories/users.repository.interface";
|
||||||
import type { IAuthenticationService } from "@/application/services/authentication-service.interface";
|
import type { IAuthenticationService } from "@/application/services/authentication.service.interface";
|
||||||
import { InputParseError } from "@/entities/errors/common";
|
import { InputParseError } from "@/entities/errors/common";
|
||||||
import { signUpController } from "./sign-up.controller";
|
import { signUpController } from "./sign-up.controller";
|
||||||
|
|
||||||
|
|||||||
@@ -3,10 +3,10 @@
|
|||||||
import { beforeEach, describe, expect, it } from "vitest";
|
import { beforeEach, describe, expect, it } from "vitest";
|
||||||
import { authContainer } from "../src/di/container";
|
import { authContainer } from "../src/di/container";
|
||||||
import { AUTH_SYMBOLS } from "../src/di/symbols";
|
import { AUTH_SYMBOLS } from "../src/di/symbols";
|
||||||
import { MockUsersRepository } from "../src/infrastructure/repositories/mock-users.repository";
|
import { MockUsersRepository } from "../src/infrastructure/repositories/users.repository.mock";
|
||||||
import { MockAuthenticationService } from "../src/infrastructure/services/mock-authentication.service";
|
import { MockAuthenticationService } from "../src/infrastructure/services/authentication.service.mock";
|
||||||
import type { IUsersRepository } from "../src/application/repositories/users-repository.interface";
|
import type { IUsersRepository } from "../src/application/repositories/users.repository.interface";
|
||||||
import type { IAuthenticationService } from "../src/application/services/authentication-service.interface";
|
import type { IAuthenticationService } from "../src/application/services/authentication.service.interface";
|
||||||
import { authRouter } from "../src/integrations/api/router";
|
import { authRouter } from "../src/integrations/api/router";
|
||||||
|
|
||||||
describe("auth feature: sign-up → sign-in → sign-out", () => {
|
describe("auth feature: sign-up → sign-in → sign-out", () => {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { it, expect, beforeEach } from "vitest";
|
import { it, expect, beforeEach } from "vitest";
|
||||||
import { defineContractSuite } from "@repo/core-testing/contract";
|
import { defineContractSuite } from "@repo/core-testing/contract";
|
||||||
import type { IArticlesRepository } from "../application/repositories/articles-repository.interface.js";
|
import type { IArticlesRepository } from "../application/repositories/articles.repository.interface.js";
|
||||||
import { articleFactory } from "../__factories__/article.factory.js";
|
import { articleFactory } from "../__factories__/article.factory.js";
|
||||||
|
|
||||||
export const articlesRepositoryContract =
|
export const articlesRepositoryContract =
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { beforeEach, describe, expect, it } from "vitest";
|
import { beforeEach, describe, expect, it } from "vitest";
|
||||||
import { blogContainer } from "../../di/container";
|
import { blogContainer } from "../../di/container";
|
||||||
import { BLOG_SYMBOLS } from "../../di/symbols";
|
import { BLOG_SYMBOLS } from "../../di/symbols";
|
||||||
import type { IArticlesRepository } from "../../application/repositories/articles-repository.interface";
|
import type { IArticlesRepository } from "../../application/repositories/articles.repository.interface";
|
||||||
import { MockArticlesRepository } from "../../infrastructure/repositories/mock-articles.repository";
|
import { MockArticlesRepository } from "../../infrastructure/repositories/articles.repository.mock";
|
||||||
import { createArticleUseCase } from "./create-article.use-case";
|
import { createArticleUseCase } from "./create-article.use-case";
|
||||||
|
|
||||||
describe("createArticleUseCase", () => {
|
describe("createArticleUseCase", () => {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import type { Article } from "../../entities/models/article";
|
import type { Article } from "../../entities/models/article";
|
||||||
import { blogContainer } from "../../di/container";
|
import { blogContainer } from "../../di/container";
|
||||||
import { BLOG_SYMBOLS } from "../../di/symbols";
|
import { BLOG_SYMBOLS } from "../../di/symbols";
|
||||||
import type { IArticlesRepository } from "../repositories/articles-repository.interface";
|
import type { IArticlesRepository } from "../repositories/articles.repository.interface";
|
||||||
|
|
||||||
function generateSlug(title: string): string {
|
function generateSlug(title: string): string {
|
||||||
return title
|
return title
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { beforeEach, describe, expect, it } from "vitest";
|
import { beforeEach, describe, expect, it } from "vitest";
|
||||||
import { blogContainer } from "../../di/container";
|
import { blogContainer } from "../../di/container";
|
||||||
import { BLOG_SYMBOLS } from "../../di/symbols";
|
import { BLOG_SYMBOLS } from "../../di/symbols";
|
||||||
import type { IArticlesRepository } from "../../application/repositories/articles-repository.interface";
|
import type { IArticlesRepository } from "../../application/repositories/articles.repository.interface";
|
||||||
import { MockArticlesRepository } from "../../infrastructure/repositories/mock-articles.repository";
|
import { MockArticlesRepository } from "../../infrastructure/repositories/articles.repository.mock";
|
||||||
import { articleFactory } from "../../__factories__/article.factory";
|
import { articleFactory } from "../../__factories__/article.factory";
|
||||||
import { getArticlesUseCase } from "./get-articles.use-case";
|
import { getArticlesUseCase } from "./get-articles.use-case";
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import type { Article } from "../../entities/models/article";
|
import type { Article } from "../../entities/models/article";
|
||||||
import { blogContainer } from "../../di/container";
|
import { blogContainer } from "../../di/container";
|
||||||
import { BLOG_SYMBOLS } from "../../di/symbols";
|
import { BLOG_SYMBOLS } from "../../di/symbols";
|
||||||
import type { IArticlesRepository } from "../repositories/articles-repository.interface";
|
import type { IArticlesRepository } from "../repositories/articles.repository.interface";
|
||||||
|
|
||||||
export async function getArticlesUseCase(options?: {
|
export async function getArticlesUseCase(options?: {
|
||||||
status?: string;
|
status?: string;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import type { SanitizedConfig } from "payload";
|
import type { SanitizedConfig } from "payload";
|
||||||
import { blogContainer } from "./container";
|
import { blogContainer } from "./container";
|
||||||
import { BLOG_SYMBOLS } from "./symbols";
|
import { BLOG_SYMBOLS } from "./symbols";
|
||||||
import { PayloadArticlesRepository } from "../infrastructure/repositories/payload-articles.repository";
|
import { ArticlesRepository } from "../infrastructure/repositories/articles.repository";
|
||||||
|
|
||||||
export function bindProductionBlog(config: SanitizedConfig): void {
|
export function bindProductionBlog(config: SanitizedConfig): void {
|
||||||
if (blogContainer.isBound(BLOG_SYMBOLS.IArticlesRepository)) {
|
if (blogContainer.isBound(BLOG_SYMBOLS.IArticlesRepository)) {
|
||||||
@@ -9,5 +9,5 @@ export function bindProductionBlog(config: SanitizedConfig): void {
|
|||||||
}
|
}
|
||||||
blogContainer
|
blogContainer
|
||||||
.bind(BLOG_SYMBOLS.IArticlesRepository)
|
.bind(BLOG_SYMBOLS.IArticlesRepository)
|
||||||
.toConstantValue(new PayloadArticlesRepository(config));
|
.toConstantValue(new ArticlesRepository(config));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|||||||
import { blogContainer } from "./container";
|
import { blogContainer } from "./container";
|
||||||
import { BLOG_SYMBOLS } from "./symbols";
|
import { BLOG_SYMBOLS } from "./symbols";
|
||||||
import { BlogModule } from "./module";
|
import { BlogModule } from "./module";
|
||||||
import { MockArticlesRepository } from "../infrastructure/repositories/mock-articles.repository";
|
import { MockArticlesRepository } from "../infrastructure/repositories/articles.repository.mock";
|
||||||
import type { IArticlesRepository } from "../application/repositories/articles-repository.interface";
|
import type { IArticlesRepository } from "../application/repositories/articles.repository.interface";
|
||||||
|
|
||||||
describe("blogContainer", () => {
|
describe("blogContainer", () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { ContainerModule, type interfaces } from "inversify";
|
import { ContainerModule, type interfaces } from "inversify";
|
||||||
|
|
||||||
import type { IArticlesRepository } from "../application/repositories/articles-repository.interface";
|
import type { IArticlesRepository } from "../application/repositories/articles.repository.interface";
|
||||||
import { MockArticlesRepository } from "../infrastructure/repositories/mock-articles.repository";
|
import { MockArticlesRepository } from "../infrastructure/repositories/articles.repository.mock";
|
||||||
import { BLOG_SYMBOLS } from "./symbols";
|
import { BLOG_SYMBOLS } from "./symbols";
|
||||||
|
|
||||||
export const BlogModule = new ContainerModule((bind: interfaces.Bind) => {
|
export const BlogModule = new ContainerModule((bind: interfaces.Bind) => {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { describe } from "vitest";
|
import { describe } from "vitest";
|
||||||
import { MockArticlesRepository } from "@/infrastructure/repositories/mock-articles.repository";
|
import { MockArticlesRepository } from "@/infrastructure/repositories/articles.repository.mock";
|
||||||
import { articlesRepositoryContract } from "@/__contracts__/articles-repository.contract";
|
import { articlesRepositoryContract } from "@/__contracts__/articles-repository.contract";
|
||||||
|
|
||||||
describe("MockArticlesRepository", () => {
|
describe("MockArticlesRepository", () => {
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
import "reflect-metadata";
|
import "reflect-metadata";
|
||||||
import { injectable } from "inversify";
|
import { injectable } from "inversify";
|
||||||
|
|
||||||
import type { IArticlesRepository } from "../../application/repositories/articles-repository.interface";
|
import type { IArticlesRepository } from "../../application/repositories/articles.repository.interface";
|
||||||
import type { Article } from "../../entities/models/article";
|
import type { Article } from "../../entities/models/article";
|
||||||
|
|
||||||
@injectable()
|
@injectable()
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import { describe, expect, it, vi, beforeEach } from "vitest";
|
import { describe, expect, it, vi, beforeEach } from "vitest";
|
||||||
import { PayloadArticlesRepository } from "@/infrastructure/repositories/payload-articles.repository";
|
import { ArticlesRepository } from "@/infrastructure/repositories/articles.repository";
|
||||||
import { articlesRepositoryContract } from "@/__contracts__/articles-repository.contract";
|
import { articlesRepositoryContract } from "@/__contracts__/articles-repository.contract";
|
||||||
import { stubPayloadConfig } from "@repo/core-testing/payload/stub-config";
|
import { stubPayloadConfig } from "@repo/core-testing/payload/stub-config";
|
||||||
|
|
||||||
@@ -94,13 +94,13 @@ vi.mock("payload", () => ({
|
|||||||
// Contract suite
|
// Contract suite
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
describe("PayloadArticlesRepository", () => {
|
describe("ArticlesRepository", () => {
|
||||||
describe("contract", () => {
|
describe("contract", () => {
|
||||||
articlesRepositoryContract.run(async () => {
|
articlesRepositoryContract.run(async () => {
|
||||||
const stub = buildPayloadStub();
|
const stub = buildPayloadStub();
|
||||||
const { getPayload } = await import("payload");
|
const { getPayload } = await import("payload");
|
||||||
(getPayload as ReturnType<typeof vi.fn>).mockResolvedValue(stub);
|
(getPayload as ReturnType<typeof vi.fn>).mockResolvedValue(stub);
|
||||||
return new PayloadArticlesRepository(stubPayloadConfig);
|
return new ArticlesRepository(stubPayloadConfig);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -133,7 +133,7 @@ describe("PayloadArticlesRepository", () => {
|
|||||||
find: findMock,
|
find: findMock,
|
||||||
});
|
});
|
||||||
|
|
||||||
const repo = new PayloadArticlesRepository(stubPayloadConfig);
|
const repo = new ArticlesRepository(stubPayloadConfig);
|
||||||
const result = await repo.getArticleBySlug("hello");
|
const result = await repo.getArticleBySlug("hello");
|
||||||
|
|
||||||
expect(findMock).toHaveBeenCalledWith({
|
expect(findMock).toHaveBeenCalledWith({
|
||||||
@@ -155,7 +155,7 @@ describe("PayloadArticlesRepository", () => {
|
|||||||
find: vi.fn().mockResolvedValue({ docs: [] }),
|
find: vi.fn().mockResolvedValue({ docs: [] }),
|
||||||
});
|
});
|
||||||
|
|
||||||
const repo = new PayloadArticlesRepository(stubPayloadConfig);
|
const repo = new ArticlesRepository(stubPayloadConfig);
|
||||||
const result = await repo.getArticleBySlug("missing");
|
const result = await repo.getArticleBySlug("missing");
|
||||||
expect(result).toBeUndefined();
|
expect(result).toBeUndefined();
|
||||||
});
|
});
|
||||||
@@ -3,7 +3,7 @@ import { injectable } from "inversify";
|
|||||||
import { getPayload } from "payload";
|
import { getPayload } from "payload";
|
||||||
import type { SanitizedConfig } from "payload";
|
import type { SanitizedConfig } from "payload";
|
||||||
|
|
||||||
import type { IArticlesRepository } from "../../application/repositories/articles-repository.interface";
|
import type { IArticlesRepository } from "../../application/repositories/articles.repository.interface";
|
||||||
import type { Article } from "../../entities/models/article";
|
import type { Article } from "../../entities/models/article";
|
||||||
|
|
||||||
type PayloadArticleDoc = {
|
type PayloadArticleDoc = {
|
||||||
@@ -37,7 +37,7 @@ function mapDoc(doc: PayloadArticleDoc): Article {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@injectable()
|
@injectable()
|
||||||
export class PayloadArticlesRepository implements IArticlesRepository {
|
export class ArticlesRepository implements IArticlesRepository {
|
||||||
private config: SanitizedConfig;
|
private config: SanitizedConfig;
|
||||||
|
|
||||||
constructor(config: SanitizedConfig) {
|
constructor(config: SanitizedConfig) {
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
import { beforeEach, describe, expect, it } from "vitest";
|
import { beforeEach, describe, expect, it } from "vitest";
|
||||||
import { blogContainer } from "../../di/container";
|
import { blogContainer } from "../../di/container";
|
||||||
import { BLOG_SYMBOLS } from "../../di/symbols";
|
import { BLOG_SYMBOLS } from "../../di/symbols";
|
||||||
import { MockArticlesRepository } from "../../infrastructure/repositories/mock-articles.repository";
|
import { MockArticlesRepository } from "../../infrastructure/repositories/articles.repository.mock";
|
||||||
import type { IArticlesRepository } from "../../application/repositories/articles-repository.interface";
|
import type { IArticlesRepository } from "../../application/repositories/articles.repository.interface";
|
||||||
import { blogRouter } from "./router";
|
import { blogRouter } from "./router";
|
||||||
import { articleFactory } from "../../__factories__/article.factory.js";
|
import { articleFactory } from "../../__factories__/article.factory.js";
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { beforeEach, describe, expect, it } from "vitest";
|
import { beforeEach, describe, expect, it } from "vitest";
|
||||||
import { blogContainer } from "../../di/container";
|
import { blogContainer } from "../../di/container";
|
||||||
import { BLOG_SYMBOLS } from "../../di/symbols";
|
import { BLOG_SYMBOLS } from "../../di/symbols";
|
||||||
import { MockArticlesRepository } from "../../infrastructure/repositories/mock-articles.repository";
|
import { MockArticlesRepository } from "../../infrastructure/repositories/articles.repository.mock";
|
||||||
import type { IArticlesRepository } from "../../application/repositories/articles-repository.interface";
|
import type { IArticlesRepository } from "../../application/repositories/articles.repository.interface";
|
||||||
import { InputParseError } from "../../entities/errors/common";
|
import { InputParseError } from "../../entities/errors/common";
|
||||||
import {
|
import {
|
||||||
createArticleController,
|
createArticleController,
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { InputParseError } from "../../entities/errors/common";
|
|||||||
import type { Article } from "../../entities/models/article";
|
import type { Article } from "../../entities/models/article";
|
||||||
import { blogContainer } from "../../di/container";
|
import { blogContainer } from "../../di/container";
|
||||||
import { BLOG_SYMBOLS } from "../../di/symbols";
|
import { BLOG_SYMBOLS } from "../../di/symbols";
|
||||||
import type { IArticlesRepository } from "../../application/repositories/articles-repository.interface";
|
import type { IArticlesRepository } from "../../application/repositories/articles.repository.interface";
|
||||||
import { getArticlesUseCase } from "../../application/use-cases/get-articles.use-case";
|
import { getArticlesUseCase } from "../../application/use-cases/get-articles.use-case";
|
||||||
import { createArticleUseCase } from "../../application/use-cases/create-article.use-case";
|
import { createArticleUseCase } from "../../application/use-cases/create-article.use-case";
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
import { beforeEach, describe, expect, it } from "vitest";
|
import { beforeEach, describe, expect, it } from "vitest";
|
||||||
import { blogContainer } from "../src/di/container";
|
import { blogContainer } from "../src/di/container";
|
||||||
import { BLOG_SYMBOLS } from "../src/di/symbols";
|
import { BLOG_SYMBOLS } from "../src/di/symbols";
|
||||||
import { MockArticlesRepository } from "../src/infrastructure/repositories/mock-articles.repository";
|
import { MockArticlesRepository } from "../src/infrastructure/repositories/articles.repository.mock";
|
||||||
import type { IArticlesRepository } from "../src/application/repositories/articles-repository.interface";
|
import type { IArticlesRepository } from "../src/application/repositories/articles.repository.interface";
|
||||||
import { blogRouter } from "../src/integrations/api/router";
|
import { blogRouter } from "../src/integrations/api/router";
|
||||||
|
|
||||||
describe("blog feature: article-by-slug end-to-end", () => {
|
describe("blog feature: article-by-slug end-to-end", () => {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { it, expect, beforeEach } from "vitest";
|
import { it, expect, beforeEach } from "vitest";
|
||||||
import { defineContractSuite } from "@repo/core-testing/contract";
|
import { defineContractSuite } from "@repo/core-testing/contract";
|
||||||
import type { IPagesRepository } from "../application/repositories/pages-repository.interface.js";
|
import type { IPagesRepository } from "../application/repositories/pages.repository.interface.js";
|
||||||
import type { Page } from "../entities/models/page.js";
|
import type { Page } from "../entities/models/page.js";
|
||||||
|
|
||||||
const SEED_DATE = new Date("2026-01-01T00:00:00.000Z");
|
const SEED_DATE = new Date("2026-01-01T00:00:00.000Z");
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { it, expect, beforeEach } from "vitest";
|
import { it, expect, beforeEach } from "vitest";
|
||||||
import { defineContractSuite } from "@repo/core-testing/contract";
|
import { defineContractSuite } from "@repo/core-testing/contract";
|
||||||
import type { ISiteSettingsRepository } from "../application/repositories/site-settings-repository.interface.js";
|
import type { ISiteSettingsRepository } from "../application/repositories/site-settings.repository.interface.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Contract for ISiteSettingsRepository.
|
* Contract for ISiteSettingsRepository.
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { beforeEach, describe, expect, it } from "vitest";
|
import { beforeEach, describe, expect, it } from "vitest";
|
||||||
import { marketingPagesContainer } from "@/di/container";
|
import { marketingPagesContainer } from "@/di/container";
|
||||||
import { MARKETING_PAGES_SYMBOLS } from "@/di/symbols";
|
import { MARKETING_PAGES_SYMBOLS } from "@/di/symbols";
|
||||||
import { MockPagesRepository } from "@/infrastructure/repositories/mock-pages.repository";
|
import { MockPagesRepository } from "@/infrastructure/repositories/pages.repository.mock";
|
||||||
import type { IPagesRepository } from "@/application/repositories/pages-repository.interface";
|
import type { IPagesRepository } from "@/application/repositories/pages.repository.interface";
|
||||||
import { getPageBySlugUseCase } from "./get-page-by-slug.use-case";
|
import { getPageBySlugUseCase } from "./get-page-by-slug.use-case";
|
||||||
|
|
||||||
describe("getPageBySlugUseCase", () => {
|
describe("getPageBySlugUseCase", () => {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import type { Page } from "../../entities/models/page";
|
import type { Page } from "../../entities/models/page";
|
||||||
import { marketingPagesContainer } from "../../di/container";
|
import { marketingPagesContainer } from "../../di/container";
|
||||||
import { MARKETING_PAGES_SYMBOLS } from "../../di/symbols";
|
import { MARKETING_PAGES_SYMBOLS } from "../../di/symbols";
|
||||||
import type { IPagesRepository } from "../repositories/pages-repository.interface";
|
import type { IPagesRepository } from "../repositories/pages.repository.interface";
|
||||||
|
|
||||||
export async function getPageBySlugUseCase(
|
export async function getPageBySlugUseCase(
|
||||||
slug: string,
|
slug: string,
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { beforeEach, describe, expect, it } from "vitest";
|
import { beforeEach, describe, expect, it } from "vitest";
|
||||||
import { marketingPagesContainer } from "@/di/container";
|
import { marketingPagesContainer } from "@/di/container";
|
||||||
import { MARKETING_PAGES_SYMBOLS } from "@/di/symbols";
|
import { MARKETING_PAGES_SYMBOLS } from "@/di/symbols";
|
||||||
import { MockSiteSettingsRepository } from "@/infrastructure/repositories/mock-site-settings.repository";
|
import { MockSiteSettingsRepository } from "@/infrastructure/repositories/site-settings.repository.mock";
|
||||||
import type { ISiteSettingsRepository } from "@/application/repositories/site-settings-repository.interface";
|
import type { ISiteSettingsRepository } from "@/application/repositories/site-settings.repository.interface";
|
||||||
import { getSiteSettingsUseCase } from "./get-site-settings.use-case";
|
import { getSiteSettingsUseCase } from "./get-site-settings.use-case";
|
||||||
|
|
||||||
describe("getSiteSettingsUseCase", () => {
|
describe("getSiteSettingsUseCase", () => {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import type { SiteSettings } from "../../entities/models/site-settings";
|
import type { SiteSettings } from "../../entities/models/site-settings";
|
||||||
import { marketingPagesContainer } from "../../di/container";
|
import { marketingPagesContainer } from "../../di/container";
|
||||||
import { MARKETING_PAGES_SYMBOLS } from "../../di/symbols";
|
import { MARKETING_PAGES_SYMBOLS } from "../../di/symbols";
|
||||||
import type { ISiteSettingsRepository } from "../repositories/site-settings-repository.interface";
|
import type { ISiteSettingsRepository } from "../repositories/site-settings.repository.interface";
|
||||||
|
|
||||||
export async function getSiteSettingsUseCase(): Promise<SiteSettings> {
|
export async function getSiteSettingsUseCase(): Promise<SiteSettings> {
|
||||||
const repo = marketingPagesContainer.get<ISiteSettingsRepository>(
|
const repo = marketingPagesContainer.get<ISiteSettingsRepository>(
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import type { SanitizedConfig } from "payload";
|
import type { SanitizedConfig } from "payload";
|
||||||
import { marketingPagesContainer } from "./container";
|
import { marketingPagesContainer } from "./container";
|
||||||
import { MARKETING_PAGES_SYMBOLS } from "./symbols";
|
import { MARKETING_PAGES_SYMBOLS } from "./symbols";
|
||||||
import { PayloadPagesRepository } from "../infrastructure/repositories/payload-pages.repository";
|
import { PagesRepository } from "../infrastructure/repositories/pages.repository";
|
||||||
import { PayloadSiteSettingsRepository } from "../infrastructure/repositories/payload-site-settings.repository";
|
import { SiteSettingsRepository } from "../infrastructure/repositories/site-settings.repository";
|
||||||
|
|
||||||
export function bindProductionMarketingPages(config: SanitizedConfig): void {
|
export function bindProductionMarketingPages(config: SanitizedConfig): void {
|
||||||
if (
|
if (
|
||||||
@@ -12,7 +12,7 @@ export function bindProductionMarketingPages(config: SanitizedConfig): void {
|
|||||||
}
|
}
|
||||||
marketingPagesContainer
|
marketingPagesContainer
|
||||||
.bind(MARKETING_PAGES_SYMBOLS.IPagesRepository)
|
.bind(MARKETING_PAGES_SYMBOLS.IPagesRepository)
|
||||||
.toConstantValue(new PayloadPagesRepository(config));
|
.toConstantValue(new PagesRepository(config));
|
||||||
|
|
||||||
if (
|
if (
|
||||||
marketingPagesContainer.isBound(
|
marketingPagesContainer.isBound(
|
||||||
@@ -25,5 +25,5 @@ export function bindProductionMarketingPages(config: SanitizedConfig): void {
|
|||||||
}
|
}
|
||||||
marketingPagesContainer
|
marketingPagesContainer
|
||||||
.bind(MARKETING_PAGES_SYMBOLS.ISiteSettingsRepository)
|
.bind(MARKETING_PAGES_SYMBOLS.ISiteSettingsRepository)
|
||||||
.toConstantValue(new PayloadSiteSettingsRepository(config));
|
.toConstantValue(new SiteSettingsRepository(config));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,10 +2,10 @@ import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|||||||
import { marketingPagesContainer } from "./container";
|
import { marketingPagesContainer } from "./container";
|
||||||
import { MARKETING_PAGES_SYMBOLS } from "./symbols";
|
import { MARKETING_PAGES_SYMBOLS } from "./symbols";
|
||||||
import { MarketingPagesModule } from "./module";
|
import { MarketingPagesModule } from "./module";
|
||||||
import { MockPagesRepository } from "@/infrastructure/repositories/mock-pages.repository";
|
import { MockPagesRepository } from "@/infrastructure/repositories/pages.repository.mock";
|
||||||
import { MockSiteSettingsRepository } from "@/infrastructure/repositories/mock-site-settings.repository";
|
import { MockSiteSettingsRepository } from "@/infrastructure/repositories/site-settings.repository.mock";
|
||||||
import type { IPagesRepository } from "@/application/repositories/pages-repository.interface";
|
import type { IPagesRepository } from "@/application/repositories/pages.repository.interface";
|
||||||
import type { ISiteSettingsRepository } from "@/application/repositories/site-settings-repository.interface";
|
import type { ISiteSettingsRepository } from "@/application/repositories/site-settings.repository.interface";
|
||||||
|
|
||||||
describe("marketingPagesContainer", () => {
|
describe("marketingPagesContainer", () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { ContainerModule, type interfaces } from "inversify";
|
import { ContainerModule, type interfaces } from "inversify";
|
||||||
|
|
||||||
import type { IPagesRepository } from "../application/repositories/pages-repository.interface";
|
import type { IPagesRepository } from "../application/repositories/pages.repository.interface";
|
||||||
import type { ISiteSettingsRepository } from "../application/repositories/site-settings-repository.interface";
|
import type { ISiteSettingsRepository } from "../application/repositories/site-settings.repository.interface";
|
||||||
import { MockPagesRepository } from "../infrastructure/repositories/mock-pages.repository";
|
import { MockPagesRepository } from "../infrastructure/repositories/pages.repository.mock";
|
||||||
import { MockSiteSettingsRepository } from "../infrastructure/repositories/mock-site-settings.repository";
|
import { MockSiteSettingsRepository } from "../infrastructure/repositories/site-settings.repository.mock";
|
||||||
import { MARKETING_PAGES_SYMBOLS } from "./symbols";
|
import { MARKETING_PAGES_SYMBOLS } from "./symbols";
|
||||||
|
|
||||||
export const MarketingPagesModule = new ContainerModule(
|
export const MarketingPagesModule = new ContainerModule(
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { describe } from "vitest";
|
import { describe } from "vitest";
|
||||||
import { MockPagesRepository } from "@/infrastructure/repositories/mock-pages.repository";
|
import { MockPagesRepository } from "@/infrastructure/repositories/pages.repository.mock";
|
||||||
import {
|
import {
|
||||||
pagesRepositoryContract,
|
pagesRepositoryContract,
|
||||||
CONTRACT_PAGES_SEED,
|
CONTRACT_PAGES_SEED,
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
import "reflect-metadata";
|
import "reflect-metadata";
|
||||||
import { injectable } from "inversify";
|
import { injectable } from "inversify";
|
||||||
|
|
||||||
import type { IPagesRepository } from "../../application/repositories/pages-repository.interface";
|
import type { IPagesRepository } from "../../application/repositories/pages.repository.interface";
|
||||||
import type { Page } from "../../entities/models/page";
|
import type { Page } from "../../entities/models/page";
|
||||||
|
|
||||||
const SEED_DATE = new Date("2026-01-01T00:00:00.000Z");
|
const SEED_DATE = new Date("2026-01-01T00:00:00.000Z");
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import { describe, vi } from "vitest";
|
import { describe, vi } from "vitest";
|
||||||
import { PayloadPagesRepository } from "@/infrastructure/repositories/payload-pages.repository";
|
import { PagesRepository } from "@/infrastructure/repositories/pages.repository";
|
||||||
import {
|
import {
|
||||||
pagesRepositoryContract,
|
pagesRepositoryContract,
|
||||||
CONTRACT_PAGES_SEED,
|
CONTRACT_PAGES_SEED,
|
||||||
@@ -71,13 +71,13 @@ vi.mock("payload", () => ({
|
|||||||
// Contract suite
|
// Contract suite
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
describe("PayloadPagesRepository", () => {
|
describe("PagesRepository", () => {
|
||||||
describe("contract", () => {
|
describe("contract", () => {
|
||||||
pagesRepositoryContract.run(async () => {
|
pagesRepositoryContract.run(async () => {
|
||||||
const stub = buildPayloadPagesStub(CONTRACT_PAGES_SEED);
|
const stub = buildPayloadPagesStub(CONTRACT_PAGES_SEED);
|
||||||
const { getPayload } = await import("payload");
|
const { getPayload } = await import("payload");
|
||||||
(getPayload as ReturnType<typeof vi.fn>).mockResolvedValue(stub);
|
(getPayload as ReturnType<typeof vi.fn>).mockResolvedValue(stub);
|
||||||
return new PayloadPagesRepository(stubPayloadConfig);
|
return new PagesRepository(stubPayloadConfig);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -3,7 +3,7 @@ import { injectable } from "inversify";
|
|||||||
import { getPayload } from "payload";
|
import { getPayload } from "payload";
|
||||||
import type { SanitizedConfig } from "payload";
|
import type { SanitizedConfig } from "payload";
|
||||||
|
|
||||||
import type { IPagesRepository } from "../../application/repositories/pages-repository.interface";
|
import type { IPagesRepository } from "../../application/repositories/pages.repository.interface";
|
||||||
import type { Page } from "../../entities/models/page";
|
import type { Page } from "../../entities/models/page";
|
||||||
|
|
||||||
type PayloadPageDoc = {
|
type PayloadPageDoc = {
|
||||||
@@ -55,7 +55,7 @@ function mapDoc(doc: PayloadPageDoc): Page {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@injectable()
|
@injectable()
|
||||||
export class PayloadPagesRepository implements IPagesRepository {
|
export class PagesRepository implements IPagesRepository {
|
||||||
private config: SanitizedConfig;
|
private config: SanitizedConfig;
|
||||||
|
|
||||||
constructor(config: SanitizedConfig) {
|
constructor(config: SanitizedConfig) {
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import { describe } from "vitest";
|
import { describe } from "vitest";
|
||||||
import { MockSiteSettingsRepository } from "@/infrastructure/repositories/mock-site-settings.repository";
|
import { MockSiteSettingsRepository } from "@/infrastructure/repositories/site-settings.repository.mock";
|
||||||
import { siteSettingsRepositoryContract } from "@/__contracts__/site-settings-repository.contract";
|
import { siteSettingsRepositoryContract } from "@/__contracts__/site-settings-repository.contract";
|
||||||
|
|
||||||
describe("MockSiteSettingsRepository", () => {
|
describe("MockSiteSettingsRepository", () => {
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
import "reflect-metadata";
|
import "reflect-metadata";
|
||||||
import { injectable } from "inversify";
|
import { injectable } from "inversify";
|
||||||
|
|
||||||
import type { ISiteSettingsRepository } from "../../application/repositories/site-settings-repository.interface";
|
import type { ISiteSettingsRepository } from "../../application/repositories/site-settings.repository.interface";
|
||||||
import type { SiteSettings } from "../../entities/models/site-settings";
|
import type { SiteSettings } from "../../entities/models/site-settings";
|
||||||
|
|
||||||
@injectable()
|
@injectable()
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import { describe, vi } from "vitest";
|
import { describe, vi } from "vitest";
|
||||||
import { PayloadSiteSettingsRepository } from "@/infrastructure/repositories/payload-site-settings.repository";
|
import { SiteSettingsRepository } from "@/infrastructure/repositories/site-settings.repository";
|
||||||
import { siteSettingsRepositoryContract } from "@/__contracts__/site-settings-repository.contract";
|
import { siteSettingsRepositoryContract } from "@/__contracts__/site-settings-repository.contract";
|
||||||
import { stubPayloadConfig } from "@repo/core-testing/payload/stub-config";
|
import { stubPayloadConfig } from "@repo/core-testing/payload/stub-config";
|
||||||
|
|
||||||
@@ -28,13 +28,13 @@ vi.mock("payload", () => ({
|
|||||||
// Contract suite
|
// Contract suite
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
describe("PayloadSiteSettingsRepository", () => {
|
describe("SiteSettingsRepository", () => {
|
||||||
describe("contract", () => {
|
describe("contract", () => {
|
||||||
siteSettingsRepositoryContract.run(async () => {
|
siteSettingsRepositoryContract.run(async () => {
|
||||||
const stub = buildSiteSettingsStub();
|
const stub = buildSiteSettingsStub();
|
||||||
const { getPayload } = await import("payload");
|
const { getPayload } = await import("payload");
|
||||||
(getPayload as ReturnType<typeof vi.fn>).mockResolvedValue(stub);
|
(getPayload as ReturnType<typeof vi.fn>).mockResolvedValue(stub);
|
||||||
return new PayloadSiteSettingsRepository(stubPayloadConfig);
|
return new SiteSettingsRepository(stubPayloadConfig);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -3,7 +3,7 @@ import { injectable } from "inversify";
|
|||||||
import { getPayload } from "payload";
|
import { getPayload } from "payload";
|
||||||
import type { SanitizedConfig } from "payload";
|
import type { SanitizedConfig } from "payload";
|
||||||
|
|
||||||
import type { ISiteSettingsRepository } from "../../application/repositories/site-settings-repository.interface";
|
import type { ISiteSettingsRepository } from "../../application/repositories/site-settings.repository.interface";
|
||||||
import type { SiteSettings } from "../../entities/models/site-settings";
|
import type { SiteSettings } from "../../entities/models/site-settings";
|
||||||
|
|
||||||
type PayloadSiteSettings = {
|
type PayloadSiteSettings = {
|
||||||
@@ -12,7 +12,7 @@ type PayloadSiteSettings = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
@injectable()
|
@injectable()
|
||||||
export class PayloadSiteSettingsRepository implements ISiteSettingsRepository {
|
export class SiteSettingsRepository implements ISiteSettingsRepository {
|
||||||
private config: SanitizedConfig;
|
private config: SanitizedConfig;
|
||||||
|
|
||||||
constructor(config: SanitizedConfig) {
|
constructor(config: SanitizedConfig) {
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
import { beforeEach, describe, expect, it } from "vitest";
|
import { beforeEach, describe, expect, it } from "vitest";
|
||||||
import { marketingPagesContainer } from "@/di/container";
|
import { marketingPagesContainer } from "@/di/container";
|
||||||
import { MARKETING_PAGES_SYMBOLS } from "@/di/symbols";
|
import { MARKETING_PAGES_SYMBOLS } from "@/di/symbols";
|
||||||
import { MockPagesRepository } from "@/infrastructure/repositories/mock-pages.repository";
|
import { MockPagesRepository } from "@/infrastructure/repositories/pages.repository.mock";
|
||||||
import { MockSiteSettingsRepository } from "@/infrastructure/repositories/mock-site-settings.repository";
|
import { MockSiteSettingsRepository } from "@/infrastructure/repositories/site-settings.repository.mock";
|
||||||
import type { IPagesRepository } from "@/application/repositories/pages-repository.interface";
|
import type { IPagesRepository } from "@/application/repositories/pages.repository.interface";
|
||||||
import type { ISiteSettingsRepository } from "@/application/repositories/site-settings-repository.interface";
|
import type { ISiteSettingsRepository } from "@/application/repositories/site-settings.repository.interface";
|
||||||
import { marketingPagesRouter } from "./router";
|
import { marketingPagesRouter } from "./router";
|
||||||
|
|
||||||
describe("marketingPagesRouter", () => {
|
describe("marketingPagesRouter", () => {
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { beforeEach, describe, expect, it } from "vitest";
|
import { beforeEach, describe, expect, it } from "vitest";
|
||||||
import { marketingPagesContainer } from "@/di/container";
|
import { marketingPagesContainer } from "@/di/container";
|
||||||
import { MARKETING_PAGES_SYMBOLS } from "@/di/symbols";
|
import { MARKETING_PAGES_SYMBOLS } from "@/di/symbols";
|
||||||
import { MockPagesRepository } from "@/infrastructure/repositories/mock-pages.repository";
|
import { MockPagesRepository } from "@/infrastructure/repositories/pages.repository.mock";
|
||||||
import { MockSiteSettingsRepository } from "@/infrastructure/repositories/mock-site-settings.repository";
|
import { MockSiteSettingsRepository } from "@/infrastructure/repositories/site-settings.repository.mock";
|
||||||
import type { IPagesRepository } from "@/application/repositories/pages-repository.interface";
|
import type { IPagesRepository } from "@/application/repositories/pages.repository.interface";
|
||||||
import type { ISiteSettingsRepository } from "@/application/repositories/site-settings-repository.interface";
|
import type { ISiteSettingsRepository } from "@/application/repositories/site-settings.repository.interface";
|
||||||
import { InputParseError } from "@/entities/errors/common";
|
import { InputParseError } from "@/entities/errors/common";
|
||||||
import {
|
import {
|
||||||
getPageBySlugController,
|
getPageBySlugController,
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { beforeEach, describe, expect, it } from "vitest";
|
import { beforeEach, describe, expect, it } from "vitest";
|
||||||
import { marketingPagesContainer } from "../src/di/container";
|
import { marketingPagesContainer } from "../src/di/container";
|
||||||
import { MARKETING_PAGES_SYMBOLS } from "../src/di/symbols";
|
import { MARKETING_PAGES_SYMBOLS } from "../src/di/symbols";
|
||||||
import { MockPagesRepository } from "../src/infrastructure/repositories/mock-pages.repository";
|
import { MockPagesRepository } from "../src/infrastructure/repositories/pages.repository.mock";
|
||||||
import { MockSiteSettingsRepository } from "../src/infrastructure/repositories/mock-site-settings.repository";
|
import { MockSiteSettingsRepository } from "../src/infrastructure/repositories/site-settings.repository.mock";
|
||||||
import type { IPagesRepository } from "../src/application/repositories/pages-repository.interface";
|
import type { IPagesRepository } from "../src/application/repositories/pages.repository.interface";
|
||||||
import type { ISiteSettingsRepository } from "../src/application/repositories/site-settings-repository.interface";
|
import type { ISiteSettingsRepository } from "../src/application/repositories/site-settings.repository.interface";
|
||||||
import { marketingPagesRouter } from "../src/integrations/api/router";
|
import { marketingPagesRouter } from "../src/integrations/api/router";
|
||||||
|
|
||||||
describe("marketing-pages feature: page-by-slug end-to-end", () => {
|
describe("marketing-pages feature: page-by-slug end-to-end", () => {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { it, expect, beforeEach } from "vitest";
|
import { it, expect, beforeEach } from "vitest";
|
||||||
import { defineContractSuite } from "@repo/core-testing/contract";
|
import { defineContractSuite } from "@repo/core-testing/contract";
|
||||||
import type { IHeaderRepository } from "../application/repositories/header-repository.interface.js";
|
import type { IHeaderRepository } from "../application/repositories/header.repository.interface.js";
|
||||||
import type { Header } from "../entities/models/header.js";
|
import type { Header } from "../entities/models/header.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { beforeEach, describe, expect, it } from "vitest";
|
import { beforeEach, describe, expect, it } from "vitest";
|
||||||
import { navigationContainer } from "@/di/container";
|
import { navigationContainer } from "@/di/container";
|
||||||
import { NAVIGATION_SYMBOLS } from "@/di/symbols";
|
import { NAVIGATION_SYMBOLS } from "@/di/symbols";
|
||||||
import { MockHeaderRepository } from "@/infrastructure/repositories/mock-header.repository";
|
import { MockHeaderRepository } from "@/infrastructure/repositories/header.repository.mock";
|
||||||
import type { IHeaderRepository } from "@/application/repositories/header-repository.interface";
|
import type { IHeaderRepository } from "@/application/repositories/header.repository.interface";
|
||||||
import { getHeaderUseCase } from "./get-header.use-case";
|
import { getHeaderUseCase } from "./get-header.use-case";
|
||||||
|
|
||||||
describe("getHeaderUseCase", () => {
|
describe("getHeaderUseCase", () => {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import type { Header } from "../../entities/models/header";
|
import type { Header } from "../../entities/models/header";
|
||||||
import { navigationContainer } from "../../di/container";
|
import { navigationContainer } from "../../di/container";
|
||||||
import { NAVIGATION_SYMBOLS } from "../../di/symbols";
|
import { NAVIGATION_SYMBOLS } from "../../di/symbols";
|
||||||
import type { IHeaderRepository } from "../repositories/header-repository.interface";
|
import type { IHeaderRepository } from "../repositories/header.repository.interface";
|
||||||
|
|
||||||
export async function getHeaderUseCase(): Promise<Header> {
|
export async function getHeaderUseCase(): Promise<Header> {
|
||||||
const repo = navigationContainer.get<IHeaderRepository>(
|
const repo = navigationContainer.get<IHeaderRepository>(
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import type { SanitizedConfig } from "payload";
|
import type { SanitizedConfig } from "payload";
|
||||||
import { navigationContainer } from "./container";
|
import { navigationContainer } from "./container";
|
||||||
import { NAVIGATION_SYMBOLS } from "./symbols";
|
import { NAVIGATION_SYMBOLS } from "./symbols";
|
||||||
import { PayloadHeaderRepository } from "../infrastructure/repositories/payload-header.repository";
|
import { HeaderRepository } from "../infrastructure/repositories/header.repository";
|
||||||
|
|
||||||
export function bindProductionNavigation(config: SanitizedConfig): void {
|
export function bindProductionNavigation(config: SanitizedConfig): void {
|
||||||
if (navigationContainer.isBound(NAVIGATION_SYMBOLS.IHeaderRepository)) {
|
if (navigationContainer.isBound(NAVIGATION_SYMBOLS.IHeaderRepository)) {
|
||||||
@@ -9,5 +9,5 @@ export function bindProductionNavigation(config: SanitizedConfig): void {
|
|||||||
}
|
}
|
||||||
navigationContainer
|
navigationContainer
|
||||||
.bind(NAVIGATION_SYMBOLS.IHeaderRepository)
|
.bind(NAVIGATION_SYMBOLS.IHeaderRepository)
|
||||||
.toConstantValue(new PayloadHeaderRepository(config));
|
.toConstantValue(new HeaderRepository(config));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|||||||
import { navigationContainer } from "./container";
|
import { navigationContainer } from "./container";
|
||||||
import { NAVIGATION_SYMBOLS } from "./symbols";
|
import { NAVIGATION_SYMBOLS } from "./symbols";
|
||||||
import { NavigationModule } from "./module";
|
import { NavigationModule } from "./module";
|
||||||
import { MockHeaderRepository } from "@/infrastructure/repositories/mock-header.repository";
|
import { MockHeaderRepository } from "@/infrastructure/repositories/header.repository.mock";
|
||||||
import type { IHeaderRepository } from "@/application/repositories/header-repository.interface";
|
import type { IHeaderRepository } from "@/application/repositories/header.repository.interface";
|
||||||
|
|
||||||
describe("navigationContainer", () => {
|
describe("navigationContainer", () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { ContainerModule, type interfaces } from "inversify";
|
import { ContainerModule, type interfaces } from "inversify";
|
||||||
|
|
||||||
import type { IHeaderRepository } from "../application/repositories/header-repository.interface";
|
import type { IHeaderRepository } from "../application/repositories/header.repository.interface";
|
||||||
import { MockHeaderRepository } from "../infrastructure/repositories/mock-header.repository";
|
import { MockHeaderRepository } from "../infrastructure/repositories/header.repository.mock";
|
||||||
import { NAVIGATION_SYMBOLS } from "./symbols";
|
import { NAVIGATION_SYMBOLS } from "./symbols";
|
||||||
|
|
||||||
export const NavigationModule = new ContainerModule((bind: interfaces.Bind) => {
|
export const NavigationModule = new ContainerModule((bind: interfaces.Bind) => {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { describe } from "vitest";
|
import { describe } from "vitest";
|
||||||
import { MockHeaderRepository } from "@/infrastructure/repositories/mock-header.repository";
|
import { MockHeaderRepository } from "@/infrastructure/repositories/header.repository.mock";
|
||||||
import { headerRepositoryContract, CONTRACT_HEADER_SEED } from "@/__contracts__/header-repository.contract";
|
import { headerRepositoryContract, CONTRACT_HEADER_SEED } from "@/__contracts__/header-repository.contract";
|
||||||
|
|
||||||
describe("MockHeaderRepository", () => {
|
describe("MockHeaderRepository", () => {
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
import "reflect-metadata";
|
import "reflect-metadata";
|
||||||
import { injectable } from "inversify";
|
import { injectable } from "inversify";
|
||||||
|
|
||||||
import type { IHeaderRepository } from "../../application/repositories/header-repository.interface";
|
import type { IHeaderRepository } from "../../application/repositories/header.repository.interface";
|
||||||
import type { Header, HeaderItem } from "../../entities/models/header";
|
import type { Header, HeaderItem } from "../../entities/models/header";
|
||||||
|
|
||||||
const DEFAULT_ITEMS: HeaderItem[] = [
|
const DEFAULT_ITEMS: HeaderItem[] = [
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import { describe, it, expect, vi } from "vitest";
|
import { describe, it, expect, vi } from "vitest";
|
||||||
import { PayloadHeaderRepository } from "@/infrastructure/repositories/payload-header.repository";
|
import { HeaderRepository } from "@/infrastructure/repositories/header.repository";
|
||||||
import { headerRepositoryContract, CONTRACT_HEADER_SEED } from "@/__contracts__/header-repository.contract";
|
import { headerRepositoryContract, CONTRACT_HEADER_SEED } from "@/__contracts__/header-repository.contract";
|
||||||
import { stubPayloadConfig } from "@repo/core-testing/payload/stub-config";
|
import { stubPayloadConfig } from "@repo/core-testing/payload/stub-config";
|
||||||
|
|
||||||
@@ -23,13 +23,13 @@ vi.mock("payload", () => ({
|
|||||||
// Contract suite
|
// Contract suite
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
describe("PayloadHeaderRepository", () => {
|
describe("HeaderRepository", () => {
|
||||||
describe("contract", () => {
|
describe("contract", () => {
|
||||||
headerRepositoryContract.run(async () => {
|
headerRepositoryContract.run(async () => {
|
||||||
const stub = buildHeaderStub();
|
const stub = buildHeaderStub();
|
||||||
const { getPayload } = await import("payload");
|
const { getPayload } = await import("payload");
|
||||||
(getPayload as ReturnType<typeof vi.fn>).mockResolvedValue(stub);
|
(getPayload as ReturnType<typeof vi.fn>).mockResolvedValue(stub);
|
||||||
return new PayloadHeaderRepository(stubPayloadConfig);
|
return new HeaderRepository(stubPayloadConfig);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ describe("PayloadHeaderRepository", () => {
|
|||||||
const { getPayload } = await import("payload");
|
const { getPayload } = await import("payload");
|
||||||
(getPayload as ReturnType<typeof vi.fn>).mockResolvedValue(stub);
|
(getPayload as ReturnType<typeof vi.fn>).mockResolvedValue(stub);
|
||||||
|
|
||||||
const repo = new PayloadHeaderRepository(stubPayloadConfig);
|
const repo = new HeaderRepository(stubPayloadConfig);
|
||||||
const header = await repo.getHeader();
|
const header = await repo.getHeader();
|
||||||
|
|
||||||
expect(header.logoId).toBe("abc-123");
|
expect(header.logoId).toBe("abc-123");
|
||||||
@@ -53,7 +53,7 @@ describe("PayloadHeaderRepository", () => {
|
|||||||
const { getPayload } = await import("payload");
|
const { getPayload } = await import("payload");
|
||||||
(getPayload as ReturnType<typeof vi.fn>).mockResolvedValue(stub);
|
(getPayload as ReturnType<typeof vi.fn>).mockResolvedValue(stub);
|
||||||
|
|
||||||
const repo = new PayloadHeaderRepository(stubPayloadConfig);
|
const repo = new HeaderRepository(stubPayloadConfig);
|
||||||
const header = await repo.getHeader();
|
const header = await repo.getHeader();
|
||||||
|
|
||||||
expect(header.logoId).toBe("scalar-id");
|
expect(header.logoId).toBe("scalar-id");
|
||||||
@@ -64,7 +64,7 @@ describe("PayloadHeaderRepository", () => {
|
|||||||
const { getPayload } = await import("payload");
|
const { getPayload } = await import("payload");
|
||||||
(getPayload as ReturnType<typeof vi.fn>).mockResolvedValue(stub);
|
(getPayload as ReturnType<typeof vi.fn>).mockResolvedValue(stub);
|
||||||
|
|
||||||
const repo = new PayloadHeaderRepository(stubPayloadConfig);
|
const repo = new HeaderRepository(stubPayloadConfig);
|
||||||
const header = await repo.getHeader();
|
const header = await repo.getHeader();
|
||||||
|
|
||||||
expect(header.logoId).toBeUndefined();
|
expect(header.logoId).toBeUndefined();
|
||||||
@@ -79,7 +79,7 @@ describe("PayloadHeaderRepository", () => {
|
|||||||
const { getPayload } = await import("payload");
|
const { getPayload } = await import("payload");
|
||||||
(getPayload as ReturnType<typeof vi.fn>).mockResolvedValue(stub);
|
(getPayload as ReturnType<typeof vi.fn>).mockResolvedValue(stub);
|
||||||
|
|
||||||
const repo = new PayloadHeaderRepository(stubPayloadConfig);
|
const repo = new HeaderRepository(stubPayloadConfig);
|
||||||
const header = await repo.getHeader();
|
const header = await repo.getHeader();
|
||||||
|
|
||||||
expect(header.items[0]?.label).toBe("");
|
expect(header.items[0]?.label).toBe("");
|
||||||
@@ -3,7 +3,7 @@ import { injectable } from "inversify";
|
|||||||
import { getPayload } from "payload";
|
import { getPayload } from "payload";
|
||||||
import type { SanitizedConfig } from "payload";
|
import type { SanitizedConfig } from "payload";
|
||||||
|
|
||||||
import type { IHeaderRepository } from "../../application/repositories/header-repository.interface";
|
import type { IHeaderRepository } from "../../application/repositories/header.repository.interface";
|
||||||
import type { Header, HeaderItem } from "../../entities/models/header";
|
import type { Header, HeaderItem } from "../../entities/models/header";
|
||||||
|
|
||||||
type PayloadHeaderGlobal = {
|
type PayloadHeaderGlobal = {
|
||||||
@@ -16,7 +16,7 @@ type PayloadHeaderGlobal = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
@injectable()
|
@injectable()
|
||||||
export class PayloadHeaderRepository implements IHeaderRepository {
|
export class HeaderRepository implements IHeaderRepository {
|
||||||
private config: SanitizedConfig;
|
private config: SanitizedConfig;
|
||||||
|
|
||||||
constructor(config: SanitizedConfig) {
|
constructor(config: SanitizedConfig) {
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
import { beforeEach, describe, expect, it } from "vitest";
|
import { beforeEach, describe, expect, it } from "vitest";
|
||||||
import { navigationContainer } from "@/di/container";
|
import { navigationContainer } from "@/di/container";
|
||||||
import { NAVIGATION_SYMBOLS } from "@/di/symbols";
|
import { NAVIGATION_SYMBOLS } from "@/di/symbols";
|
||||||
import { MockHeaderRepository } from "@/infrastructure/repositories/mock-header.repository";
|
import { MockHeaderRepository } from "@/infrastructure/repositories/header.repository.mock";
|
||||||
import type { IHeaderRepository } from "@/application/repositories/header-repository.interface";
|
import type { IHeaderRepository } from "@/application/repositories/header.repository.interface";
|
||||||
import { navigationRouter } from "./router";
|
import { navigationRouter } from "./router";
|
||||||
|
|
||||||
describe("navigationRouter", () => {
|
describe("navigationRouter", () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user