@@ -6,8 +6,6 @@ import response from './response.json'
66
77jest . mock ( 'axios' ) ;
88
9- axios . get . mockResolvedValue ( [ ] ) ;
10-
119beforeAll ( ( ) => {
1210 jest . spyOn ( console , 'warn' ) . mockImplementation ( ( ) => { } ) ;
1311 jest . spyOn ( console , 'error' ) . mockImplementation ( ( ) => { } ) ;
@@ -22,11 +20,12 @@ const defaultPropsData = () => ({
2220} )
2321
2422let returnData = [
25- { id : 1 , first_name : 'Brominator' , ' email' : 'bro@gmail.com' } ,
26- { id : 2 , first_name : 'Foo f' , ' email' : 'foo@gmail.com' }
23+ { id : 1 , first_name : 'Brominator' , email : 'bro@gmail.com' } ,
24+ { id : 2 , first_name : 'Foo f' , email : 'foo@gmail.com' }
2725]
2826
2927test ( 'all columns enabled to create' , ( ) => {
28+ axios . get . mockResolvedValueOnce ( [ ] ) ;
3029
3130 const wrapper = mountQuasar ( Crud , {
3231 propsData : defaultPropsData ( )
@@ -36,7 +35,7 @@ test('all columns enabled to create', () => {
3635} )
3736
3837test ( 'at least one row was selected' , ( ) => {
39- axios . get . mockResolvedValue ( returnData ) ;
38+ axios . get . mockResolvedValueOnce ( returnData ) ;
4039
4140 const wrapper = mountQuasar ( Crud , {
4241 propsData : defaultPropsData ( )
@@ -47,6 +46,8 @@ test('at least one row was selected', () => {
4746} )
4847
4948test ( 'using customSelected slot' , ( ) => {
49+ axios . get . mockResolvedValueOnce ( [ ] ) ;
50+
5051 const wrapper = mountQuasar ( Crud , {
5152 propsData : defaultPropsData ( ) ,
5253 slots : {
@@ -58,6 +59,8 @@ test('using customSelected slot', () => {
5859} )
5960
6061test ( 'get fields with validation' , ( ) => {
62+ axios . get . mockResolvedValueOnce ( [ ] ) ;
63+
6164 const props = defaultPropsData ( )
6265
6366 const wrapper = mountQuasar ( Crud , {
@@ -69,8 +72,7 @@ test('get fields with validation', () => {
6972} )
7073
7174test ( 'custom message delete with function after user select' , ( ) => {
72-
73- axios . get . mockResolvedValue ( returnData ) ;
75+ axios . get . mockResolvedValueOnce ( returnData ) ;
7476
7577 const props = defaultPropsData ( )
7678 props . msgDelete = row => `Deleted ${ row . first_name } ?`
@@ -86,7 +88,7 @@ test('custom message delete with function after user select', () => {
8688
8789test ( 'custom title delete with function after user select' , ( ) => {
8890
89- axios . get . mockResolvedValue ( returnData ) ;
91+ axios . get . mockResolvedValueOnce ( returnData ) ;
9092
9193 const props = defaultPropsData ( )
9294 props . titleDelete = row => `Do you want delete ${ row . first_name } ?`
@@ -103,6 +105,8 @@ test('custom title delete with function after user select', () => {
103105
104106test ( 'get fields with validation' , ( ) => {
105107
108+ axios . get . mockResolvedValueOnce ( ) ;
109+
106110 const props = defaultPropsData ( )
107111
108112 const wrapper = mountQuasar ( Crud , {
@@ -117,15 +121,14 @@ test('get fields with validation', () => {
117121test ( 'mount component without make requests' , ( ) => {
118122
119123 const props = defaultPropsData ( )
120-
121124 props . getOnStart = false
122125
123- const spyOnGet = jest . spyOn ( Crud . methods , 'get' )
124-
125126 const wrapper = mountQuasar ( Crud , {
126127 propsData : props
127128 } )
128129
130+ const spyOnGet = jest . spyOn ( wrapper . vm , 'get' )
131+
129132 expect ( spyOnGet ) . not . toBeCalled ( )
130133} )
131134
@@ -136,12 +139,12 @@ test('make a get request ONLY when param change', async () => {
136139 props . getOnStart = false
137140 props . getOnParamChange = true
138141
139- const spyOnGet = jest . spyOn ( Crud . methods , 'get' )
140-
141142 const wrapper = mountQuasar ( Crud , {
142143 propsData : props
143144 } )
144145
146+ const spyOnGet = jest . spyOn ( wrapper . vm , 'get' )
147+
145148 expect ( spyOnGet ) . not . toBeCalled ( )
146149
147150 await wrapper . setProps ( { params : 'id=5' } )
@@ -162,7 +165,7 @@ test('only email column are visible to create', () => {
162165 expect ( wrapper . vm . columnsToRender ) . toHaveLength ( 1 )
163166} )
164167
165- test ( 'api url mounting defalt mouting' , ( ) => {
168+ test ( 'api url mounting default mouting' , ( ) => {
166169
167170 const props = defaultPropsData ( )
168171
@@ -175,6 +178,20 @@ test('api url mounting defalt mouting', () => {
175178 expect ( wrapper . vm . apiUri ) . toBe ( 'people?page=1&per_page=3&sort=,asc' )
176179} )
177180
181+ test ( 'api url mounting no server side pagination' , ( ) => {
182+
183+ const props = defaultPropsData ( )
184+
185+ props . api = 'people'
186+ props . paginationServerSide = false
187+
188+ const wrapper = mountQuasar ( Crud , {
189+ propsData : props
190+ } )
191+
192+ expect ( wrapper . vm . apiUri ) . toBe ( 'people' )
193+ } )
194+
178195test ( 'object to save mounting empty' , ( ) => {
179196
180197 axios . get . mockResolvedValue ( [ ] ) ;
@@ -261,13 +278,13 @@ test('open modal without data', () => {
261278 const wrapper = mountQuasar ( Crud , {
262279 propsData : props
263280 } )
264- const spyOnResetColumnsValuesMethod = jest . spyOn ( wrapper . vm , 'resetColumnsValues ' )
281+ const spyOnResetColumnValuesMethod = jest . spyOn ( wrapper . vm , 'resetColumnValues ' )
265282
266283 expect ( wrapper . vm . modalOpened ) . toBeFalsy ( )
267284 wrapper . vm . toggleModal ( )
268285
269286 expect ( wrapper . vm . modalOpened ) . toBeTruthy ( )
270- expect ( spyOnResetColumnsValuesMethod ) . toHaveBeenCalled ( )
287+ expect ( spyOnResetColumnValuesMethod ) . toHaveBeenCalled ( )
271288} )
272289test ( 'open modal with data after select a row ' , ( ) => {
273290
@@ -280,13 +297,13 @@ test('open modal with data after select a row ', () => {
280297
281298 wrapper . setData ( { selected : [ returnData [ 0 ] ] } ) // select a row
282299
283- const spyOnResetColumnsValuesMethod = jest . spyOn ( wrapper . vm , 'populateColumnsWithSelectedRow' )
300+ const spyOnPopulateColumnsWithSelectedRow = jest . spyOn ( wrapper . vm , 'populateColumnsWithSelectedRow' )
284301
285302 expect ( wrapper . vm . modalOpened ) . toBeFalsy ( )
286303 wrapper . vm . toggleModalWithData ( )
287304
288305 expect ( wrapper . vm . modalOpened ) . toBeTruthy ( )
289- expect ( spyOnResetColumnsValuesMethod ) . toHaveBeenCalled ( )
306+ expect ( spyOnPopulateColumnsWithSelectedRow ) . toHaveBeenCalled ( )
290307} )
291308
292309test ( 'get $emit successOnGet event' , async ( ) => {
@@ -322,6 +339,22 @@ test('o succefull get set the total size from api', async () => {
322339 expect ( wrapper . vm . pagination . rowsNumber ) . toBe ( 12 )
323340} )
324341
342+ test ( 'get $emit errorOnGet event' , async ( ) => {
343+
344+ axios . get . mockRejectedValue ( 'error msg' )
345+
346+ const props = defaultPropsData ( )
347+
348+ const wrapper = mountQuasar ( Crud , {
349+ propsData : props
350+ } )
351+
352+ await wrapper . vm . $nextTick ( )
353+ await wrapper . vm . $nextTick ( )
354+
355+ expect ( wrapper . emitted ( ) . errorOnGet ) . toBeTruthy ( )
356+ } )
357+
325358test ( 'delete $emit successOnDelete event' , async ( ) => {
326359
327360 axios . delete . mockResolvedValue ( ) ;
@@ -340,6 +373,25 @@ test('delete $emit successOnDelete event', async () => {
340373
341374} )
342375
376+ test ( 'delete $emit errorOnDelete event' , async ( ) => {
377+
378+ axios . delete . mockRejectedValue ( 'error msg' )
379+
380+ const props = defaultPropsData ( )
381+
382+ const wrapper = mountQuasar ( Crud , {
383+ propsData : props
384+ } )
385+
386+ wrapper . setData ( { selected : [ returnData [ 0 ] ] } )
387+ wrapper . vm . delete ( )
388+
389+ await wrapper . vm . $nextTick ( )
390+ await wrapper . vm . $nextTick ( )
391+
392+ expect ( wrapper . emitted ( ) . errorOnDelete ) . toBeTruthy ( )
393+ } )
394+
343395test ( 'put $emit successOnPut event' , async ( ) => {
344396
345397 axios . put . mockResolvedValue ( ) ;
@@ -350,14 +402,33 @@ test('put $emit successOnPut event', async () => {
350402 propsData : props
351403 } )
352404 wrapper . setData ( { selected : [ returnData [ 0 ] ] } )
405+ wrapper . vm . save ( )
353406
354- wrapper . vm . put ( )
355407 await wrapper . vm . $nextTick ( )
356408
357409 expect ( wrapper . emitted ( ) . successOnPut ) . toBeTruthy ( )
358410
359411} )
360412
413+ test ( 'put $emit errorOnPut event' , async ( ) => {
414+
415+ axios . put . mockRejectedValue ( 'error msg' )
416+
417+ const props = defaultPropsData ( )
418+
419+ const wrapper = mountQuasar ( Crud , {
420+ propsData : props
421+ } )
422+
423+ wrapper . setData ( { selected : [ returnData [ 0 ] ] } )
424+ wrapper . vm . save ( )
425+
426+ await wrapper . vm . $nextTick ( )
427+ await wrapper . vm . $nextTick ( )
428+
429+ expect ( wrapper . emitted ( ) . errorOnPut ) . toBeTruthy ( )
430+ } )
431+
361432test ( 'post $emit successOnPost event' , async ( ) => {
362433
363434 axios . post . mockResolvedValue ( ) ;
@@ -367,15 +438,32 @@ test('post $emit successOnPost event', async () => {
367438 const wrapper = mountQuasar ( Crud , {
368439 propsData : props
369440 } )
370- wrapper . setData ( { selected : [ returnData [ 0 ] ] } )
371441
372- wrapper . vm . post ( )
442+ wrapper . vm . save ( )
373443 await wrapper . vm . $nextTick ( )
374444
375445 expect ( wrapper . emitted ( ) . successOnPost ) . toBeTruthy ( )
376446
377447} )
378448
449+ test ( 'post $emit errorOnPost event' , async ( ) => {
450+
451+ axios . post . mockRejectedValue ( 'error msg' )
452+
453+ const props = defaultPropsData ( )
454+
455+ const wrapper = mountQuasar ( Crud , {
456+ propsData : props
457+ } )
458+
459+ wrapper . vm . save ( )
460+
461+ await wrapper . vm . $nextTick ( )
462+ await wrapper . vm . $nextTick ( )
463+
464+ expect ( wrapper . emitted ( ) . errorOnPost ) . toBeTruthy ( )
465+ } )
466+
379467test ( 'reset validation when saving with validation errors, dont make requests' , ( ) => {
380468
381469 axios . get . mockResolvedValue ( returnData ) ;
@@ -440,3 +528,94 @@ test('save start put request because at least one row are selected', () => {
440528 expect ( spyOnPut ) . toBeCalled ( )
441529 expect ( spyOnPost ) . not . toBeCalled ( )
442530} )
531+
532+ test ( 'request update pagination' , ( ) => {
533+
534+ const props = defaultPropsData ( )
535+ const wrapper = mountQuasar ( Crud , {
536+ propsData : props
537+ } )
538+
539+ wrapper . vm . request ( { pagination : { page : 5 , rowsPerPage : 10 } } )
540+
541+ expect ( wrapper . vm . pagination ) . toStrictEqual ( { page : 5 , rowsPerPage : 10 } )
542+ } )
543+
544+ // test('request fetch remote data', async () => {
545+
546+ // const props = defaultPropsData()
547+ // const wrapper = await mountQuasar(Crud, {
548+ // propsData: props
549+ // })
550+
551+
552+ // const spyOnGet = jest.spyOn(wrapper.vm, 'get')
553+
554+ // wrapper.vm.request({ pagination: { page: 5, rowsPerPage: 10 } })
555+
556+ // await wrapper.vm.$nextTick()
557+ // expect(spyOnGet).toHaveBeenCalledTimes(2)
558+ // })
559+
560+ test ( 'reset column values with proper types (string and array)' , async ( ) => {
561+
562+ returnData [ 1 ] [ 'first_name' ] = 'boy'
563+ returnData [ 1 ] [ 'email' ] = [ { } , { } ]
564+ axios . get . mockResolvedValue ( returnData ) ;
565+
566+ const props = defaultPropsData ( )
567+
568+ const wrapper = await mountQuasar ( Crud , {
569+ propsData : props
570+ } )
571+
572+ wrapper . setData ( { selected : [ returnData [ 1 ] ] } )
573+ wrapper . vm . populateColumnsWithSelectedRow ( )
574+ wrapper . vm . resetColumnValues ( )
575+
576+ expect ( wrapper . vm . columns [ 0 ] . value ) . toBe ( "" )
577+ expect ( wrapper . vm . columns [ 1 ] . value ) . toStrictEqual ( [ ] )
578+ } )
579+ test ( 'reset column values with proper types ( Boolean and Number)' , async ( ) => {
580+
581+ returnData [ 1 ] . first_name = 199
582+ returnData [ 1 ] . email = true
583+ axios . get . mockResolvedValue ( returnData ) ;
584+
585+ const props = defaultPropsData ( )
586+
587+ const wrapper = await mountQuasar ( Crud , {
588+ propsData : props
589+ } )
590+
591+ wrapper . setData ( { selected : [ returnData [ 1 ] ] } )
592+ wrapper . vm . populateColumnsWithSelectedRow ( )
593+ wrapper . vm . resetColumnValues ( )
594+
595+ expect ( wrapper . vm . columns [ 0 ] . value ) . toBe ( 0 )
596+ expect ( wrapper . vm . columns [ 1 ] . value ) . toBe ( "" )
597+ } )
598+
599+ test ( 'reset column values static config' , async ( ) => {
600+
601+ returnData [ 1 ] . first_name = 'Brother Lee'
602+ axios . get . mockResolvedValue ( returnData ) ;
603+
604+ const props = defaultPropsData ( )
605+ props . columns [ 0 ] . static = true
606+
607+ const wrapper = await mountQuasar ( Crud , {
608+ propsData : props
609+ } )
610+
611+ wrapper . setData ( { selected : [ returnData [ 1 ] ] } )
612+
613+ expect ( wrapper . vm . columns [ 0 ] . value ) . toStrictEqual ( "" )
614+
615+ wrapper . vm . populateColumnsWithSelectedRow ( )
616+ expect ( wrapper . vm . columns [ 0 ] . value ) . toStrictEqual ( "Brother Lee" )
617+
618+ wrapper . vm . resetColumnValues ( )
619+ expect ( wrapper . vm . columns [ 0 ] . value ) . toStrictEqual ( "Brother Lee" )
620+
621+ } )
0 commit comments