@@ -10,11 +10,16 @@ import mongoose from "mongoose";
1010import User from "@models/User" ;
1111import { Constants } from "@courselit/common-models" ;
1212import Course from "@models/Course" ;
13+ import PaymentPlan from "@models/PaymentPlan" ;
1314
1415jest . mock ( "@models/Domain" ) ;
1516jest . mock ( "@models/User" ) ;
1617jest . mock ( "@models/Course" ) ;
18+ jest . mock ( "@models/PaymentPlan" ) ;
1719jest . mock ( "@/auth" ) ;
20+ jest . mock ( "../../helpers" ) ;
21+ jest . mock ( "@/graphql/users/logic" ) ;
22+ jest . mock ( "@/payments-new" ) ;
1823
1924describe ( "Payment Initiate Route" , ( ) => {
2025 let mockRequest : NextRequest ;
@@ -50,6 +55,35 @@ describe("Payment Initiate Route", () => {
5055 } ,
5156 } ) ;
5257
58+ // Mock PaymentPlan.exists to return true by default
59+ ( PaymentPlan . exists as jest . Mock ) . mockResolvedValue ( true ) ;
60+
61+ // Mock PaymentPlan.findOne
62+ ( PaymentPlan . findOne as jest . Mock ) . mockResolvedValue ( {
63+ planId : "planA" ,
64+ type : Constants . PaymentPlanType . FREE ,
65+ entityId : "course-123" ,
66+ entityType : Constants . MembershipEntityType . COURSE ,
67+ archived : false ,
68+ internal : false ,
69+ } ) ;
70+
71+ // Mock getMembership
72+ const { getMembership } = require ( "@/graphql/users/logic" ) ;
73+ ( getMembership as jest . Mock ) . mockResolvedValue ( {
74+ membershipId : "membership-123" ,
75+ userId : "tester" ,
76+ entityId : "course-123" ,
77+ entityType : Constants . MembershipEntityType . COURSE ,
78+ status : Constants . MembershipStatus . PENDING ,
79+ planId : "planA" ,
80+ save : jest . fn ( ) . mockResolvedValue ( true ) ,
81+ } ) ;
82+
83+ // Mock activateMembership
84+ const { activateMembership } = require ( "../../helpers" ) ;
85+ ( activateMembership as jest . Mock ) . mockResolvedValue ( undefined ) ;
86+
5387 // (getUser as jest.Mock).mockResolvedValue({
5488 // userId: 'tester',
5589 // name: 'Tester',
@@ -112,6 +146,10 @@ describe("Payment Initiate Route", () => {
112146 title : "Test Course" ,
113147 paymentPlans : [ "planC" , "planB" ] ,
114148 } ) ;
149+
150+ // Override PaymentPlan.exists to return false (plan doesn't belong to entity)
151+ ( PaymentPlan . exists as jest . Mock ) . mockResolvedValue ( false ) ;
152+
115153 const response = await POST ( mockRequest ) ;
116154 expect ( response . status ) . toBe ( 404 ) ;
117155 } ) ;
0 commit comments