@@ -10,11 +10,16 @@ import mongoose from "mongoose";
10
10
import User from "@models/User" ;
11
11
import { Constants } from "@courselit/common-models" ;
12
12
import Course from "@models/Course" ;
13
+ import PaymentPlan from "@models/PaymentPlan" ;
13
14
14
15
jest . mock ( "@models/Domain" ) ;
15
16
jest . mock ( "@models/User" ) ;
16
17
jest . mock ( "@models/Course" ) ;
18
+ jest . mock ( "@models/PaymentPlan" ) ;
17
19
jest . mock ( "@/auth" ) ;
20
+ jest . mock ( "../../helpers" ) ;
21
+ jest . mock ( "@/graphql/users/logic" ) ;
22
+ jest . mock ( "@/payments-new" ) ;
18
23
19
24
describe ( "Payment Initiate Route" , ( ) => {
20
25
let mockRequest : NextRequest ;
@@ -50,6 +55,35 @@ describe("Payment Initiate Route", () => {
50
55
} ,
51
56
} ) ;
52
57
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
+
53
87
// (getUser as jest.Mock).mockResolvedValue({
54
88
// userId: 'tester',
55
89
// name: 'Tester',
@@ -112,6 +146,10 @@ describe("Payment Initiate Route", () => {
112
146
title : "Test Course" ,
113
147
paymentPlans : [ "planC" , "planB" ] ,
114
148
} ) ;
149
+
150
+ // Override PaymentPlan.exists to return false (plan doesn't belong to entity)
151
+ ( PaymentPlan . exists as jest . Mock ) . mockResolvedValue ( false ) ;
152
+
115
153
const response = await POST ( mockRequest ) ;
116
154
expect ( response . status ) . toBe ( 404 ) ;
117
155
} ) ;
0 commit comments