diff --git a/apps/server-nestjs/src/modules/registry/registry-testing.utils.ts b/apps/server-nestjs/src/modules/registry/registry-testing.utils.ts index efe5c1a16d..d627fe69aa 100644 --- a/apps/server-nestjs/src/modules/registry/registry-testing.utils.ts +++ b/apps/server-nestjs/src/modules/registry/registry-testing.utils.ts @@ -1,6 +1,9 @@ import type { HttpHandler } from 'msw' +import type { ProjectWithDetails } from './registry-datastore.service' +import type { RegistryResponse } from './registry-http-client.service' import { faker } from '@faker-js/faker' import { Collection } from '@msw/data' +import { HttpStatus } from '@nestjs/common' import { http, HttpResponse } from 'msw' import { z } from 'zod' @@ -71,6 +74,37 @@ const harborProjectBodySchema = z.object({ storage_limit: z.number().optional(), }) +export function makeOkResponse(data: T): RegistryResponse { + return { status: HttpStatus.OK, data } +} + +export function makeCreatedResponse(data: T): RegistryResponse { + return { status: HttpStatus.CREATED, data } +} + +export function makeNoContent(): RegistryResponse { + return { status: HttpStatus.NO_CONTENT, data: null } +} + +export function makeConflictResponse(): RegistryResponse { + return { + status: HttpStatus.BAD_REQUEST, + data: { errors: [{ code: 'CONFLICT', message: 'already exists' }] } as T, + } +} + +export function makeHttpConflictResponse(): RegistryResponse { + return { status: HttpStatus.CONFLICT, data: null } +} + +export function makeProjectWithDetails(overrides: Partial = {}): ProjectWithDetails { + return { + slug: faker.helpers.slugify(`test-project-${faker.string.uuid()}`), + plugins: [], + ...overrides, + } satisfies ProjectWithDetails +} + export function makeRegistryDb() { return { projects: new Collection({ schema: harborProjectSchema }),