diff --git a/src/db/profileTypeData.json b/src/db/profileTypeData.json index 63b94873cec67f27366b8d0095e9dd892ac01630..4722cac419bfb9fbd7476a28e8f77c9ed372f831 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 b47674c0a5f6af43d71d2ed062632255d9c1b412..fadb1a63dec7db6d95ad399e3ca75007db0987b4 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 b54335ba3214caa5d8c6574aceb238bbf11d4490..bda52c3ad8df0394914bf5a9b824dbbc40c3de38 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 }