diff --git a/packages/auth/src/di/container.test.ts b/packages/auth/src/di/container.test.ts index 73399e3..6aa8424 100644 --- a/packages/auth/src/di/container.test.ts +++ b/packages/auth/src/di/container.test.ts @@ -6,6 +6,7 @@ import { MockUsersRepository } from "@/infrastructure/repositories/mock-users.re import { MockAuthenticationService } from "@/infrastructure/services/mock-authentication.service"; import type { IUsersRepository } from "@/application/repositories/users-repository.interface"; import type { IAuthenticationService } from "@/application/services/authentication-service.interface"; +import { userFactory } from "@/__factories__/user.factory"; describe("authContainer", () => { beforeEach(() => { @@ -36,11 +37,8 @@ describe("authContainer", () => { AUTH_SYMBOLS.IAuthenticationService, ); // The service should be able to validate against the seeded users - const { session, cookie } = await service.createSession({ - id: "1", - username: "alice", - passwordHash: "hashed_password_alice", - }); + const user = userFactory.build({ id: "1", username: "alice", passwordHash: "hashed_password_alice" }); + const { session, cookie } = await service.createSession(user); expect(session.userId).toBe("1"); expect(cookie.value).toBe(session.id); diff --git a/packages/blog/src/integrations/api/router.test.ts b/packages/blog/src/integrations/api/router.test.ts index 86faf1c..bc2c1e0 100644 --- a/packages/blog/src/integrations/api/router.test.ts +++ b/packages/blog/src/integrations/api/router.test.ts @@ -4,6 +4,7 @@ import { BLOG_SYMBOLS } from "../../di/symbols"; import { MockArticlesRepository } from "../../infrastructure/repositories/mock-articles.repository"; import type { IArticlesRepository } from "../../application/repositories/articles-repository.interface"; import { blogRouter } from "./router"; +import { articleFactory } from "../../__factories__/article.factory.js"; describe("blogRouter", () => { let repo: MockArticlesRepository; @@ -26,17 +27,9 @@ describe("blogRouter", () => { }); it("articleBySlug returns the article when present", async () => { - const now = new Date(); - await repo.createArticle({ - id: "1", - title: "T", - slug: "t", - content: null, - status: "draft", - authorId: "u1", - createdAt: now, - updatedAt: now, - }); + await repo.createArticle( + articleFactory.build({ id: "1", title: "T", slug: "t", authorId: "u1" }), + ); const caller = blogRouter.createCaller({}); const result = await caller.articleBySlug({ slug: "t" }); diff --git a/packages/media/tsconfig.json b/packages/media/tsconfig.json index e6c2727..a936111 100644 --- a/packages/media/tsconfig.json +++ b/packages/media/tsconfig.json @@ -4,10 +4,11 @@ "outDir": "dist", "rootDir": ".", "lib": ["ES2022", "DOM"], + "jsx": "preserve", "paths": { "@/*": ["./src/*"] } }, - "include": ["src/**/*"], + "include": ["src/**/*", "tests/**/*"], "exclude": ["node_modules", "dist"] } diff --git a/packages/navigation/src/__factories__/header.factory.test.ts b/packages/navigation/src/__factories__/header.factory.test.ts index 6f8222b..49569c3 100644 --- a/packages/navigation/src/__factories__/header.factory.test.ts +++ b/packages/navigation/src/__factories__/header.factory.test.ts @@ -7,7 +7,7 @@ describe("headerFactory", () => { it("returns a Header with stable defaults", () => { const h = headerFactory.build(); expect(h.items).toHaveLength(0); - expect(h.logoId).toBeUndefined(); + expect(h.logoId).toBe("logo-1"); }); it("applies overrides", () => { @@ -26,4 +26,11 @@ describe("headerFactory", () => { expect(a.items).toHaveLength(1); expect(b.items).toHaveLength(0); }); + + it("logoId reflects sequence for deterministic buildList output", () => { + const first = headerFactory.build(); + const second = headerFactory.build(); + expect(first.logoId).toBe("logo-1"); + expect(second.logoId).toBe("logo-2"); + }); }); diff --git a/packages/navigation/src/__factories__/header.factory.ts b/packages/navigation/src/__factories__/header.factory.ts index 225b1b8..b3f58fc 100644 --- a/packages/navigation/src/__factories__/header.factory.ts +++ b/packages/navigation/src/__factories__/header.factory.ts @@ -1,6 +1,7 @@ import { defineFactory } from "@repo/core-testing/factory"; import type { Header } from "../entities/header.js"; -export const headerFactory = defineFactory
(() => ({ +export const headerFactory = defineFactory
(({ sequence }) => ({ + logoId: `logo-${sequence}`, items: [], })); diff --git a/packages/navigation/src/__factories__/index.ts b/packages/navigation/src/__factories__/index.ts index bd3d794..8c55595 100644 --- a/packages/navigation/src/__factories__/index.ts +++ b/packages/navigation/src/__factories__/index.ts @@ -1 +1,2 @@ export { headerFactory } from "./header.factory.js"; +export { navItemFactory } from "./nav-item.factory.js"; diff --git a/packages/navigation/src/__factories__/nav-item.factory.test.ts b/packages/navigation/src/__factories__/nav-item.factory.test.ts new file mode 100644 index 0000000..c032763 --- /dev/null +++ b/packages/navigation/src/__factories__/nav-item.factory.test.ts @@ -0,0 +1,29 @@ +import { describe, it, expect, beforeEach } from "vitest"; +import { navItemFactory } from "@/__factories__/nav-item.factory"; + +describe("navItemFactory", () => { + beforeEach(() => navItemFactory.reset()); + + it("returns a HeaderItem with stable defaults", () => { + const item = navItemFactory.build(); + expect(item.label).toBe("Item 1"); + expect(item.href).toBe("/item-1"); + expect(item.external).toBe(false); + }); + + it("applies overrides", () => { + const item = navItemFactory.build({ label: "Home", href: "/", external: true }); + expect(item.label).toBe("Home"); + expect(item.href).toBe("/"); + expect(item.external).toBe(true); + }); + + it("increments sequence per build", () => { + const a = navItemFactory.build(); + const b = navItemFactory.build(); + expect(a.label).toBe("Item 1"); + expect(b.label).toBe("Item 2"); + expect(a.href).toBe("/item-1"); + expect(b.href).toBe("/item-2"); + }); +}); diff --git a/packages/navigation/src/__factories__/nav-item.factory.ts b/packages/navigation/src/__factories__/nav-item.factory.ts new file mode 100644 index 0000000..01cf7ee --- /dev/null +++ b/packages/navigation/src/__factories__/nav-item.factory.ts @@ -0,0 +1,8 @@ +import { defineFactory } from "@repo/core-testing/factory"; +import type { HeaderItem } from "../entities/header.js"; + +export const navItemFactory = defineFactory(({ sequence }) => ({ + label: `Item ${sequence}`, + href: `/item-${sequence}`, + external: false, +}));