Skip to content

Commit 559d5a2

Browse files
authored
Merge pull request #4117 from Northeastern-Electric-Racing/#4026-NigelPurvis-AddToastErrorSabo
Fixed toast error with sabo number!
2 parents 58b1740 + 198724b commit 559d5a2

4 files changed

Lines changed: 33 additions & 3 deletions

File tree

src/backend/src/services/reimbursement-requests.services.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -741,13 +741,19 @@ export default class ReimbursementRequestService {
741741
if (reimbursementRequest.organizationId !== organization.organizationId)
742742
throw new InvalidOrganizationException('Reimbursement Request');
743743

744+
const existingWithSaboNumber = await prisma.reimbursement_Request.findFirst({
745+
where: { saboId: saboNumber, organizationId: organization.organizationId }
746+
});
747+
if (existingWithSaboNumber) {
748+
throw new HttpException(400, 'This SABO number is already assigned to another reimbursement request.');
749+
}
750+
744751
const reimbursementRequestWithSaboNumber = await prisma.reimbursement_Request.update({
745752
where: { reimbursementRequestId },
746753
data: {
747754
saboId: saboNumber
748755
}
749756
});
750-
751757
return reimbursementRequestWithSaboNumber;
752758
}
753759

src/backend/tests/unit/reimbursement-requests.test.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -931,4 +931,28 @@ describe('Reimbursement Requests', () => {
931931
).rejects.toThrow(new NotFoundException('Reimbursement Product Other Reason', 'bad id'));
932932
});
933933
});
934+
935+
describe('Setting the SABO number on a reimbursement request', () => {
936+
test('Fails when SABO number is already assigned to a request', async () => {
937+
await ReimbursementRequestService.setSaboNumber(
938+
reimbursementRequest.reimbursementRequestId,
939+
'SABO-001',
940+
createdUser,
941+
org
942+
);
943+
await expect(
944+
ReimbursementRequestService.setSaboNumber(reimbursementRequest.reimbursementRequestId, 'SABO-001', createdUser, org)
945+
).rejects.toThrow(new HttpException(400, 'This SABO number is already assigned to another reimbursement request.'));
946+
});
947+
948+
test('Successfully sets the SABO number', async () => {
949+
const result = await ReimbursementRequestService.setSaboNumber(
950+
reimbursementRequest.reimbursementRequestId,
951+
'SABO-001',
952+
createdUser,
953+
org
954+
);
955+
expect(result.saboId).toEqual('SABO-001');
956+
});
957+
});
934958
});

src/frontend/src/apis/finance.api.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,7 @@ export const getPendingAdvisorList = () => {
363363
* @param saboNumber the SABO number to set
364364
*/
365365
export const setSaboNumber = async (requestId: string, saboNumber: string) => {
366-
axios.post(apiUrls.financeSetSaboNumber(requestId), {
366+
return axios.post(apiUrls.financeSetSaboNumber(requestId), {
367367
saboNumber
368368
});
369369
};

src/frontend/src/pages/FinancePage/ReimbursementRequestDetailPage/AddSABONumberModal.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ const AddSABONumberModal = ({ modalShow, onHide, reimbursementRequestId }: AddSA
3434
const onSubmit = async (data: { saboNumber: string }) => {
3535
try {
3636
await setSaboNumber(data);
37+
onHide();
3738
} catch (error: unknown) {
3839
if (error instanceof Error) {
3940
toast.error(error.message);
4041
}
4142
}
42-
onHide();
4343
};
4444

4545
return (

0 commit comments

Comments
 (0)