@@ -758,7 +758,55 @@ describe('Reimbursement Requests', () => {
758758 test ( 'carNumber 0 filters to only car-0 requests and does not return all requests (Fergus regression)' , async ( ) => {
759759 const fergusResults = await ReimbursementRequestService . getUserReimbursementRequests ( createdUser , org , 0 ) ;
760760 expect ( fergusResults ) . toHaveLength ( 1 ) ;
761- expect ( fergusResults [ 0 ] . reimbursementRequestId ) . toBe ( reimbursementRequest . reimbursementRequestId ) ;
761+ expect ( fergusResults . map ( ( r ) => r . reimbursementRequestId ) ) . toContain ( reimbursementRequest . reimbursementRequestId ) ;
762+ expect ( fergusResults . map ( ( r ) => r . reimbursementRequestId ) ) . not . toContain ( car1RR . reimbursementRequestId ) ;
763+ } ) ;
764+ test ( 'category-only RR does not cause WBS-linked car-1 RR to bleed into car-0 results' , async ( ) => {
765+ const categoryOnlyRR = await ReimbursementRequestService . createReimbursementRequest (
766+ createdUser ,
767+ createdVendor . vendorId ,
768+ createdIndexCode . indexCodeId ,
769+ [
770+ {
771+ name : 'CONSUMABLES' ,
772+ reason : createdOtherProductReason ,
773+ cost : 250 ,
774+ refundSources : [ { indexCode : createdIndexCode , amount : 250 } ]
775+ }
776+ ] ,
777+ [ ] ,
778+ createdAccountCode . accountCodeId ,
779+ 250 ,
780+ org
781+ ) ;
782+
783+ const results = await ReimbursementRequestService . getUserReimbursementRequests ( createdUser , org , 0 ) ;
784+ expect ( results . map ( ( r ) => r . reimbursementRequestId ) ) . toContain ( categoryOnlyRR . reimbursementRequestId ) ;
785+ expect ( results . map ( ( r ) => r . reimbursementRequestId ) ) . not . toContain ( car1RR . reimbursementRequestId ) ;
786+ } ) ;
787+
788+ test ( 'category-only RR does not cause WBS-linked car-0 RR to bleed into car-1 results' , async ( ) => {
789+ const categoryOnlyRR = await ReimbursementRequestService . createReimbursementRequest (
790+ createdUser ,
791+ createdVendor . vendorId ,
792+ createdIndexCode . indexCodeId ,
793+ [
794+ {
795+ name : 'CONSUMABLES' ,
796+ reason : createdOtherProductReason ,
797+ cost : 250 ,
798+ refundSources : [ { indexCode : createdIndexCode , amount : 250 } ]
799+ }
800+ ] ,
801+ [ ] ,
802+ createdAccountCode . accountCodeId ,
803+ 250 ,
804+ org
805+ ) ;
806+
807+ const results = await ReimbursementRequestService . getUserReimbursementRequests ( createdUser , org , 1 ) ;
808+ expect ( results . map ( ( r ) => r . reimbursementRequestId ) ) . toContain ( categoryOnlyRR . reimbursementRequestId ) ;
809+ expect ( results . map ( ( r ) => r . reimbursementRequestId ) ) . not . toContain ( reimbursementRequest . reimbursementRequestId ) ;
762810 } ) ;
763811 } ) ;
764812
@@ -786,7 +834,8 @@ describe('Reimbursement Requests', () => {
786834 const financeHead = await prisma . user . findUniqueOrThrow ( { where : { googleAuthId : 'financeHead' } } ) ;
787835 const fergusResults = await ReimbursementRequestService . getAllReimbursementRequests ( financeHead , org , 0 ) ;
788836 expect ( fergusResults ) . toHaveLength ( 1 ) ;
789- expect ( fergusResults [ 0 ] . reimbursementRequestId ) . toBe ( reimbursementRequest . reimbursementRequestId ) ;
837+ expect ( fergusResults . map ( ( r ) => r . reimbursementRequestId ) ) . toContain ( reimbursementRequest . reimbursementRequestId ) ;
838+ expect ( fergusResults . map ( ( r ) => r . reimbursementRequestId ) ) . not . toContain ( car1RR . reimbursementRequestId ) ;
790839 } ) ;
791840 } ) ;
792841
@@ -855,7 +904,8 @@ describe('Reimbursement Requests', () => {
855904 const financeHead = await prisma . user . findUniqueOrThrow ( { where : { googleAuthId : 'financeHead' } } ) ;
856905 const fergusResults = await ReimbursementRequestService . getUsersTeamsReimbursementRequests ( financeHead , org , 0 ) ;
857906 expect ( fergusResults ) . toHaveLength ( 1 ) ;
858- expect ( fergusResults [ 0 ] . reimbursementRequestId ) . toBe ( reimbursementRequest . reimbursementRequestId ) ;
907+ expect ( fergusResults . map ( ( r ) => r . reimbursementRequestId ) ) . toContain ( reimbursementRequest . reimbursementRequestId ) ;
908+ expect ( fergusResults . map ( ( r ) => r . reimbursementRequestId ) ) . not . toContain ( car1RR . reimbursementRequestId ) ;
859909 } ) ;
860910 } ) ;
861911 } ) ;
@@ -955,4 +1005,68 @@ describe('Reimbursement Requests', () => {
9551005 expect ( result . saboId ) . toEqual ( 'SABO-001' ) ;
9561006 } ) ;
9571007 } ) ;
1008+
1009+ describe ( 'category-only requests appear under every car' , ( ) => {
1010+ let categoryOnlyRR : ReimbursementRequest ;
1011+
1012+ beforeEach ( async ( ) => {
1013+ categoryOnlyRR = await ReimbursementRequestService . createReimbursementRequest (
1014+ createdUser ,
1015+ createdVendor . vendorId ,
1016+ createdIndexCode . indexCodeId ,
1017+ [
1018+ {
1019+ name : 'CONSUMABLES' ,
1020+ reason : createdOtherProductReason ,
1021+ cost : 250 ,
1022+ refundSources : [ { indexCode : createdIndexCode , amount : 250 } ]
1023+ }
1024+ ] ,
1025+ [ ] ,
1026+ createdAccountCode . accountCodeId ,
1027+ 250 ,
1028+ org
1029+ ) ;
1030+ } ) ;
1031+
1032+ test ( 'category-only RR appears under car 0 for getUserReimbursementRequests' , async ( ) => {
1033+ const results = await ReimbursementRequestService . getUserReimbursementRequests ( createdUser , org , 0 ) ;
1034+ expect ( results . map ( ( r ) => r . reimbursementRequestId ) ) . toContain ( categoryOnlyRR . reimbursementRequestId ) ;
1035+ } ) ;
1036+
1037+ test ( 'category-only RR appears under car 1 for getUserReimbursementRequests' , async ( ) => {
1038+ const results = await ReimbursementRequestService . getUserReimbursementRequests ( createdUser , org , 1 ) ;
1039+ expect ( results . map ( ( r ) => r . reimbursementRequestId ) ) . toContain ( categoryOnlyRR . reimbursementRequestId ) ;
1040+ } ) ;
1041+
1042+ test ( 'category-only RR appears under car 0 for getAllReimbursementRequests' , async ( ) => {
1043+ const financeHead = await prisma . user . findUniqueOrThrow ( { where : { googleAuthId : 'financeHead' } } ) ;
1044+ const results = await ReimbursementRequestService . getAllReimbursementRequests ( financeHead , org , 0 ) ;
1045+ expect ( results . map ( ( r ) => r . reimbursementRequestId ) ) . toContain ( categoryOnlyRR . reimbursementRequestId ) ;
1046+ } ) ;
1047+
1048+ test ( 'category-only RR appears under car 1 for getAllReimbursementRequests' , async ( ) => {
1049+ const financeHead = await prisma . user . findUniqueOrThrow ( { where : { googleAuthId : 'financeHead' } } ) ;
1050+ const results = await ReimbursementRequestService . getAllReimbursementRequests ( financeHead , org , 1 ) ;
1051+ expect ( results . map ( ( r ) => r . reimbursementRequestId ) ) . toContain ( categoryOnlyRR . reimbursementRequestId ) ;
1052+ } ) ;
1053+
1054+ test ( 'category-only RR appears under car 0 for getUsersTeamsReimbursementRequests' , async ( ) => {
1055+ const financeHead = await prisma . user . findUniqueOrThrow ( { where : { googleAuthId : 'financeHead' } } ) ;
1056+ const results = await ReimbursementRequestService . getUsersTeamsReimbursementRequests ( financeHead , org , 0 ) ;
1057+ expect ( results . map ( ( r ) => r . reimbursementRequestId ) ) . toContain ( categoryOnlyRR . reimbursementRequestId ) ;
1058+ } ) ;
1059+
1060+ test ( 'category-only RR appears under car 1 for getUsersTeamsReimbursementRequests' , async ( ) => {
1061+ const financeHead = await prisma . user . findUniqueOrThrow ( { where : { googleAuthId : 'financeHead' } } ) ;
1062+ const results = await ReimbursementRequestService . getUsersTeamsReimbursementRequests ( financeHead , org , 1 ) ;
1063+ expect ( results . map ( ( r ) => r . reimbursementRequestId ) ) . toContain ( categoryOnlyRR . reimbursementRequestId ) ;
1064+ } ) ;
1065+
1066+ test ( 'category-only RR does not appear under getUserAssignedReimbursementRequests when unassigned' , async ( ) => {
1067+ const financeMember = await prisma . user . findUniqueOrThrow ( { where : { googleAuthId : 'financeMember' } } ) ;
1068+ const results = await ReimbursementRequestService . getUserAssignedReimbursementRequests ( financeMember , org , 0 ) ;
1069+ expect ( results . map ( ( r ) => r . reimbursementRequestId ) ) . not . toContain ( categoryOnlyRR . reimbursementRequestId ) ;
1070+ } ) ;
1071+ } ) ;
9581072} ) ;
0 commit comments