Skip to content

Commit c9bcf5a

Browse files
committed
fix: login integ tests fails as entitlments changed debounce race
1 parent a3ff4d1 commit c9bcf5a

File tree

1 file changed

+44
-6
lines changed

1 file changed

+44
-6
lines changed

test/spec/login-shared.js

Lines changed: 44 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)