@@ -574,6 +574,61 @@ describe('Reimbursement Requests', () => {
574574 } ) ;
575575 } ) ;
576576
577+ describe ( 'Deny Reimbursement Request Tests' , ( ) => {
578+ test ( 'Deny Reimbursement Request fails if Submitter not on Finance Team' , async ( ) => {
579+ vi . spyOn ( prisma . team , 'findUnique' ) . mockResolvedValue ( { ...primsaTeam2 , headId : 1 } ) ;
580+ await expect (
581+ ReimbursementRequestService . denyReimbursementRequest ( GiveMeMyMoney . reimbursementRequestId , alfred )
582+ ) . rejects . toThrow ( new AccessDeniedException ( `You are not a member of the finance team!` ) ) ;
583+ } ) ;
584+
585+ test ( 'Deny Reimbursement Request fails if Finance Team does not exist' , async ( ) => {
586+ vi . spyOn ( prisma . team , 'findUnique' ) . mockResolvedValue ( null ) ;
587+ await expect (
588+ ReimbursementRequestService . denyReimbursementRequest ( GiveMeMyMoney . reimbursementRequestId , alfred )
589+ ) . rejects . toThrow ( new HttpException ( 500 , 'Finance team does not exist!' ) ) ;
590+ } ) ;
591+
592+ test ( 'Deny Reimbursement Request fails if the Request does not exist' , async ( ) => {
593+ vi . spyOn ( prisma . team , 'findUnique' ) . mockResolvedValue ( primsaTeam2 ) ;
594+ vi . spyOn ( prisma . reimbursement_Request , 'findUnique' ) . mockResolvedValue ( null ) ;
595+
596+ await expect (
597+ ReimbursementRequestService . denyReimbursementRequest ( GiveMeMyMoney . reimbursementRequestId , alfred )
598+ ) . rejects . toThrow ( new NotFoundException ( 'Reimbursement Request' , GiveMeMyMoney . reimbursementRequestId ) ) ;
599+ } ) ;
600+
601+ test ( 'Deny Reimbursement Request fails if the Request has been deleted' , async ( ) => {
602+ vi . spyOn ( prisma . team , 'findUnique' ) . mockResolvedValue ( primsaTeam2 ) ;
603+ vi . spyOn ( prisma . reimbursement_Request , 'findUnique' ) . mockResolvedValue ( GiveMeMyMoney2 ) ;
604+
605+ await expect (
606+ ReimbursementRequestService . denyReimbursementRequest ( GiveMeMyMoney2 . reimbursementRequestId , alfred )
607+ ) . rejects . toThrow ( new DeletedException ( 'Reimbursement Request' , GiveMeMyMoney2 . reimbursementRequestId ) ) ;
608+ } ) ;
609+
610+ test ( 'Deny Reimbursement Request fails if the request has already been approved' , async ( ) => {
611+ vi . spyOn ( prisma . team , 'findUnique' ) . mockResolvedValue ( primsaTeam2 ) ;
612+ vi . spyOn ( prisma . reimbursement_Request , 'findUnique' ) . mockResolvedValue ( prismaGiveMeMyMoney2 ) ;
613+
614+ await expect (
615+ ReimbursementRequestService . denyReimbursementRequest ( prismaGiveMeMyMoney2 . reimbursementRequestId , alfred )
616+ ) . rejects . toThrow ( new HttpException ( 400 , 'This reimbursement request has already been approved' ) ) ;
617+ } ) ;
618+ test ( 'Deny Reimbursment Request success' , async ( ) => {
619+ vi . spyOn ( prisma . team , 'findUnique' ) . mockResolvedValue ( primsaTeam2 ) ;
620+ vi . spyOn ( prisma . reimbursement_Request , 'findUnique' ) . mockResolvedValue ( prismaGiveMeMyMoney3 ) ;
621+ vi . spyOn ( prisma . reimbursement_Status , 'create' ) . mockResolvedValue ( prismaReimbursementStatus ) ;
622+
623+ const reimbursementStatus = await ReimbursementRequestService . denyReimbursementRequest (
624+ prismaGiveMeMyMoney3 . reimbursementRequestId ,
625+ alfred
626+ ) ;
627+
628+ expect ( reimbursementStatus . reimbursementStatusId ) . toStrictEqual ( prismaReimbursementStatus . reimbursementStatusId ) ;
629+ } ) ;
630+ } ) ;
631+
577632 describe ( 'Reimbursement User Tests' , ( ) => {
578633 test ( 'Throws an error if user is a guest' , async ( ) => {
579634 await expect ( ReimbursementRequestService . reimburseUser ( 100 , '2023-01-11T11:12:33.409Z' , theVisitor ) ) . rejects . toThrow (
0 commit comments