import { describe, expect, it } from 'vitest' import { resolveKbxGridStatus } from '@kbx/ui' import { kbxStatusCatalog, kbxStatusOptions, normalizeKbxStatusValue } from '../../apps/web/src/registry/statusCatalog' describe('OMS order status canonical contract', () => { it('keeps the API value canonical while presenting a familiar Korean label', () => { const resolved = resolveKbxGridStatus({ definitions:kbxStatusCatalog.orderLifecycle }, 'DRAFT') expect(resolved).toMatchObject({ rawValue:'DRAFT', label:'작성', semantic:'draft', unknown:false }) }) it('derives shipment search options from the same dictionary used by the grid', () => { const options = kbxStatusOptions(kbxStatusCatalog.orderShipment) expect(options).toContainEqual({ value:'READY', label:'출고대기' }) expect(options).toContainEqual({ value:'ERROR', label:'오류' }) expect(options.some(option => option.value === '출고대기')).toBe(false) }) it('rejects display labels and unknown values as persisted canonical filters', () => { expect(normalizeKbxStatusValue(kbxStatusCatalog.orderShipment, 'READY')).toBe('READY') expect(normalizeKbxStatusValue(kbxStatusCatalog.orderShipment, '출고대기')).toBeNull() expect(normalizeKbxStatusValue(kbxStatusCatalog.orderShipment, 'NEW_VENDOR_STATE')).toBeNull() }) })