import { parseOriginName, originGroupKey } from './origin-name.parser';

describe('parseOriginName', () => {
  it('解析完整四段名（含仓库）', () => {
    expect(
      parseOriginName('美国（不包邮）240g涤纶休闲短裤-DG206-单面印花-美西洛杉矶一仓'),
    ).toEqual({
      country: '美国',
      logisticsLabel: '不包邮',
      productName: '240g涤纶休闲短裤',
      skuCode: 'DG206',
      craftLabel: '单面印花',
      warehouseLabel: '美西洛杉矶一仓',
    });
  });

  it('解析三段名（无仓库）', () => {
    expect(
      parseOriginName('墨西哥（不包邮）180g纯棉女装修身T恤-METP001-单面印花'),
    ).toEqual({
      country: '墨西哥',
      logisticsLabel: '不包邮',
      productName: '180g纯棉女装修身T恤',
      skuCode: 'METP001',
      craftLabel: '单面印花',
      warehouseLabel: null,
    });
  });

  it('物流备注含星号等符号原样保留', () => {
    const r = parseOriginName(
      '波兰（包邮*运费订单结算时支付）250g男女同款抓毛圆领卫衣-PLHM002-双面印花',
    );
    expect(r.logisticsLabel).toBe('包邮*运费订单结算时支付');
    expect(r.skuCode).toBe('PLHM002');
  });

  it('半角括号也能解析', () => {
    const r = parseOriginName('美国(包邮)T恤-DG001-单面印花');
    expect(r.country).toBe('美国');
    expect(r.logisticsLabel).toBe('包邮');
    expect(r.productName).toBe('T恤');
  });

  it('段1无括号时 country=整段、物流为空', () => {
    const r = parseOriginName('美国T恤-DG001-单面印花');
    expect(r.country).toBe('美国T恤');
    expect(r.logisticsLabel).toBeNull();
    expect(r.productName).toBeNull();
  });

  it('两段名：只解析国家/物流/品名/SKU', () => {
    const r = parseOriginName('美国（包邮）T恤-DG001');
    expect(r.skuCode).toBe('DG001');
    expect(r.craftLabel).toBeNull();
    expect(r.warehouseLabel).toBeNull();
  });

  it('一段名/空值/null 安全', () => {
    expect(parseOriginName('随便一个名字').skuCode).toBeNull();
    expect(parseOriginName('随便一个名字').country).toBe('随便一个名字');
    expect(parseOriginName(null).country).toBeNull();
    expect(parseOriginName('').country).toBeNull();
  });

  it('段前后空格被 trim', () => {
    const r = parseOriginName('美国（包邮） T恤 - DG001 - 单面印花');
    expect(r.skuCode).toBe('DG001');
    expect(r.craftLabel).toBe('单面印花');
    expect(r.productName).toBe('T恤');
  });

  it('仓库段含连字符时整体保留', () => {
    const r = parseOriginName('美国（包邮）T恤-DG001-单面印花-某仓-二期');
    expect(r.warehouseLabel).toBe('某仓-二期');
  });
});

describe('originGroupKey', () => {
  it('与 admin truncateToProcess 语义一致：前3段', () => {
    expect(originGroupKey('美国（包邮）T恤-DG001-单面印花-美西一仓')).toBe(
      '美国（包邮）T恤-DG001-单面印花',
    );
  });

  it('物流差异导致不同组', () => {
    expect(originGroupKey('美国（不包邮）T恤-DG001-单面印花')).not.toBe(
      originGroupKey('美国（包邮）T恤-DG001-单面印花'),
    );
  });

  it('空名返回空串', () => {
    expect(originGroupKey(null)).toBe('');
    expect(originGroupKey('')).toBe('');
  });
});
