@@ -170,22 +170,60 @@ define(function (require, exports, module) {
170170 }
171171
172172 // Entitlements test utility functions
173+ // Note: EntitlementsExports.getPlanDetails() is eventually consistent due to
174+ // 1 second debounce delay for entitlements changed event
173175 async function verifyPlanEntitlements ( expectedPlan , _testDescription ) {
174- const planDetails = await EntitlementsExports . getPlanDetails ( ) ;
176+ // Wait for plan details to match expected values (handles debounce delay)
177+ let planDetails ;
178+ await awaitsFor (
179+ async function ( ) {
180+ planDetails = await EntitlementsExports . getPlanDetails ( ) ;
181+
182+ if ( ! expectedPlan ) {
183+ return planDetails !== undefined ; // Should always return something (fallback)
184+ }
185+
186+ if ( ! planDetails ) {
187+ return false ;
188+ }
189+
190+ // Check all expected properties match
191+ if ( expectedPlan . paidSubscriber !== undefined &&
192+ planDetails . paidSubscriber !== expectedPlan . paidSubscriber ) {
193+ return false ;
194+ }
195+ if ( expectedPlan . name && planDetails . name !== expectedPlan . name ) {
196+ return false ;
197+ }
198+ if ( expectedPlan . validTill !== undefined && ! planDetails . validTill ) {
199+ return false ;
200+ }
201+
202+ return true ;
203+ } ,
204+ ( ) => {
205+ return `Plan entitlements ${ JSON . stringify ( planDetails ) } to match expected ${
206+ JSON . stringify ( expectedPlan ) } : ${ _testDescription } `;
207+ } ,
208+ 4000 ,
209+ 30
210+ ) ;
175211
212+ // Final assertions after condition is met
213+ const finalPlanDetails = await EntitlementsExports . getPlanDetails ( ) ;
176214 if ( expectedPlan ) {
177- expect ( planDetails ) . toBeDefined ( ) ;
215+ expect ( finalPlanDetails ) . toBeDefined ( ) ;
178216 if ( expectedPlan . paidSubscriber !== undefined ) {
179- expect ( planDetails . paidSubscriber ) . toBe ( expectedPlan . paidSubscriber ) ;
217+ expect ( finalPlanDetails . paidSubscriber ) . toBe ( expectedPlan . paidSubscriber ) ;
180218 }
181219 if ( expectedPlan . name ) {
182- expect ( planDetails . name ) . toBe ( expectedPlan . name ) ;
220+ expect ( finalPlanDetails . name ) . toBe ( expectedPlan . name ) ;
183221 }
184222 if ( expectedPlan . validTill !== undefined ) {
185- expect ( planDetails . validTill ) . toBeDefined ( ) ;
223+ expect ( finalPlanDetails . validTill ) . toBeDefined ( ) ;
186224 }
187225 } else {
188- expect ( planDetails ) . toBeDefined ( ) ; // Should always return something (fallback)
226+ expect ( finalPlanDetails ) . toBeDefined ( ) ; // Should always return something (fallback)
189227 }
190228 }
191229
0 commit comments