@@ -2,7 +2,7 @@ import { defaultLocalize, ENUM_ITEMS as NODE_ENUM_ITEMS } from '@enum-plus';
22import { getLocales , localizeConfigData , StandardWeekConfig } from '../data/week-config' ;
33import { getStandardWeekData } from '../data/week-data' ;
44import type TestEngineBase from '../engines/base' ;
5- import { getOptionsData , pickArray } from '../utils' ;
5+ import { copyList , pickArray } from '../utils' ;
66
77const testEnumValues = ( engine : TestEngineBase ) => {
88 engine . describe ( 'The EnumItemsArray api' , ( ) => {
@@ -55,19 +55,14 @@ export function addEnumValuesTestSuite(engine: TestEngineBase) {
5555 ) ;
5656
5757 engine . test (
58- 'enums.toList should generate an object array for AntDesign Select ' ,
58+ 'enums.toList should generate an object array' ,
5959 ( { EnumPlus : { Enum } , WeekConfig : { StandardWeekConfig, locales } } ) => {
6060 const weekEnum = Enum ( StandardWeekConfig ) ;
61- return { weekEnum, locales } ;
61+ const defaultListItems = weekEnum . toList ( ) ;
62+ return { locales, defaultListItems } ;
6263 } ,
63- ( { weekEnum, locales } ) => {
64- engine
65- . expect ( getOptionsData ( weekEnum . toList ( ) ) )
66- . toEqual ( pickArray ( getStandardWeekData ( locales ) , [ 'label' , 'value' ] ) ) ;
67- // todo: 测试自定义字段名
68- engine
69- . expect ( getOptionsData ( weekEnum . toList ( { } ) ) )
70- . toEqual ( pickArray ( getStandardWeekData ( locales ) , [ 'label' , 'value' ] ) ) ;
64+ ( { locales, defaultListItems } ) => {
65+ engine . expect ( copyList ( defaultListItems ) ) . toEqual ( pickArray ( getStandardWeekData ( locales ) , [ 'value' , 'label' ] ) ) ;
7166
7267 // Add first-option by boolean flag
7368 // const withDefaultFirstOption = weekEnum.toList({ firstOption: true });
@@ -106,6 +101,76 @@ export function addEnumValuesTestSuite(engine: TestEngineBase) {
106101 }
107102 ) ;
108103
104+ engine . test (
105+ 'enums.toList should generate an object array with custom field names' ,
106+ ( { EnumPlus : { Enum } , WeekConfig : { StandardWeekConfig, locales } } ) => {
107+ const weekEnum = Enum ( StandardWeekConfig ) ;
108+ const idNameListItems = weekEnum . toList ( {
109+ valueField : 'id' ,
110+ labelField : 'name' ,
111+ } ) ;
112+ const valueNameListItems = weekEnum . toList ( {
113+ valueField : 'value' ,
114+ labelField : 'name' ,
115+ } ) ;
116+ const idLabelListItems = weekEnum . toList ( {
117+ valueField : 'id' ,
118+ labelField : 'label' ,
119+ } ) ;
120+ return { locales, idNameListItems, valueNameListItems, idLabelListItems } ;
121+ } ,
122+ ( { locales, idNameListItems, valueNameListItems, idLabelListItems } ) => {
123+ engine . expect ( Array . from ( idNameListItems ) ) . toEqual (
124+ getStandardWeekData ( locales ) . map ( ( item ) => ( {
125+ id : item . value ,
126+ name : item . label ,
127+ } ) )
128+ ) ;
129+ engine . expect ( Array . from ( valueNameListItems ) ) . toEqual (
130+ getStandardWeekData ( locales ) . map ( ( item ) => ( {
131+ value : item . value ,
132+ name : item . label ,
133+ } ) )
134+ ) ;
135+ engine . expect ( Array . from ( idLabelListItems ) ) . toEqual (
136+ getStandardWeekData ( locales ) . map ( ( item ) => ( {
137+ id : item . value ,
138+ label : item . label ,
139+ } ) )
140+ ) ;
141+ }
142+ ) ;
143+
144+ engine . test (
145+ 'enums.toList should generate an object array with custom field names in function style' ,
146+ ( { EnumPlus : { Enum } , WeekConfig : { StandardWeekConfig, locales } } ) => {
147+ const weekEnum = Enum ( StandardWeekConfig ) ;
148+ const staticFieldListItems = weekEnum . toList ( {
149+ valueField : ( ) => 'id' as const ,
150+ labelField : ( ) => 'name' as const ,
151+ } ) ;
152+ const dynamicFieldListItems = weekEnum . toList ( {
153+ valueField : ( item ) => `id-${ item . value } ` ,
154+ labelField : ( item ) => `name-${ item . value } ` ,
155+ } ) ;
156+ return { locales, staticFieldListItems, dynamicFieldListItems } ;
157+ } ,
158+ ( { locales, staticFieldListItems, dynamicFieldListItems } ) => {
159+ engine . expect ( Array . from ( staticFieldListItems ) ) . toEqual (
160+ getStandardWeekData ( locales ) . map ( ( item ) => ( {
161+ id : item . value ,
162+ name : item . label ,
163+ } ) )
164+ ) ;
165+ engine . expect ( Array . from ( dynamicFieldListItems ) ) . toEqual (
166+ getStandardWeekData ( locales ) . map ( ( item ) => ( {
167+ [ 'id-' + item . value ] : item . value ,
168+ [ 'name-' + item . value ] : item . label ,
169+ } ) )
170+ ) ;
171+ }
172+ ) ;
173+
109174 engine . test (
110175 'enums.toValueMap should generate an object array for AntDesignPro' ,
111176 ( { EnumPlus : { Enum } , WeekConfig : { StandardWeekConfig } } ) => {
0 commit comments