Skip to content

Commit

Permalink
Merge pull request #411 from chaynHQ/develop
Browse files Browse the repository at this point in the history
Merge Develop onto Main
  • Loading branch information
annarhughes committed Apr 16, 2024
2 parents 6157453 + 825a027 commit bde2126
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 45 deletions.
8 changes: 3 additions & 5 deletions src/user/user.service.spec.ts
Expand Up @@ -293,11 +293,9 @@ describe('UserService', () => {
eventLog,
...userBase
} = mockUserEntity;
jest.spyOn(repo, 'createQueryBuilder').mockImplementationOnce(
createQueryBuilderMock({
getMany: jest.fn().mockResolvedValue([{ ...mockUserEntity, email: '[email protected]' }]),
}) as never,
);
jest
.spyOn(repo, 'find')
.mockImplementationOnce(async () => [{ ...mockUserEntity, email: '[email protected]' }]);
const users = await service.getUsers({ email: '[email protected]' }, {}, [], 10);
expect(users).toEqual([{ user: { ...userBase, email: '[email protected]' }, partnerAccesses: [] }]);
});
Expand Down
65 changes: 25 additions & 40 deletions src/user/user.service.ts
Expand Up @@ -11,7 +11,7 @@ import {
CREATE_USER_INVALID_EMAIL,
CREATE_USER_WEAK_PASSWORD,
} from 'src/utils/errors';
import { Repository } from 'typeorm';
import { ILike, Repository } from 'typeorm';
import {
addCrispProfile,
deleteCrispProfile,
Expand Down Expand Up @@ -407,46 +407,31 @@ export class UserService {
fields: Array<string>,
limit: number,
): Promise<GetUserDto[] | undefined> {
const query = this.userRepository.createQueryBuilder('user');
// TODO this needs some refactoring but deprioritised for now
if (relations.partnerAccess) {
query.leftJoinAndSelect('user.partnerAccess', 'partnerAccess');
}

if (relations.partnerAdmin) {
query.leftJoinAndSelect('user.partnerAdmin', 'partnerAdmin');
}

if (filters?.partnerAdmin?.partnerAdminId === 'IS NOT NULL') {
query.andWhere('partnerAdmin.partnerAdminId IS NOT NULL');
}

if (filters.partnerAccess?.userId === 'IS NOT NULL') {
query.andWhere('partnerAccess.userId IS NOT NULL');
}

if (filters.partnerAccess?.featureTherapy) {
query.andWhere('partnerAccess.featureTherapy = :featureTherapy', {
featureTherapy: filters.partnerAccess.featureTherapy,
});
}

if (filters.partnerAccess?.active) {
query.andWhere('partnerAccess.active = :active', {
active: filters.partnerAccess.active,
});
}

if (filters.email) {
query.andWhere('user.email ILike :email', { email: `%${filters.email}%` });
}

if (limit) {
query.limit(limit);
}
const users = await this.userRepository.find({
relations: relations,
where: {
...(filters.email && { email: ILike(filters.email) }),
...(filters.partnerAccess && {
partnerAccess: {
...(filters.partnerAccess.userId && { userId: filters.partnerAccess.userId }),
...(typeof filters.partnerAccess.featureTherapy !== 'undefined' && {
featureTherapy: filters.partnerAccess.featureTherapy,
}),
...(typeof filters.partnerAccess.active !== 'undefined' && {
active: filters.partnerAccess.active,
}),
},
}),
...(filters.partnerAdmin && {
partnerAdmin: {
...(filters.partnerAdmin && { id: filters.partnerAdmin.partnerAdminId }),
},
}),
},
...(limit && { take: limit }),
});

const queryResult = await query.getMany();
const formattedUsers = queryResult.map((user) => formatGetUsersObject(user));
const formattedUsers = users.map((user) => formatGetUsersObject(user));
return formattedUsers;
}
}
3 changes: 3 additions & 0 deletions test/utils/mockedServices.ts
Expand Up @@ -197,6 +197,9 @@ export const mockUserRepositoryMethodsFactory = {
...dto,
};
},
find: async () => {
return [mockUserEntity];
},
findOneBy: ({ email: client_email }) => {
return { ...mockUserEntity, ...(client_email ? { email: client_email } : {}) };
},
Expand Down

0 comments on commit bde2126

Please sign in to comment.