Skip to content

Commit 825a027

Browse files
authored
fix: getUsers function (#410)
1 parent 149afd5 commit 825a027

File tree

3 files changed

+31
-45
lines changed

3 files changed

+31
-45
lines changed

src/user/user.service.spec.ts

+3-5
Original file line numberDiff line numberDiff line change
@@ -293,11 +293,9 @@ describe('UserService', () => {
293293
eventLog,
294294
...userBase
295295
} = mockUserEntity;
296-
jest.spyOn(repo, 'createQueryBuilder').mockImplementationOnce(
297-
createQueryBuilderMock({
298-
getMany: jest.fn().mockResolvedValue([{ ...mockUserEntity, email: '[email protected]' }]),
299-
}) as never,
300-
);
296+
jest
297+
.spyOn(repo, 'find')
298+
.mockImplementationOnce(async () => [{ ...mockUserEntity, email: '[email protected]' }]);
301299
const users = await service.getUsers({ email: '[email protected]' }, {}, [], 10);
302300
expect(users).toEqual([{ user: { ...userBase, email: '[email protected]' }, partnerAccesses: [] }]);
303301
});

src/user/user.service.ts

+25-40
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
CREATE_USER_INVALID_EMAIL,
1212
CREATE_USER_WEAK_PASSWORD,
1313
} from 'src/utils/errors';
14-
import { Repository } from 'typeorm';
14+
import { ILike, Repository } from 'typeorm';
1515
import {
1616
addCrispProfile,
1717
deleteCrispProfile,
@@ -407,46 +407,31 @@ export class UserService {
407407
fields: Array<string>,
408408
limit: number,
409409
): Promise<GetUserDto[] | undefined> {
410-
const query = this.userRepository.createQueryBuilder('user');
411-
// TODO this needs some refactoring but deprioritised for now
412-
if (relations.partnerAccess) {
413-
query.leftJoinAndSelect('user.partnerAccess', 'partnerAccess');
414-
}
415-
416-
if (relations.partnerAdmin) {
417-
query.leftJoinAndSelect('user.partnerAdmin', 'partnerAdmin');
418-
}
419-
420-
if (filters?.partnerAdmin?.partnerAdminId === 'IS NOT NULL') {
421-
query.andWhere('partnerAdmin.partnerAdminId IS NOT NULL');
422-
}
423-
424-
if (filters.partnerAccess?.userId === 'IS NOT NULL') {
425-
query.andWhere('partnerAccess.userId IS NOT NULL');
426-
}
427-
428-
if (filters.partnerAccess?.featureTherapy) {
429-
query.andWhere('partnerAccess.featureTherapy = :featureTherapy', {
430-
featureTherapy: filters.partnerAccess.featureTherapy,
431-
});
432-
}
433-
434-
if (filters.partnerAccess?.active) {
435-
query.andWhere('partnerAccess.active = :active', {
436-
active: filters.partnerAccess.active,
437-
});
438-
}
439-
440-
if (filters.email) {
441-
query.andWhere('user.email ILike :email', { email: `%${filters.email}%` });
442-
}
443-
444-
if (limit) {
445-
query.limit(limit);
446-
}
410+
const users = await this.userRepository.find({
411+
relations: relations,
412+
where: {
413+
...(filters.email && { email: ILike(filters.email) }),
414+
...(filters.partnerAccess && {
415+
partnerAccess: {
416+
...(filters.partnerAccess.userId && { userId: filters.partnerAccess.userId }),
417+
...(typeof filters.partnerAccess.featureTherapy !== 'undefined' && {
418+
featureTherapy: filters.partnerAccess.featureTherapy,
419+
}),
420+
...(typeof filters.partnerAccess.active !== 'undefined' && {
421+
active: filters.partnerAccess.active,
422+
}),
423+
},
424+
}),
425+
...(filters.partnerAdmin && {
426+
partnerAdmin: {
427+
...(filters.partnerAdmin && { id: filters.partnerAdmin.partnerAdminId }),
428+
},
429+
}),
430+
},
431+
...(limit && { take: limit }),
432+
});
447433

448-
const queryResult = await query.getMany();
449-
const formattedUsers = queryResult.map((user) => formatGetUsersObject(user));
434+
const formattedUsers = users.map((user) => formatGetUsersObject(user));
450435
return formattedUsers;
451436
}
452437
}

test/utils/mockedServices.ts

+3
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,9 @@ export const mockUserRepositoryMethodsFactory = {
197197
...dto,
198198
};
199199
},
200+
find: async () => {
201+
return [mockUserEntity];
202+
},
200203
findOneBy: ({ email: client_email }) => {
201204
return { ...mockUserEntity, ...(client_email ? { email: client_email } : {}) };
202205
},

0 commit comments

Comments
 (0)