183 lines
3.8 KiB
TypeScript
183 lines
3.8 KiB
TypeScript
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: {
|
|
id: 'cover-file-uuid-1234',
|
|
},
|
|
product_type: {
|
|
id: 1,
|
|
translations: [{ id: 20, name: 'Type Name' }],
|
|
sort: 1,
|
|
},
|
|
};
|
|
|
|
expect(toProductListView(rawData)).toEqual({
|
|
id: 1,
|
|
name: 'Product Name',
|
|
summary: 'Product Summary',
|
|
cover: 'cover-file-uuid-1234',
|
|
product_type: {
|
|
id: 1,
|
|
name: 'Type Name',
|
|
sort: 1,
|
|
},
|
|
});
|
|
});
|
|
|
|
test('convert raw data with missing translations', () => {
|
|
const rawData: Product = {
|
|
id: 1,
|
|
translations: [],
|
|
cover: {
|
|
id: 'cover-file-uuid-1234',
|
|
},
|
|
product_type: {
|
|
id: 20,
|
|
translations: [],
|
|
sort: 1,
|
|
},
|
|
};
|
|
|
|
expect(toProductListView(rawData)).toEqual({
|
|
id: 1,
|
|
name: '',
|
|
summary: '',
|
|
cover: 'cover-file-uuid-1234',
|
|
product_type: {
|
|
id: 20,
|
|
name: '',
|
|
sort: 1,
|
|
},
|
|
});
|
|
});
|
|
});
|
|
|
|
/**
|
|
* 单元测试: 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: [],
|
|
});
|
|
});
|
|
});
|