11import { afterEach , beforeEach , describe , expect , it , vi } from 'vitest' ;
2- import { nextTick } from 'vue' ;
3- import { MemoizeDict } from './index' ;
2+ import { MemoizeDict } from '.' ;
43
5- // TODO: 需要重写。
64describe ( 'MemoizeDict' , ( ) => {
5+
76 type DictData = {
87 id : number ;
98 label : string ;
109 parent : number ;
1110 } ;
11+
1212 const mockData = [
1313 { id : 1 , label : 'Item 1' , parent : 0 } ,
1414 { id : 2 , label : 'Item 2' , parent : 1 } ,
@@ -17,6 +17,17 @@ describe('MemoizeDict', () => {
1717
1818 const dataFunc = vi . fn ( ) ;
1919
20+ beforeEach ( ( ) => {
21+ dataFunc . mockReset ( ) ;
22+ dataFunc . mockImplementation ( ( dictName : string ) => {
23+ return new Promise < DictData [ ] > ( ( resolve ) => {
24+ setTimeout ( ( ) => {
25+ resolve ( mockData ) ;
26+ } , 100 ) ;
27+ } ) ;
28+ } )
29+ } ) ;
30+
2031 const memoizeDict = new MemoizeDict ( {
2132 fieldNames : {
2233 label : 'label' ,
@@ -27,37 +38,23 @@ describe('MemoizeDict', () => {
2738 {
2839 get : ( _ , key : string ) => ( {
2940 data : async ( ) => {
30- return dataFunc ( key )
41+ return dataFunc ( key ) ;
3142 } ,
3243 } ) ,
3344 }
3445 ) ,
3546 } ) ;
3647
37- beforeEach ( ( ) => {
38- dataFunc . mockReset ( ) ;
39- dataFunc . mockImplementation ( ( dictName : string ) => {
40- return new Promise < DictData [ ] > ( ( resolve ) => {
41- setTimeout ( ( ) => {
42- resolve ( mockData ) ;
43- } , 100 ) ;
44- } ) ;
45- } )
46- } ) ;
47-
4848 it ( 'get()' , async ( ) => {
4949 expect ( memoizeDict . get ( 'test' ) ) . toBeUndefined ( ) ;
50- expect ( dataFunc ) . toBeCalledTimes ( 1 ) ;
5150 expect ( dataFunc ) . toHaveBeenCalledWith ( 'test' ) ;
52-
53- await nextTick ( ) ;
54- await new Promise ( ( resolve ) => setTimeout ( resolve , 100 ) ) ;
55- expect (
56- memoizeDict . get ( 'test' )
57- ) . toBe ( mockData ) ;
51+ expect ( dataFunc ) . toBeCalledTimes ( 1 ) ;
52+ await new Promise ( ( resolve ) => setTimeout ( resolve , 101 ) ) ;
53+ expect ( memoizeDict . get ( 'test' ) ) . toBe ( mockData ) ;
5854 expect ( dataFunc ) . toBeCalledTimes ( 1 ) ;
5955 } ) ;
6056
57+
6158 it ( 'tree()' , async ( ) => {
6259 expect (
6360 memoizeDict . tree ( 'test' )
@@ -86,13 +83,15 @@ describe('MemoizeDict', () => {
8683 expect ( dataFunc ) . toBeCalledTimes ( 0 ) ;
8784 } ) ;
8885
86+
8987 it ( 'item()' , async ( ) => {
9088 expect (
9189 memoizeDict . item ( 'test' , 2 )
9290 ) . toEqual ( { id : 2 , label : 'Item 2' , parent : 1 } ) ;
9391 expect ( dataFunc ) . toBeCalledTimes ( 0 ) ;
9492 } ) ;
9593
94+
9695 it ( 'label()' , async ( ) => {
9796 expect (
9897 memoizeDict . label ( 'test' , 2 )
@@ -114,21 +113,18 @@ describe('MemoizeDict', () => {
114113 expect ( dataFunc ) . toBeCalledTimes ( 0 ) ;
115114 } ) ;
116115
116+
117+
117118 it ( 'fetch()' , async ( ) => {
118- expect (
119- await memoizeDict . fetch ( 'test' )
120- ) . toBe ( mockData ) ;
119+ expect ( await memoizeDict . fetch ( 'test' ) ) . toBe ( mockData ) ;
121120 expect ( dataFunc ) . toBeCalledTimes ( 0 ) ;
122121 } ) ;
123122
124123 it ( 'load()' , async ( ) => {
125- expect (
126- await memoizeDict . load ( 'test' )
127- ) . toBe ( mockData ) ;
124+ expect ( await memoizeDict . load ( 'test' ) ) . toBe ( mockData ) ;
128125 expect ( dataFunc ) . toBeCalledTimes ( 1 ) ;
129126 } ) ;
130127
131-
132128 it ( 'clear()' , async ( ) => {
133129 memoizeDict . get ( 'test-1' ) ;
134130 memoizeDict . get ( 'test-2' ) ;
@@ -143,24 +139,28 @@ describe('MemoizeDict', () => {
143139 expect ( dataFunc ) . toBeCalledTimes ( 4 ) ;
144140 } ) ;
145141
142+
146143 it ( 'delete()' , async ( ) => {
147144 memoizeDict . delete ( 'test' )
148145 expect ( memoizeDict . get ( 'test' ) ) . toBeUndefined ( ) ;
149146 expect ( dataFunc ) . toBeCalledTimes ( 1 ) ;
150147 await new Promise ( ( resolve ) => setTimeout ( resolve , 101 ) ) ;
151- expect (
152- memoizeDict . get ( 'test' )
153- ) . toBe ( mockData ) ;
148+ expect ( memoizeDict . get ( 'test' ) ) . toBe ( mockData ) ;
154149 } ) ;
155150
151+
152+
156153} ) ;
157154
155+
156+
158157describe ( '特殊情况的处理' , ( ) => {
159158 const mockData = [
160159 { label : 'Item 1' , value : 1 , parent : 0 } ,
161160 { label : 'Item 2' , value : 2 , parent : 1 } ,
162161 { label : 'Item 3' , value : 3 , parent : 1 } ,
163- { label : 'Item 999' , value : 999 , parent : 999 } ,
162+ { label : 'Item 999' , value : 999 , parent : 998 } ,
163+ { label : 'Item 888' , value : 888 , parent : 888 } ,
164164 ]
165165 const memoizeDict = new MemoizeDict ( {
166166 // fieldNames:{
@@ -185,58 +185,51 @@ describe('特殊情况的处理', () => {
185185
186186 it ( 'data 不是异步函数' , async ( ) => {
187187 memoizeDict . tree ( 'test' ) ;
188- await nextTick ( ) ;
189- expect (
190- memoizeDict . get ( 'test' )
191- ) . toEqual ( mockData ) ;
188+ await new Promise ( ( resolve ) => setTimeout ( resolve , 101 ) ) ;
189+ expect ( memoizeDict . get ( 'test' ) ) . toEqual ( mockData ) ;
192190 } ) ;
193191
194192 it ( 'fieldNames 未定义' , async ( ) => {
195- expect (
196- memoizeDict . treeLabel ( 'test' , 2 )
197- ) . toBe ( 'Item 1-Item 2' ) ;
193+ expect ( memoizeDict . treeLabel ( 'test' , 2 ) ) . toBe ( 'Item 1-Item 2' ) ;
194+ } ) ;
195+
196+ it ( 'dictName 不存在' , async ( ) => {
197+ expect ( ( ) => memoizeDict . fetch ( 'test-1' ) ) . toThrowError ( 'config not found: test-1' ) ;
198198 } ) ;
199199
200200 it ( 'label() 传的值不存在' , async ( ) => {
201- expect (
202- memoizeDict . label ( 'test' , 99 )
203- ) . toBe ( '99' ) ;
201+ expect ( memoizeDict . label ( 'test' , 99 ) ) . toBe ( '99' ) ;
204202 } ) ;
205203
206204 it ( 'label() 不传值' , async ( ) => {
207- expect (
208- memoizeDict . label ( 'test' , undefined as any )
209- ) . toBe ( '' ) ;
205+ expect ( memoizeDict . label ( 'test' , undefined as any ) ) . toBe ( '' ) ;
210206 } ) ;
211207
212208 it ( 'labels() 不传值' , async ( ) => {
213- expect (
214- memoizeDict . labels ( 'test' , undefined as any )
215- ) . toEqual ( [ ] ) ;
209+ expect ( memoizeDict . labels ( 'test' , undefined as any ) ) . toEqual ( [ ] ) ;
216210 } ) ;
217211
218212 it ( 'treeLabel() 不传值' , async ( ) => {
219- expect (
220- memoizeDict . treeLabel ( 'test' , undefined as any )
221- ) . toBe ( '' ) ;
213+ expect ( memoizeDict . treeLabel ( 'test' , undefined as any ) ) . toBe ( '' ) ;
222214 } ) ;
223215
216+
224217 it ( 'treeLabel() 传的值父级不存在' , async ( ) => {
225- expect (
226- memoizeDict . treeLabel ( 'test' , 999 )
227- ) . toBe ( 'Item 999' ) ;
218+ await memoizeDict . fetch ( 'test' ) ;
219+ expect ( memoizeDict . treeLabel ( 'test' , 999 ) ) . toBe ( 'Item 999' ) ;
228220 } )
229221
222+ it ( 'treeLabel() 的item的parent等于自己' , async ( ) => {
223+ await memoizeDict . fetch ( 'test' ) ;
224+ expect ( memoizeDict . treeLabel ( 'test' , 888 ) ) . toBe ( 'Item 888' ) ;
225+ } ) ;
226+
230227 it ( 'treeLabel() 传的值不存在' , async ( ) => {
231- expect (
232- memoizeDict . treeLabel ( 'test' , 99 )
233- ) . toBe ( '99' ) ;
228+ expect ( memoizeDict . treeLabel ( 'test' , 99 ) ) . toBe ( '99' ) ;
234229 } ) ;
235230
236231 it ( 'values() 不传数组' , async ( ) => {
237- expect (
238- memoizeDict . labels ( 'test' , 2 as any )
239- ) . toEqual ( 2 ) ;
232+ expect ( memoizeDict . labels ( 'test' , 2 as any ) ) . toEqual ( 2 ) ;
240233 expect ( console . error ) . toBeCalledTimes ( 1 ) ;
241234 } ) ;
242235} ) ;
0 commit comments