refactor(navigation): factory-style use case + controller
- Use case (get-header) → factory function with IGetHeaderUseCase alias - Controller renamed header.controller.ts → get-header.controller.ts (verb-noun); converted to factory function with IGetHeaderController alias - DI module wires factories with .toDynamicValue() - tRPC router resolves controller via container - Use case + controller tests refactored to direct factory injection (no container rebinding) - container.test.ts verifies IGetHeaderUseCase + IGetHeaderController symbols Refactor log: §1, §4.1, §4.2, §5.1 Spec: §6.4 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { getHeaderController } from "@/interface-adapters/controllers/get-header.controller";
|
||||
import { getHeaderUseCase } from "@/application/use-cases/get-header.use-case";
|
||||
import { MockHeaderRepository } from "@/infrastructure/repositories/header.repository.mock";
|
||||
|
||||
describe("getHeaderController", () => {
|
||||
it("returns the header with items", async () => {
|
||||
const repo = new MockHeaderRepository();
|
||||
const useCase = getHeaderUseCase(repo);
|
||||
const controller = getHeaderController(useCase);
|
||||
|
||||
const result = await controller();
|
||||
|
||||
expect(result.items.length).toBeGreaterThan(0);
|
||||
expect(result.items[0]?.label).toBe("Home");
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,10 @@
|
||||
import type { Header } from "../../entities/models/header";
|
||||
import type { IGetHeaderUseCase } from "../../application/use-cases/get-header.use-case";
|
||||
|
||||
export type IGetHeaderController = ReturnType<typeof getHeaderController>;
|
||||
|
||||
export const getHeaderController =
|
||||
(getHeaderUseCase: IGetHeaderUseCase) =>
|
||||
async (): Promise<Header> => {
|
||||
return getHeaderUseCase();
|
||||
};
|
||||
@@ -1,6 +0,0 @@
|
||||
import type { Header } from "../../entities/models/header";
|
||||
import { getHeaderUseCase } from "../../application/use-cases/get-header.use-case";
|
||||
|
||||
export async function getHeaderController(): Promise<Header> {
|
||||
return getHeaderUseCase();
|
||||
}
|
||||
Reference in New Issue
Block a user