import { ConflictException } from '@nestjs/common'; import { YardsService } from './yards.service'; import type { Yard } from '../entities/yard.entity'; const sebeta = { id: 'yard-1', code: 'LEGACY_DEST', label: 'Sebeta' } as Yard; const service = (): YardsService => new YardsService( { findById: async (id: string) => ({ ...sebeta, id }), findByCode: async () => null, findByLabelInsensitive: async (label: string) => label.trim().toLowerCase() === 'sebeta' ? sebeta : null, create: async (d: Partial) => d as Yard, update: async (_id: string, d: Partial) => d as Yard, } as never, { resolveCreateOrder: async () => 1 } as never, ); describe('duplicate yard labels are rejected', () => { it('blocks create even when the generated code differs (Sebeta vs LEGACY_DEST)', async () => { await expect( service().create({ label: ' sebeta ', country: 'ET' } as never), ).rejects.toThrow(ConflictException); }); it('blocks renaming a yard onto another yard label, allows renaming itself', async () => { await expect( service().update('yard-2', { label: 'SEBETA' } as never), ).rejects.toThrow(ConflictException); await expect( service().update('yard-1', { label: 'Sebeta' } as never), ).resolves.toBeTruthy(); }); });