UNPKG

@vulog/aima-user

Version:

140 lines (134 loc) 5.88 kB
import { describe, test, expect, vi, beforeEach, afterEach } from 'vitest'; import { Client } from '@vulog/aima-client'; import { getUserById } from './getUserById'; describe('getUser', () => { const FLEET_ID = 'FLEET_ID'; const USER_ID = '018ab2b6-71b2-4c76-90bd-6e8d3f268618'; 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') }); }); afterEach(() => { vi.useRealTimers(); }); test('call OK', async () => { const data = { id: USER_ID, lastName: 'DOE', firstName: 'John', middleName: '', gender: 'MALE', locale: 'en_GB', address: { streetName: 'Rue Emmanuel Grout', city: 'Nice', postalCode: '06200', region: null, country: 'France', number: '42', addressAdditionalInformation: 'bat A', }, dataPrivacyConsent: true, marketingConsent: true, agreements: [ { fleetId: 'PFSDE-DESTR', cityId: 'a91a8d56-4bf8-4a88-9afb-3f3cc255e4f8', userId: USER_ID, date: '2024-02-05T16:10:27Z', hasAcceptedLatest: true, }, ], profiles: [ { id: '61bdc58e-a6d0-4f6a-b9bd-727b17ead122', rfid: null, email: 'jdoe@vulog.com', phoneNumber: '+49555555', creationDate: '2024-02-05T16:10:27.000Z', updateDate: null, entityId: 'b2e6c45e-896b-44ce-aa25-92ecd5349523', entityName: 'default', fiscalCode: null, status: 'APPROVED', name: 'default', type: 'Single', emailConsent: true, services: [ { id: '809614e1-6406-4a58-9c7e-1b2ac8df87ea', name: 'Vulog srv1', status: 'SERVICE_REG_UNREGISTERED', cityId: 'a91a8d56-4bf8-4a88-9afb-3f3cc255e4f8', visibility: 'PUBLIC', }, { id: '3ef72482-94c1-40c0-a467-abffaef03d45', name: 'Vulog srv2', status: 'APPROVED', cityId: 'a91a8d56-4bf8-4a88-9afb-3f3cc255e4f8', visibility: 'PUBLIC', }, ], financialInformation: null, billingInProgress: null, }, ], membershipNumber: '', profilingConsent: true, profilingConsentUpdateDate: '2024-02-05T16:10:27.000Z', userIndividualBusiness: { companyName: 'my Corp', vat: 'FR123456789', number: '123', streetName: 'Bd. Marie Curie', addressAdditionalInformation: 'Bat. A', city: 'Nice', postalCode: '06200', country: 'FR', fleetId: FLEET_ID, userId: USER_ID, }, }; getMock.mockResolvedValueOnce({ data: data, }); const user = await getUserById(client, USER_ID); expect(getMock).toBeCalled(); expect(getMock).toBeCalledWith(`/boapi/proxy/user/fleets/${FLEET_ID}/users/${USER_ID}/status`); expect(user).toBeTruthy(); expect(user.id).toEqual(data.id); expect(user.locale).toEqual(data.locale); expect(user.dataPrivacyConsent).toEqual(data.dataPrivacyConsent); expect(user.marketingConsent).toEqual(data.marketingConsent); expect(user.agreements).toBeTruthy(); expect(user.agreements.length).toEqual(data.agreements.length); expect(user.agreements[0].cityId).toEqual(data.agreements[0].cityId); expect(user.agreements[0].date).toEqual(data.agreements[0].date); expect(user.agreements[0].hasAcceptedLatest).toEqual(data.agreements[0].hasAcceptedLatest); expect(user.profiles).toBeTruthy(); expect(user.profiles.length).toEqual(data.profiles.length); expect(user.profiles[0].id).toEqual(data.profiles[0].id); expect(user.profiles[0].rfid).toEqual(data.profiles[0].rfid); expect(user.profiles[0].creationDate).toEqual(data.profiles[0].creationDate); expect(user.profiles[0].updateDate).toEqual(data.profiles[0].updateDate); expect(user.profiles[0].entityId).toEqual(data.profiles[0].entityId); expect(user.profiles[0].entityName).toEqual(data.profiles[0].entityName); expect(user.profiles[0].status).toEqual(data.profiles[0].status); expect(user.profiles[0].type).toEqual(data.profiles[0].type); expect(user.profiles[0].emailConsent).toEqual(data.profiles[0].emailConsent); expect(user.surveyConsent).toBeFalsy(); // because not retuned expect(user.shareDataConsent).toBeFalsy(); // because not retuned expect(user.surveyConsentUpdateDate).toBeFalsy(); // because not retuned expect(user.shareDataConsentUpdateDate).toBeFalsy(); // because not retuned expect(user.profilingConsent).toEqual(data.profilingConsent); expect(user.profilingConsentUpdateDate).toEqual(data.profilingConsentUpdateDate); }); });