UNPKG

@vulog/aima-document

Version:

233 lines (221 loc) 9.32 kB
import { describe, test, expect, vi, beforeEach, afterEach } from 'vitest'; import { Client } from '@vulog/aima-client'; import { getUserDocuments } from './getUserDocuments'; import { personalInformationUserTypes } from '../../user/src/types'; import { personalInformationDocumentTypes } from './types'; describe('getUserDocument', () => { const FLEET_ID = 'FLEET_ID'; const USER_ID = '018ab2b6-71b2-4c76-90bd-6e8d3f268618'; const docTypeId = { id: 690, fleetId: FLEET_ID, type: 'IDENTITY_CARD', name: 'ID', mandatory: false, hasNumber: true, hasExpirationDate: false, numberUploadUrl: 1, hasIssuingCountry: false, hasIssuingOffice: true, hasIssuingDate: true, hasDlClass: false }; const docTypeDl = { id: 691, fleetId: FLEET_ID, type: 'DRIVING_LICENSE', name: 'Driving license', mandatory: false, hasNumber: true, hasExpirationDate: false, numberUploadUrl: 2, hasIssuingCountry: false, hasIssuingOffice: true, hasIssuingDate: true, hasDlClass: false } const idDocId = 10892065; const dlDocId = 10892077; const documents = { documentTypes: [ { ...docTypeId }, { ...docTypeDl} ], documents: [ { id: idDocId, fleetId: FLEET_ID, userId: USER_ID, documentType: { ...docTypeId }, expirationDate: '1970-01-01', files: [ { id: null, url: `https://java-test.vulog.com/boapi/proxy/upload/fleets/${FLEET_ID}/users/${USER_ID}/documents/${idDocId}/${docTypeId.type}_0`, name: `${docTypeId.type}_0` } ], uploadUrls: [ { id: null, url: `https://java-test.vulog.com/upload/fleets/${FLEET_ID}/documents/${idDocId}/${docTypeId.type}_0?tk=s2TzoXn%2BhEUKnCbEEFZfhRqOvStMSdS14ow3QHFhgRA3ttoqIrcNxpP4JhMvyIYkyGLo%2Bnwttnz3zt1NkOX3Lf8PBVPiXXyxB9%2BtW1FkBISvOOjA0FTyMLquFoe2cSNn`, name: `${docTypeId.type}_0` } ], status: 'VALID', reviewer: '493a4d98-7437-42db-8d4e-bd722ac62caa', issuingCountry: null, issuingOffice: 'Nice, 06', issuingDate: '2023-01-16', dlClass: null, documentNumber: null }, { id: dlDocId, fleetId: FLEET_ID, userId: USER_ID, documentType: { ...docTypeDl }, expirationDate: '1970-01-01', files: [ { id: null, url: `https://java-test.vulog.com/boapi/proxy/upload/fleets/${FLEET_ID}/users/${USER_ID}/documents/${dlDocId}/${docTypeDl.type}_0`, name: `${docTypeDl.type}_0` }, { id: null, url: `https://java-test.vulog.com/boapi/proxy/upload/fleets/${FLEET_ID}/users/${USER_ID}/documents/${dlDocId}/${docTypeDl.type}_1`, name: `${docTypeDl.type}_1` } ], uploadUrls: [ { id: null, url: `https://java-test.vulog.com/upload/fleets/${FLEET_ID}/documents/${dlDocId}/${docTypeDl.type}_0?tk=3Xs08XSnb2ZatHY%2Blic5G88IMPGKs0LOy8hlM47eaER1nPDxgYeewOMYySGQfbPMKz3Opy5T3RPULV9O3IBCm4iOIApdah4Q22rCi4hH5rZ%2BOyGuLwmffBuoYA16rLuO`, name: `${docTypeDl.type}_0` }, { id: null, url: `https://java-test.vulog.com/upload/fleets/${FLEET_ID}/documents/${dlDocId}/${docTypeDl.type}_1?tk=fg8Y3duKmYM3olsMaC6mipzB5AsjCf5h8mRHwNb4iGzpy8MqMXigaBce5PxdFKcgiuQjoWYvcbBZx2W985Mqt8CGpxoGIzqbYOmsS9kvPjp6UZERqnfan73y5vk3MPUy`, name: `${docTypeDl.type}_1` } ], status: 'VALID', reviewer: '493a4d98-7437-42db-8d4e-bd722ac62caf', issuingCountry: null, issuingOffice: 'Nice', issuingDate: '1994-02-18', dlClass: null, documentNumber: null } ], documentByService: [ { serviceId: '0166e9a0-ac01-46d1-8211-f5ac24145953', areMandatoryPresent: false, mandatoryDocumentTypeId: [] }, { serviceId: '0a6db44e-8a83-4f74-a6f8-5b21bd693289', areMandatoryPresent: false, mandatoryDocumentTypeId: [] } ], documentByFranchise: null }; const piId = { fleetId: FLEET_ID, userId: USER_ID, documentId: idDocId, documentNumber1: '741', updateDate: '2025-04-29T10:40:42.000Z' } const piDl = { fleetId: FLEET_ID, userId: USER_ID, documentId: dlDocId, documentNumber1: '159', updateDate: '2025-04-29T10:40:42.000Z' } const getMock = vi.fn(); const client = { get: getMock, clientOptions: { fleetId: FLEET_ID, }, } as unknown as Client; beforeEach(() => { getMock.mockReset(); vi.useFakeTimers({ now: new Date('2025-01-12T13:35:50.123Z') }); getMock.mockImplementation((url: string): Promise<any> => { if (url === `/boapi/proxy/user/fleets/${FLEET_ID}/users/${USER_ID}/documents`) { return Promise.resolve({ data: documents, status: 200, statusText: 'OK', headers: {}, config: {} }); } else if (url.startsWith(`/boapi/proxy/user/fleets/${FLEET_ID}/users/${USER_ID}/documents/${idDocId}/pi`)) { return Promise.resolve({ data: piId, status: 200, statusText: 'OK', headers: {}, config: {} }); } else if (url.startsWith(`/boapi/proxy/user/fleets/${FLEET_ID}/users/${USER_ID}/documents/${dlDocId}/pi`)) { return Promise.resolve({ data: piDl, status: 200, statusText: 'OK', headers: {}, config: {} }); } // Pour les autres URLs, rejetez la promesse return Promise.reject(new Error('404 Not Found')); }); }); afterEach(() => { vi.useRealTimers(); }); test('call without PI', async () => { const docs = await getUserDocuments(client, USER_ID); expect(getMock).toHaveBeenCalledOnce(); expect(getMock).toBeCalledWith(`/boapi/proxy/user/fleets/${FLEET_ID}/users/${USER_ID}/documents`); expect(docs).toBeTruthy(); expect(docs.documents).toBeTruthy(); expect(docs.documents.length).toEqual(documents.documents.length); expect(docs.documents.length).toEqual(2); expect(docs.documents[0].id).toEqual(documents.documents[0].id); expect(docs.documents[0].documentNumber).toBeNull(); expect(docs.documents[1].id).toEqual(documents.documents[1].id); expect(docs.documents[1].documentNumber).toBeNull(); }); test('call with PI', async () => { const docs = await getUserDocuments(client, USER_ID, ['documentNumber1']); expect(getMock).toHaveBeenCalledTimes(3); expect(getMock).toBeCalledWith(`/boapi/proxy/user/fleets/${FLEET_ID}/users/${USER_ID}/documents`); expect(getMock).toBeCalledWith(`/boapi/proxy/user/fleets/${FLEET_ID}/users/${USER_ID}/documents/${idDocId}/pi?types=documentNumber1`); expect(getMock).toBeCalledWith(`/boapi/proxy/user/fleets/${FLEET_ID}/users/${USER_ID}/documents/${dlDocId}/pi?types=documentNumber1`); expect(docs).toBeTruthy(); expect(docs.documents).toBeTruthy(); expect(docs.documents.length).toEqual(documents.documents.length); expect(docs.documents.length).toEqual(2); expect(docs.documents[0].id).toEqual(documents.documents[0].id); expect(docs.documents[0].documentNumber).toBeTruthy(); expect(docs.documents[1].id).toEqual(documents.documents[1].id); expect(docs.documents[1].documentNumber).toBeTruthy(); if(docs.documents[0].id === idDocId) { expect(docs.documents[0].documentNumber).toEqual(piId.documentNumber1); expect(docs.documents[1].documentNumber).toEqual(piDl.documentNumber1); } if(docs.documents[0].id === dlDocId) { expect(docs.documents[0].documentNumber).toEqual(piDl.documentNumber1); expect(docs.documents[1].documentNumber).toEqual(piId.documentNumber1); } }); });