@@ -22,7 +22,8 @@ import {
2222 prismaGiveMeMyMoney4 ,
2323 prismaGiveMeMyMoney5 ,
2424 prismaReimbursementStatus ,
25- sharedGiveMeMyMoney
25+ sharedGiveMeMyMoney ,
26+ KFC
2627} from './test-data/reimbursement-requests.test-data' ;
2728import {
2829 alfred ,
@@ -758,4 +759,29 @@ describe('Reimbursement Requests', () => {
758759 expect ( newReimbursement ) . toStrictEqual ( reimbursementTransformer ( reimbursementMock ) ) ;
759760 } ) ;
760761 } ) ;
762+
763+ describe ( 'Edit Vendor Tests' , ( ) => {
764+ test ( 'Throws error if user isnt an admin or lead/head of the finance' , async ( ) => {
765+ await expect (
766+ ReimbursementRequestService . editVendors ( 'I Love Benny' , GiveMeMyMoney . vendorId , wonderwoman )
767+ ) . rejects . toThrow ( new AccessDeniedException ( 'Only Admins, Finance Team Leads, or Heads can edit vendors' ) ) ;
768+ } ) ;
769+
770+ test ( 'Throws error if the vendor name already exists' , async ( ) => {
771+ vi . spyOn ( prisma . vendor , 'findUnique' ) . mockResolvedValue ( PopEyes ) ;
772+ await expect ( ReimbursementRequestService . editVendors ( 'CHICKEN' , GiveMeMyMoney . vendorId , batman ) ) . rejects . toThrow (
773+ new HttpException ( 400 , 'vendor name already exists' )
774+ ) ;
775+ } ) ;
776+
777+ test ( 'Successfuly changes Vendors name' , async ( ) => {
778+ vi . spyOn ( prisma . vendor , 'update' ) . mockResolvedValue ( KFC ) ;
779+ vi . spyOn ( prisma . vendor , 'findUnique' ) . mockResolvedValue ( null ) ;
780+
781+ const vendor = await ReimbursementRequestService . editVendors ( 'kfc' , PopEyes . vendorId , batman ) ;
782+
783+ expect ( vendor . name ) . toBe ( 'kfc' ) ;
784+ expect ( prisma . vendor . update ) . toBeCalledTimes ( 1 ) ;
785+ } ) ;
786+ } ) ;
761787} ) ;
0 commit comments