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:
@@ -1,6 +1,6 @@
|
||||
import { it, expect, beforeEach } from "vitest";
|
||||
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";
|
||||
|
||||
export const articlesRepositoryContract =
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { beforeEach, describe, expect, it } from "vitest";
|
||||
import { blogContainer } from "../../di/container";
|
||||
import { BLOG_SYMBOLS } from "../../di/symbols";
|
||||
import type { IArticlesRepository } from "../../application/repositories/articles-repository.interface";
|
||||
import { MockArticlesRepository } from "../../infrastructure/repositories/mock-articles.repository";
|
||||
import type { IArticlesRepository } from "../../application/repositories/articles.repository.interface";
|
||||
import { MockArticlesRepository } from "../../infrastructure/repositories/articles.repository.mock";
|
||||
import { createArticleUseCase } from "./create-article.use-case";
|
||||
|
||||
describe("createArticleUseCase", () => {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import type { Article } from "../../entities/models/article";
|
||||
import { blogContainer } from "../../di/container";
|
||||
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 {
|
||||
return title
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { beforeEach, describe, expect, it } from "vitest";
|
||||
import { blogContainer } from "../../di/container";
|
||||
import { BLOG_SYMBOLS } from "../../di/symbols";
|
||||
import type { IArticlesRepository } from "../../application/repositories/articles-repository.interface";
|
||||
import { MockArticlesRepository } from "../../infrastructure/repositories/mock-articles.repository";
|
||||
import type { IArticlesRepository } from "../../application/repositories/articles.repository.interface";
|
||||
import { MockArticlesRepository } from "../../infrastructure/repositories/articles.repository.mock";
|
||||
import { articleFactory } from "../../__factories__/article.factory";
|
||||
import { getArticlesUseCase } from "./get-articles.use-case";
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import type { Article } from "../../entities/models/article";
|
||||
import { blogContainer } from "../../di/container";
|
||||
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?: {
|
||||
status?: string;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import type { SanitizedConfig } from "payload";
|
||||
import { blogContainer } from "./container";
|
||||
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 {
|
||||
if (blogContainer.isBound(BLOG_SYMBOLS.IArticlesRepository)) {
|
||||
@@ -9,5 +9,5 @@ export function bindProductionBlog(config: SanitizedConfig): void {
|
||||
}
|
||||
blogContainer
|
||||
.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 { BLOG_SYMBOLS } from "./symbols";
|
||||
import { BlogModule } from "./module";
|
||||
import { MockArticlesRepository } from "../infrastructure/repositories/mock-articles.repository";
|
||||
import type { IArticlesRepository } from "../application/repositories/articles-repository.interface";
|
||||
import { MockArticlesRepository } from "../infrastructure/repositories/articles.repository.mock";
|
||||
import type { IArticlesRepository } from "../application/repositories/articles.repository.interface";
|
||||
|
||||
describe("blogContainer", () => {
|
||||
beforeEach(() => {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { ContainerModule, type interfaces } from "inversify";
|
||||
|
||||
import type { IArticlesRepository } from "../application/repositories/articles-repository.interface";
|
||||
import { MockArticlesRepository } from "../infrastructure/repositories/mock-articles.repository";
|
||||
import type { IArticlesRepository } from "../application/repositories/articles.repository.interface";
|
||||
import { MockArticlesRepository } from "../infrastructure/repositories/articles.repository.mock";
|
||||
import { BLOG_SYMBOLS } from "./symbols";
|
||||
|
||||
export const BlogModule = new ContainerModule((bind: interfaces.Bind) => {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
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";
|
||||
|
||||
describe("MockArticlesRepository", () => {
|
||||
@@ -1,7 +1,7 @@
|
||||
import "reflect-metadata";
|
||||
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";
|
||||
|
||||
@injectable()
|
||||
@@ -1,5 +1,5 @@
|
||||
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 { stubPayloadConfig } from "@repo/core-testing/payload/stub-config";
|
||||
|
||||
@@ -94,13 +94,13 @@ vi.mock("payload", () => ({
|
||||
// Contract suite
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
describe("PayloadArticlesRepository", () => {
|
||||
describe("ArticlesRepository", () => {
|
||||
describe("contract", () => {
|
||||
articlesRepositoryContract.run(async () => {
|
||||
const stub = buildPayloadStub();
|
||||
const { getPayload } = await import("payload");
|
||||
(getPayload as ReturnType<typeof vi.fn>).mockResolvedValue(stub);
|
||||
return new PayloadArticlesRepository(stubPayloadConfig);
|
||||
return new ArticlesRepository(stubPayloadConfig);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -133,7 +133,7 @@ describe("PayloadArticlesRepository", () => {
|
||||
find: findMock,
|
||||
});
|
||||
|
||||
const repo = new PayloadArticlesRepository(stubPayloadConfig);
|
||||
const repo = new ArticlesRepository(stubPayloadConfig);
|
||||
const result = await repo.getArticleBySlug("hello");
|
||||
|
||||
expect(findMock).toHaveBeenCalledWith({
|
||||
@@ -155,7 +155,7 @@ describe("PayloadArticlesRepository", () => {
|
||||
find: vi.fn().mockResolvedValue({ docs: [] }),
|
||||
});
|
||||
|
||||
const repo = new PayloadArticlesRepository(stubPayloadConfig);
|
||||
const repo = new ArticlesRepository(stubPayloadConfig);
|
||||
const result = await repo.getArticleBySlug("missing");
|
||||
expect(result).toBeUndefined();
|
||||
});
|
||||
@@ -3,7 +3,7 @@ import { injectable } from "inversify";
|
||||
import { getPayload } 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";
|
||||
|
||||
type PayloadArticleDoc = {
|
||||
@@ -37,7 +37,7 @@ function mapDoc(doc: PayloadArticleDoc): Article {
|
||||
}
|
||||
|
||||
@injectable()
|
||||
export class PayloadArticlesRepository implements IArticlesRepository {
|
||||
export class ArticlesRepository implements IArticlesRepository {
|
||||
private config: SanitizedConfig;
|
||||
|
||||
constructor(config: SanitizedConfig) {
|
||||
@@ -1,8 +1,8 @@
|
||||
import { beforeEach, describe, expect, it } from "vitest";
|
||||
import { blogContainer } from "../../di/container";
|
||||
import { BLOG_SYMBOLS } from "../../di/symbols";
|
||||
import { MockArticlesRepository } from "../../infrastructure/repositories/mock-articles.repository";
|
||||
import type { IArticlesRepository } from "../../application/repositories/articles-repository.interface";
|
||||
import { MockArticlesRepository } from "../../infrastructure/repositories/articles.repository.mock";
|
||||
import type { IArticlesRepository } from "../../application/repositories/articles.repository.interface";
|
||||
import { blogRouter } from "./router";
|
||||
import { articleFactory } from "../../__factories__/article.factory.js";
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { beforeEach, describe, expect, it } from "vitest";
|
||||
import { blogContainer } from "../../di/container";
|
||||
import { BLOG_SYMBOLS } from "../../di/symbols";
|
||||
import { MockArticlesRepository } from "../../infrastructure/repositories/mock-articles.repository";
|
||||
import type { IArticlesRepository } from "../../application/repositories/articles-repository.interface";
|
||||
import { MockArticlesRepository } from "../../infrastructure/repositories/articles.repository.mock";
|
||||
import type { IArticlesRepository } from "../../application/repositories/articles.repository.interface";
|
||||
import { InputParseError } from "../../entities/errors/common";
|
||||
import {
|
||||
createArticleController,
|
||||
|
||||
@@ -4,7 +4,7 @@ import { InputParseError } from "../../entities/errors/common";
|
||||
import type { Article } from "../../entities/models/article";
|
||||
import { blogContainer } from "../../di/container";
|
||||
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 { createArticleUseCase } from "../../application/use-cases/create-article.use-case";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user