@vulog/aima-user
Version:
140 lines (134 loc) • 5.88 kB
text/typescript
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);
});
});