import { detectSkuOrBarcodeName } from '@/lib/sku-barcode-detector' describe('detectSkuOrBarcodeName(SKU 图文件名判别)', () => { it.each([ // 条码:SKU 编码 + N数字V数字 段(生产数据真实形态) ['DNZ038521N1280V01', 'barcode'], ['CY001306N35V01', 'barcode'], ['BJ017603N1241V01', 'barcode'], ['cy001301N35', 'barcode'], // 小写品类码也能识别 ['GBSFY-DNZ038415N1261V01', 'barcode'], // 带店铺前缀 ])('%s → %s', (input, expected) => { expect(detectSkuOrBarcodeName(input)?.type).toBe(expected) // value 保留原始大小写 expect(detectSkuOrBarcodeName(input)?.value).toBe(input) }) it.each([ // SKU 编号:品类码 + 纯数字 ['DNZ038521', 'skuCode'], ['AD033601', 'skuCode'], ['GBSFY-AD0360', 'skuCode'], // 带店铺前缀 ['MKHDNZ0409260600987', 'skuCode'], // MKH=模块化前缀,无连字符直接拼品类码(测试人员真实用例) ['GBSFYAD0360', 'skuCode'], // 店铺前缀无连字符形态 ])('%s → %s', (input, expected) => { expect(detectSkuOrBarcodeName(input)?.type).toBe(expected) }) it.each([ ['ZH-SZT018001-AD033501N1256V01'], // 上传人员确认:N/V 仍属于组合 SKU 编码 ['ZH-SZT018001-AD033501'], ['ZH-SZT018001-AD033501-BJ017603N1241V01'], ['zh-szt018001-ad033501n1256v01'], ['MKHDNZ0409260601010+GBGJ-SJ038016N1410V01'], ['mkhdnz0409260601010+gbgj-sj038016n1410v01'], ['DNZ038521+AD033601+BJ017603N1241V01'], ])('%s → 组合 SKU 整串保留', (input) => { expect(detectSkuOrBarcodeName(input)).toEqual({ type: 'skuCode', value: input }) }) it.each([ // 命名不规范:一律不自动填 ['1'], ['10'], ['02-1'], ['MKH-DNZ038528N1280V01-1-GBGJ-DNZ038415N1261V01-5'], // 复合串 ['GBPM-BJ019201N1280V01场景'], // 含中文 ['ZH-AD033501N1256V01'], // 组合 SKU 至少包含两个产品段 ['ZH--SZT018001-AD033501'], ['ZH-SZT018001-AD033501-'], ['ZH-SZT018001-组合'], ['MKHDNZ0409260601010+'], ['+GBGJ-SJ038016N1410V01'], ['MKHDNZ0409260601010++GBGJ-SJ038016N1410V01'], ['MKHDNZ0409260601010+随便起的名字'], ['随便起的名字'], [''], ])('%s → 不填(null)', (input) => { expect(detectSkuOrBarcodeName(input)).toBeNull() }) })