import { describe, test, expect } from 'vitest'; /** * 单元测试: toProductListView */ describe('toProductListView', () => { test('convert raw data to ProductListView correctly', () => { const rawData: Product = { id: 1, translations: [ { id: 10, name: 'Product Name', summary: 'Product Summary' }, ], cover: 'cover-file-uuid-1234', product_type: { id: 1, translations: [{ id: 20, name: 'Type Name' }], }, }; expect(toProductListView(rawData)).toEqual({ id: 1, name: 'Product Name', summary: 'Product Summary', cover: 'cover-file-uuid-1234', product_type: 'Type Name', }); }); test('convert raw data with missing translations', () => { const rawData: Product = { id: 1, translations: [], cover: 'cover-file-uuid-1234', product_type: { id: 20, translations: [], }, }; expect(toProductListView(rawData)).toEqual({ id: 1, name: '', summary: '', cover: 'cover-file-uuid-1234', product_type: '', }); }); }); /** * 单元测试: toProductSpecView */ describe('toProductSpecView', () => { test('convert raw data to ProductSpecView correctly', () => { const rawData: ProductSpec = { id: 1, translations: [{ id: 1, key: 'Key', value: 'Value' }], }; expect(toProductSpecView(rawData)).toEqual({ id: 1, key: 'Key', value: 'Value', }); }); test('convert raw data with missing translations', () => { const rawData: ProductSpec = { id: 1, translations: [], }; expect(toProductSpecView(rawData)).toEqual({ id: 1, key: '', value: '', }); }); }); /** * 单元测试: toProductSpecGroupView */ describe('toProductSpecGroupView', () => { test('convert raw data to ProductSpecGroupView correctly', () => { const rawData: ProductSpecGroup = { id: 1, translations: [{ id: 1, name: 'Group Name' }], specs: [ { id: 1, translations: [{ id: 1, key: 'Key1', value: 'Value1' }] }, { id: 2, translations: [{ id: 2, key: 'Key2', value: 'Value2' }] }, ], }; expect(toProductSpecGroupView(rawData)).toEqual({ id: 1, name: 'Group Name', specs: [ { id: 1, key: 'Key1', value: 'Value1' }, { id: 2, key: 'Key2', value: 'Value2' }, ], }); }); test('convert raw data with missing translations', () => { const rawData: ProductSpecGroup = { id: 1, translations: [], specs: [], }; expect(toProductSpecGroupView(rawData)).toEqual({ id: 1, name: '', specs: [], }); }); }); /** * 单元测试: toProductView */ describe('toProductView', () => { test('convert raw data to ProductView correctly', () => { const rawData: Product = { id: 1, translations: [ { id: 1, name: 'Product Name', summary: 'Product Summary', description: 'Product Description', }, ], }; expect(toProductView(rawData)).toEqual({ id: 1, name: 'Product Name', summary: 'Product Summary', description: 'Product Description', product_type: '', images: [], documents: [], faqs: [], specs: [], }); }); test('convert raw data with missing translations', () => { const rawData: Product = { id: 1, translations: [], }; expect(toProductView(rawData)).toEqual({ id: 1, name: '', summary: '', description: '', product_type: '', images: [], documents: [], faqs: [], specs: [], }); }); });