From 5060fe861cfd7151b1a308387628f84a6d6c2184 Mon Sep 17 00:00:00 2001 From: Bastien DUMONT <bdumont@grandlyon.com> Date: Tue, 8 Oct 2024 15:41:11 +0000 Subject: [PATCH] chore(lint/test): add test coverage & remove commented test --- src/db/profileTypeData.json | 3 +- .../profileTypeEntity.service.spec.ts | 59 +++++++++++++------ src/services/profileTypeEntity.service.ts | 9 ++- 3 files changed, 47 insertions(+), 24 deletions(-) diff --git a/src/db/profileTypeData.json b/src/db/profileTypeData.json index 63b94873c..4722cac41 100644 --- a/src/db/profileTypeData.json +++ b/src/db/profileTypeData.json @@ -17,7 +17,8 @@ "hasReplacedHeater": "unknown", "warmingFluid": 0, "hotWaterFluid": 0, - "cookingFluid": 0 + "cookingFluid": 0, + "equipments": [] } } ] diff --git a/src/services/profileTypeEntity.service.spec.ts b/src/services/profileTypeEntity.service.spec.ts index b47674c0a..fadb1a63d 100644 --- a/src/services/profileTypeEntity.service.spec.ts +++ b/src/services/profileTypeEntity.service.spec.ts @@ -1,4 +1,6 @@ import { QueryResult } from 'cozy-client' +import profileTypeDataJson from 'db/profileTypeData.json' +import { DateTime } from 'luxon' import { ProfileType } from 'models' import mockClient from 'tests/__mocks__/client.mock' import { profileTypeData } from 'tests/__mocks__/profileType.mock' @@ -8,32 +10,53 @@ describe('UserProfileTypeEntity service', () => { const pteService = new ProfileTypeEntityService(mockClient) describe('getUserProfileType', () => { + const mockProfileQueryResult: QueryResult<ProfileType[]> = { + data: [profileTypeData], + bookmark: '', + next: false, + skip: 0, + } + const mockEmptyQueryResult: QueryResult<ProfileType[]> = { + data: [], + bookmark: '', + next: false, + skip: 0, + } + it('should return the closest profileType according to passed argument updateDate', async () => { + mockClient.query.mockResolvedValueOnce(mockProfileQueryResult) + const result = await pteService.getProfileType(DateTime.local(2022, 1, 1)) + expect(result).toEqual(profileTypeData) + }) + + it('should not find a profile corresponding to the passed argument updateDate', async () => { + mockClient.query.mockResolvedValueOnce(mockEmptyQueryResult) + mockClient.query.mockResolvedValueOnce(mockProfileQueryResult) + const result = await pteService.getProfileType(DateTime.local(2022, 1, 1)) + expect(result).toEqual(profileTypeData) + }) + + it('should return default profileType if no profile found when date is given', async () => { + const date = DateTime.local(2022, 1, 1) + const defaultProfileType = { + ...profileTypeDataJson[0].profileType, + updateDate: date, + } as ProfileType + + mockClient.query.mockResolvedValueOnce(mockEmptyQueryResult) + mockClient.query.mockResolvedValueOnce(mockEmptyQueryResult) + const result = await pteService.getProfileType(date) + expect(result).toEqual(defaultProfileType) + }) it('should return the last profileType in base', async () => { - const mockQueryResult: QueryResult<ProfileType[]> = { - data: [profileTypeData], - bookmark: '', - next: false, - skip: 0, - } - mockClient.query.mockResolvedValueOnce(mockQueryResult) + mockClient.query.mockResolvedValueOnce(mockProfileQueryResult) const result = await pteService.getProfileType() expect(result).toEqual(profileTypeData) }) - // it('should return the closest profileType according to passed argument updateDate', async () => {}) - it('should return null if no user profile found', async () => { - const mockQueryResult: QueryResult<ProfileType[]> = { - data: [], - bookmark: '', - next: false, - skip: 0, - } - mockClient.query.mockResolvedValueOnce(mockQueryResult) + mockClient.query.mockResolvedValueOnce(mockEmptyQueryResult) const result = await pteService.getProfileType() expect(result).toBeNull() }) }) - - // describe('updateUserProfileType', () => {}) }) diff --git a/src/services/profileTypeEntity.service.ts b/src/services/profileTypeEntity.service.ts index b54335ba3..bda52c3ad 100644 --- a/src/services/profileTypeEntity.service.ts +++ b/src/services/profileTypeEntity.service.ts @@ -40,10 +40,9 @@ export default class ProfileTypeEntityService { logApp.debug( 'Checking if user has already filled a profileType and uses it as default' ) - const query = Q(PROFILETYPE_DOCTYPE) const data: QueryResult<ProfileType[]> = await this._client.query(query) - if (data.data.length) { - const loadedProfileType: ProfileType = data.data[0] + if (data?.data.length) { + const loadedProfileType = data.data[0] logApp.debug( 'found oldest profileType filled by user : ', loadedProfileType @@ -51,10 +50,10 @@ export default class ProfileTypeEntityService { return loadedProfileType } else { // return default profiletype - const loadedProfileType: any = { + const loadedProfileType = { ...profileTypeData[0].profileType, updateDate: date, - } + } as ProfileType logApp.debug('No profileType were found, loading default profileType') return loadedProfileType } -- GitLab