@@ -7,23 +7,16 @@ import { beforeAll, beforeEach, describe, expect, it, vi } from 'vitest'
77import type { MockedFunction } from 'vitest'
88import { mount } from '@vue/test-utils'
99import type { VueWrapper } from '@vue/test-utils'
10+ import type { ValidationFileRecord } from '../../../types'
1011
1112type TranslationFn = ( app : string , text : string ) => string
1213
1314type FileStatusListComponent = typeof import ( '../../../components/validation/FileStatusList.vue' ) . default
1415type FileStatusModule = typeof import ( '../../../utils/fileStatus.js' )
1516type FileStatusConstants = typeof import ( '../../../constants.js' ) . FILE_STATUS
1617
17- type FileStatusResponse = {
18- id : number
19- name : string
20- status : number
21- size : number
22- signed ?: string
23- }
24-
2518type FileStatusListVm = {
26- files : FileStatusResponse [ ]
19+ files : ValidationFileRecord [ ]
2720 updateTimer : ReturnType < typeof setInterval > | null
2821 $nextTick : ( ) => Promise < void >
2922 loadFiles : ( ) => Promise < void >
@@ -43,9 +36,27 @@ type FileStatusListWrapper = VueWrapper<any> & {
4336}
4437
4538type AxiosMock = {
46- get : MockedFunction < ( url : string ) => Promise < { data : { ocs : { data : FileStatusResponse } } } > >
39+ get : MockedFunction < ( url : string ) => Promise < { data : { ocs : { data : ValidationFileRecord } } } > >
4740}
4841
42+ const createValidationFile = ( overrides : Partial < ValidationFileRecord > = { } ) : ValidationFileRecord => ( {
43+ id : 1 ,
44+ uuid : 'file-uuid' ,
45+ name : 'stub.pdf' ,
46+ status : 0 ,
47+ statusText : 'Draft' ,
48+ nodeId : 1 ,
49+ nodeType : 'file' ,
50+ signatureFlow : 0 ,
51+ docmdpLevel : 0 ,
52+ totalPages : 1 ,
53+ size : 0 ,
54+ pdfVersion : '1.7' ,
55+ created_at : '2024-01-01 00:00:00' ,
56+ requested_by : { userId : 'user' , displayName : 'User' } ,
57+ ...overrides ,
58+ } )
59+
4960let FileStatusList : FileStatusListComponent
5061let fileStatus : FileStatusModule
5162let FILE_STATUS : FileStatusConstants
@@ -142,7 +153,7 @@ describe('FileStatusList', () => {
142153 mockAxios . get . mockResolvedValue ( {
143154 data : {
144155 ocs : {
145- data : { id : 1 , name : 'stub.pdf' , size : 0 , status : FILE_STATUS . DRAFT } ,
156+ data : createValidationFile ( ) ,
146157 } ,
147158 } ,
148159 } )
@@ -170,7 +181,7 @@ describe('FileStatusList', () => {
170181 mockAxios . get . mockResolvedValueOnce ( {
171182 data : {
172183 ocs : {
173- data : { id : 1 , name : 'file1.pdf' , size : 0 , status : FILE_STATUS . DRAFT } ,
184+ data : createValidationFile ( { name : 'file1.pdf' , status : FILE_STATUS . DRAFT } ) ,
174185 } ,
175186 } ,
176187 } )
@@ -186,14 +197,14 @@ describe('FileStatusList', () => {
186197 . mockResolvedValueOnce ( {
187198 data : {
188199 ocs : {
189- data : { id : 1 , name : 'test.pdf' , size : 1024 , status : FILE_STATUS . SIGNED } ,
200+ data : createValidationFile ( { name : 'test.pdf' , size : 1024 , status : FILE_STATUS . SIGNED , statusText : 'Signed' } ) ,
190201 } ,
191202 } ,
192203 } )
193204 . mockResolvedValueOnce ( {
194205 data : {
195206 ocs : {
196- data : { id : 1 , name : 'test.pdf' , size : 1024 , status : FILE_STATUS . SIGNED } ,
207+ data : createValidationFile ( { name : 'test.pdf' , size : 1024 , status : FILE_STATUS . SIGNED , statusText : 'Signed' } ) ,
197208 } ,
198209 } ,
199210 } )
@@ -210,28 +221,28 @@ describe('FileStatusList', () => {
210221 . mockResolvedValueOnce ( {
211222 data : {
212223 ocs : {
213- data : { id : 1 , name : 'file1.pdf' , size : 0 , status : FILE_STATUS . DRAFT } ,
224+ data : createValidationFile ( { id : 1 , name : 'file1.pdf' , status : FILE_STATUS . DRAFT } ) ,
214225 } ,
215226 } ,
216227 } )
217228 . mockResolvedValueOnce ( {
218229 data : {
219230 ocs : {
220- data : { id : 2 , name : 'file2.pdf' , size : 0 , status : FILE_STATUS . SIGNED } ,
231+ data : createValidationFile ( { id : 2 , uuid : 'file-uuid-2' , name : 'file2.pdf' , status : FILE_STATUS . SIGNED , statusText : 'Signed' , nodeId : 2 } ) ,
221232 } ,
222233 } ,
223234 } )
224235 . mockResolvedValueOnce ( {
225236 data : {
226237 ocs : {
227- data : { id : 1 , name : 'file1.pdf' , size : 0 , status : FILE_STATUS . DRAFT } ,
238+ data : createValidationFile ( { id : 1 , name : 'file1.pdf' , status : FILE_STATUS . DRAFT } ) ,
228239 } ,
229240 } ,
230241 } )
231242 . mockResolvedValueOnce ( {
232243 data : {
233244 ocs : {
234- data : { id : 2 , name : 'file2.pdf' , size : 0 , status : FILE_STATUS . SIGNED } ,
245+ data : createValidationFile ( { id : 2 , uuid : 'file-uuid-2' , name : 'file2.pdf' , status : FILE_STATUS . SIGNED , statusText : 'Signed' , nodeId : 2 } ) ,
235246 } ,
236247 } ,
237248 } )
@@ -246,7 +257,7 @@ describe('FileStatusList', () => {
246257 mockAxios . get . mockResolvedValueOnce ( {
247258 data : {
248259 ocs : {
249- data : { id : 1 , name : 'test.pdf' , size : 0 , status : FILE_STATUS . DRAFT } ,
260+ data : createValidationFile ( { name : 'test.pdf' , status : FILE_STATUS . DRAFT } ) ,
250261 } ,
251262 } ,
252263 } )
@@ -390,7 +401,7 @@ describe('FileStatusList', () => {
390401 wrapper = createWrapper ( { fileIds : [ 1 ] } )
391402
392403 mockAxios . get . mockResolvedValue ( {
393- data : { ocs : { data : { id : 1 , name : 'test.pdf' , size : 0 , status : FILE_STATUS . DRAFT } } } ,
404+ data : { ocs : { data : createValidationFile ( { name : 'test.pdf' , status : FILE_STATUS . DRAFT } ) } } ,
394405 } )
395406
396407 wrapper . vm . startUpdatePolling ( )
@@ -433,7 +444,7 @@ describe('FileStatusList', () => {
433444 wrapper = localWrapper
434445
435446 mockAxios . get . mockResolvedValue ( {
436- data : { ocs : { data : { id : 1 , name : 'test.pdf' , size : 0 , status : FILE_STATUS . DRAFT } } } ,
447+ data : { ocs : { data : createValidationFile ( { name : 'test.pdf' , status : FILE_STATUS . DRAFT } ) } } ,
437448 } )
438449
439450 await localWrapper . setProps ( { fileIds : [ 1 ] } )
@@ -456,7 +467,7 @@ describe('FileStatusList', () => {
456467 wrapper = localWrapper
457468
458469 mockAxios . get . mockResolvedValue ( {
459- data : { ocs : { data : { id : 2 , name : 'file2.pdf' , size : 0 , status : FILE_STATUS . SIGNED } } } ,
470+ data : { ocs : { data : createValidationFile ( { id : 2 , uuid : 'file-uuid-2' , name : 'file2.pdf' , status : FILE_STATUS . SIGNED , statusText : 'Signed' , nodeId : 2 } ) } } ,
460471 } )
461472
462473 await localWrapper . setProps ( { fileIds : [ ] } )
@@ -469,7 +480,7 @@ describe('FileStatusList', () => {
469480 describe ( 'RULE: mounted lifecycle initializes data loading' , ( ) => {
470481 it ( 'loads files on mount when fileIds provided' , async ( ) => {
471482 mockAxios . get . mockResolvedValue ( {
472- data : { ocs : { data : { id : 1 , name : 'test.pdf' , size : 0 , status : FILE_STATUS . DRAFT } } } ,
483+ data : { ocs : { data : createValidationFile ( { name : 'test.pdf' , status : FILE_STATUS . DRAFT } ) } } ,
473484 } )
474485
475486 wrapper = createWrapper ( { fileIds : [ 1 ] } )
@@ -510,12 +521,7 @@ describe('FileStatusList', () => {
510521 mockAxios . get . mockResolvedValue ( {
511522 data : {
512523 ocs : {
513- data : {
514- id : 1 ,
515- name : 'document.pdf' ,
516- size : 2048 ,
517- status : FILE_STATUS . SIGNED ,
518- } ,
524+ data : createValidationFile ( { name : 'document.pdf' , size : 2048 , status : FILE_STATUS . SIGNED , statusText : 'Signed' } ) ,
519525 } ,
520526 } ,
521527 } )
@@ -528,63 +534,58 @@ describe('FileStatusList', () => {
528534 } )
529535 } )
530536
531- describe ( 'RULE: signed date displays when available' , ( ) => {
532- it ( 'shows formatted date when signed property exists' , async ( ) => {
537+ describe ( 'RULE: status changed date displays when available' , ( ) => {
538+ it ( 'shows formatted date when metadata status_changed_at exists' , async ( ) => {
533539 mockAxios . get . mockResolvedValue ( {
534540 data : {
535541 ocs : {
536- data : {
537- id : 1 ,
542+ data : createValidationFile ( {
543+ uuid : 'signed-uuid' ,
538544 name : 'signed.pdf' ,
539- size : 0 ,
540- signed : '2024-06-01T12:00:00' ,
541545 status : FILE_STATUS . SIGNED ,
542- } ,
546+ statusText : 'Signed' ,
547+ metadata : { extension : 'pdf' , p : 1 , status_changed_at : '2024-06-01T12:00:00' } ,
548+ } ) ,
543549 } ,
544550 } ,
545551 } )
546552
547553 wrapper = createWrapper ( { fileIds : [ 1 ] } )
548554 await wrapper . vm . loadFiles ( )
549555
550- expect ( wrapper . vm . files [ 0 ] . signed ) . toBe ( '2024-06-01T12:00:00' )
556+ expect ( wrapper . vm . files [ 0 ] . metadata ?. status_changed_at ) . toBe ( '2024-06-01T12:00:00' )
551557 } )
552558
553- it ( 'handles missing signed date' , async ( ) => {
559+ it ( 'handles missing status changed date' , async ( ) => {
554560 mockAxios . get . mockResolvedValue ( {
555561 data : {
556562 ocs : {
557- data : {
558- id : 1 ,
559- name : 'unsigned.pdf' ,
560- size : 0 ,
561- status : FILE_STATUS . DRAFT ,
562- } ,
563+ data : createValidationFile ( { uuid : 'unsigned-uuid' , name : 'unsigned.pdf' , status : FILE_STATUS . DRAFT , statusText : 'Draft' } ) ,
563564 } ,
564565 } ,
565566 } )
566567
567568 wrapper = createWrapper ( { fileIds : [ 1 ] } )
568569 await wrapper . vm . loadFiles ( )
569570
570- expect ( wrapper . vm . files [ 0 ] . signed ) . toBeUndefined ( )
571+ expect ( wrapper . vm . files [ 0 ] . metadata ?. status_changed_at ) . toBeUndefined ( )
571572 } )
572573 } )
573574
574575 describe ( 'RULE: multiple files display in sequence' , ( ) => {
575576 it ( 'renders all loaded files' , async ( ) => {
576577 mockAxios . get
577578 . mockResolvedValueOnce ( {
578- data : { ocs : { data : { id : 1 , name : 'file1.pdf' , size : 0 , status : FILE_STATUS . DRAFT } } } ,
579+ data : { ocs : { data : createValidationFile ( { id : 1 , name : 'file1.pdf' , status : FILE_STATUS . DRAFT } ) } } ,
579580 } )
580581 . mockResolvedValueOnce ( {
581- data : { ocs : { data : { id : 2 , name : 'file2.pdf' , size : 0 , status : FILE_STATUS . SIGNED } } } ,
582+ data : { ocs : { data : createValidationFile ( { id : 2 , uuid : 'file-uuid-2' , name : 'file2.pdf' , status : FILE_STATUS . SIGNED , statusText : 'Signed' , nodeId : 2 } ) } } ,
582583 } )
583584 . mockResolvedValueOnce ( {
584- data : { ocs : { data : { id : 1 , name : 'file1.pdf' , size : 0 , status : FILE_STATUS . DRAFT } } } ,
585+ data : { ocs : { data : createValidationFile ( { id : 1 , name : 'file1.pdf' , status : FILE_STATUS . DRAFT } ) } } ,
585586 } )
586587 . mockResolvedValueOnce ( {
587- data : { ocs : { data : { id : 2 , name : 'file2.pdf' , size : 0 , status : FILE_STATUS . SIGNED } } } ,
588+ data : { ocs : { data : createValidationFile ( { id : 2 , uuid : 'file-uuid-2' , name : 'file2.pdf' , status : FILE_STATUS . SIGNED , statusText : 'Signed' , nodeId : 2 } ) } } ,
588589 } )
589590
590591 wrapper = createWrapper ( { fileIds : [ 1 , 2 ] } )
0 commit comments