@vulog/aima-document
Version:
233 lines (221 loc) • 9.32 kB
text/typescript
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);
}
});
});