import { describe, test, expect } from 'vitest'; import { toSolutionListView, toSolutionTypeView } from './solutionListMapper'; /** * 单元测试: toSolutionTypeView */ describe('toSolutionTypeView', () => { const baseData: SolutionType = { id: 1, translations: [ { id: 1, name: 'Type Name', }, ], sort: 5, }; test('convert raw data to SolutionTypeView correctly', () => { const rawData: SolutionType = { ...baseData }; expect(toSolutionTypeView(rawData)).toEqual({ id: '1', name: 'Type Name', sort: 5, }); }); test('convert raw data with missing translations', () => { const rawData: SolutionType = { ...baseData, translations: [] }; expect(toSolutionTypeView(rawData)).toEqual({ id: '1', name: '', sort: 5, }); }); test('convert raw data with missing sort', () => { const rawData: SolutionType = { ...baseData, sort: undefined }; expect(toSolutionTypeView(rawData)).toEqual({ id: '1', name: 'Type Name', sort: 999, }); }); test('convert null input to default value', () => { const rawData: SolutionType | string | null = null; expect(toSolutionTypeView(rawData)).toEqual({ id: '-1', name: 'uncategory', sort: 999, }); }); }); /** * 单元测试: toSolutionListView */ describe('toSolutionListView', () => { const baseData: Solution = { id: 1, translations: [ { id: 1, title: 'Solution Title', summary: 'Solution Summary' }, ], type: { id: 1, translations: [{ id: 1, name: 'Type Name' }], sort: 1, }, }; test('convert raw data to SolutionListView correctly', () => { const rawData: Solution = { ...baseData }; expect(toSolutionListView(rawData)).toEqual({ id: '1', title: 'Solution Title', summary: 'Solution Summary', solution_type: { id: '1', name: 'Type Name', sort: 1, }, cover: '', }); }); test('convert raw data with missing translations', () => { const rawData: Solution = { ...baseData, translations: [], }; expect(toSolutionListView(rawData)).toEqual({ id: '1', title: '', summary: '', solution_type: { id: '1', name: 'Type Name', sort: 1, }, cover: '', }); }); });