feat: 产品视图模型添加状态
- 产品状态:从Directus Schema获取Product的Status字段 - 视图字段:添加Status字段用于标示产品状态 - 测试方法:为Status字段添加单元测试
This commit is contained in:
@ -456,9 +456,9 @@ describe('toProductDocumentView', () => {
|
||||
* 单元测试: toProductView
|
||||
*/
|
||||
describe('toProductView', () => {
|
||||
test('convert raw data to ProductView correctly', () => {
|
||||
const rawData: Product = {
|
||||
const baseData: Product = {
|
||||
id: 1,
|
||||
status: 'in-production',
|
||||
translations: [
|
||||
{
|
||||
id: 1,
|
||||
@ -468,9 +468,14 @@ describe('toProductView', () => {
|
||||
},
|
||||
],
|
||||
};
|
||||
test('convert raw data to ProductView correctly', () => {
|
||||
const rawData: Product = {
|
||||
...baseData,
|
||||
};
|
||||
|
||||
expect(toProductView(rawData)).toEqual({
|
||||
id: '1',
|
||||
status: 'in-production',
|
||||
name: 'Product Name',
|
||||
summary: 'Product Summary',
|
||||
description: 'Product Description',
|
||||
@ -483,12 +488,13 @@ describe('toProductView', () => {
|
||||
|
||||
test('convert raw data with missing translations', () => {
|
||||
const rawData: Product = {
|
||||
id: 1,
|
||||
...baseData,
|
||||
translations: [],
|
||||
};
|
||||
|
||||
expect(toProductView(rawData)).toEqual({
|
||||
id: '1',
|
||||
status: 'in-production',
|
||||
name: '',
|
||||
summary: '',
|
||||
description: '',
|
||||
@ -498,4 +504,23 @@ describe('toProductView', () => {
|
||||
specs: [],
|
||||
});
|
||||
});
|
||||
|
||||
test('conert raw data with missing status', () => {
|
||||
const rawData: Product = {
|
||||
...baseData,
|
||||
status: undefined,
|
||||
};
|
||||
|
||||
expect(toProductView(rawData)).toEqual({
|
||||
id: '1',
|
||||
status: 'discontinued',
|
||||
name: 'Product Name',
|
||||
summary: 'Product Summary',
|
||||
description: 'Product Description',
|
||||
images: [],
|
||||
documents: [],
|
||||
faqs: [],
|
||||
specs: [],
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@ -219,6 +219,8 @@ export function toProductDocumentView(
|
||||
export function toProductView(raw: Product): ProductView {
|
||||
const trans = raw.translations?.[0];
|
||||
|
||||
const status = raw.status ?? 'discontinued';
|
||||
|
||||
const images = toProductImageView(raw.images ?? []);
|
||||
|
||||
const specs = toProductSpecGroupView(raw.specs ?? []);
|
||||
@ -229,6 +231,7 @@ export function toProductView(raw: Product): ProductView {
|
||||
|
||||
return {
|
||||
id: raw.id.toString(),
|
||||
status: status,
|
||||
name: trans?.name ?? '',
|
||||
summary: trans?.summary ?? '',
|
||||
images: images,
|
||||
|
||||
@ -1,4 +1,7 @@
|
||||
import type { DocumentTypeView } from './document-list-view';
|
||||
import type { Product } from '../directus/my-schema.ts';
|
||||
|
||||
type ProductStatus = Product['status'];
|
||||
|
||||
/**
|
||||
* 产品图片视图模型
|
||||
@ -90,6 +93,9 @@ export interface ProductView {
|
||||
/** 唯一标识符 **/
|
||||
id: string;
|
||||
|
||||
/** 产品状态 **/
|
||||
status: ProductStatus;
|
||||
|
||||
/** 产品名称 **/
|
||||
name: string;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user