Skip to content

Commit 2fea7bc

Browse files
committed
#1658 Allowed finance team to edit all RR's
1 parent af5fdc6 commit 2fea7bc

3 files changed

Lines changed: 27 additions & 10 deletions

File tree

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -255,10 +255,12 @@ export default class ReimbursementRequestService {
255255

256256
if (!oldReimbursementRequest) throw new NotFoundException('Reimbursement Request', requestId);
257257
if (oldReimbursementRequest.dateDeleted) throw new DeletedException('Reimbursement Request', requestId);
258-
if (oldReimbursementRequest.recipientId !== submitter.userId)
259-
throw new AccessDeniedException(
260-
'You do not have access to delete this reimbursement request, only the creator can edit a reimbursement request'
261-
);
258+
try {
259+
await validateUserIsPartOfFinanceTeam(submitter);
260+
} catch {
261+
if (oldReimbursementRequest.recipientId !== submitter.userId)
262+
throw new AccessDeniedException('You do not have access to edit this reimbursement request');
263+
}
262264

263265
const vendor = await prisma.vendor.findUnique({
264266
where: { vendorId }

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

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -222,11 +222,24 @@ describe('Reimbursement Requests', () => {
222222
[],
223223
superman
224224
)
225-
).rejects.toThrow(
226-
new AccessDeniedException(
227-
'You do not have access to delete this reimbursement request, only the creator can edit a reimbursement request'
225+
).rejects.toThrow(new AccessDeniedException('You do not have access to edit this reimbursement request'));
226+
});
227+
228+
test('Edit Reimbursement Request fails if Submitter not on Finance Team', async () => {
229+
vi.spyOn(prisma.team, 'findUnique').mockResolvedValue({ ...primsaTeam2, headId: 1 });
230+
await expect(
231+
ReimbursementRequestService.editReimbursementRequest(
232+
GiveMeMyMoney.reimbursementRequestId,
233+
GiveMeMyMoney.dateOfExpense,
234+
GiveMeMyMoney.vendorId,
235+
GiveMeMyMoney.account as ClubAccount,
236+
GiveMeMyMoney.expenseTypeId,
237+
GiveMeMyMoney.totalCost,
238+
[],
239+
[],
240+
alfred
228241
)
229-
);
242+
).rejects.toThrow(new AccessDeniedException('You do not have access to edit this reimbursement request'));
230243
});
231244

232245
test('Edit Reimbursement Request Fails When Vendor does not exist', async () => {

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,14 +187,16 @@ const ReimbursementRequestDetailsView: React.FC<ReimbursementRequestDetailsViewP
187187
};
188188

189189
const allowEdit =
190-
user.userId === reimbursementRequest.recipient.userId && !isReimbursementRequestAdvisorApproved(reimbursementRequest);
190+
(user.userId === reimbursementRequest.recipient.userId &&
191+
!isReimbursementRequestAdvisorApproved(reimbursementRequest)) ||
192+
user.isFinance;
191193

192194
const buttons: ButtonInfo[] = [
193195
{
194196
title: 'Edit',
195197
onClick: () => history.push(`${routes.REIMBURSEMENT_REQUESTS}/${reimbursementRequest.reimbursementRequestId}/edit`),
196198
icon: <Edit />,
197-
disabled: !allowEdit
199+
disabled: !allowEdit && !user.isFinance
198200
},
199201
{
200202
title: 'Delete',

0 commit comments

Comments
 (0)