Skip to content

Commit

Permalink
Add failing pia-intake service test
Browse files Browse the repository at this point in the history
  • Loading branch information
Bottle7 committed Jul 21, 2023
1 parent 58d9afc commit f6c345d
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 2 deletions.
8 changes: 6 additions & 2 deletions src/backend/src/modules/pia-intake/pia-intake.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,9 @@ export class PiaIntakeService {
whereClause.push({
...commonWhereClause,
ministry: In(mpoMinistries),
status: Not(PiaIntakeStatusEnum.INCOMPLETE),
status:
Not(PiaIntakeStatusEnum.INCOMPLETE) ||
Not(PiaIntakeStatusEnum.COMPLETE),
});
}
}
Expand All @@ -290,12 +292,14 @@ export class PiaIntakeService {
invitee: {
createdByGuid: user.idir_user_guid,
},
status: Not(PiaIntakeStatusEnum.COMPLETE),
});

// Scenario 5: Return COMPLETE PIAs only if queried and if the user is a drafter, invitee, or MPO on the PIA
// Scenario 5: Return COMPLETE PIAs only if queried and if the user is a drafter, invitee, or MPO
if (query.filterByStatus === PiaIntakeStatusEnum.COMPLETE) {
whereClause.push({
...commonWhereClause,
createdByGuid: user.idir_user_guid,
status: PiaIntakeStatusEnum.COMPLETE,
});
}
Expand Down
57 changes: 57 additions & 0 deletions src/backend/test/unit/pia-intake/pia-intake.service.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1980,6 +1980,63 @@ describe('PiaIntakeService', () => {
};
expect(result).toEqual(expectedResult);
});

// Scenario 20: User is a drafter, has no roles, and is filtering for COMPLETE PIAs
it('succeeds when the user is only a drafter and is filtering for COMPLETE PIAs', async () => {
const user: KeycloakUser = { ...keycloakUserMock };
const userRoles = [];
const piaIntakeEntity = { ...piaIntakeEntityMock };
const query: PiaIntakeFindQuery = {
page: 1,
pageSize: 12,
filterByStatus: PiaIntakeStatusEnum.COMPLETE,
};

piaIntakeRepository.findAndCount = jest.fn(async () => {
delay(10);
return [[piaIntakeEntity], 100];
});

omitBaseKeysSpy.mockReturnValue({ ...getPiaIntakeROMock });

const result = await service.findAll(user, userRoles, query);

expect(typeormInSpy).not.toHaveBeenCalled();

expect(typeormILikeSpy).not.toHaveBeenCalled();

expect(piaIntakeRepository.findAndCount).toHaveBeenCalledWith({
where: [
{
isActive: true,
createdByGuid: user.idir_user_guid,
status: PiaIntakeStatusEnum.COMPLETE,
},
{
isActive: true,
invitee: {
createdByGuid: user.idir_user_guid,
},
status: PiaIntakeStatusEnum.COMPLETE,
},
],
order: {
createdAt: -1,
},
skip: 0,
take: 12,
});

expect(omitBaseKeysSpy).toHaveBeenCalledTimes(1);

const expectedResult: PaginatedRO<GetPiaIntakeRO> = {
data: [getPiaIntakeROMock],
page: 1,
pageSize: 12,
total: 100,
};
expect(result).toEqual(expectedResult);
});
});

/**
Expand Down

0 comments on commit f6c345d

Please sign in to comment.