Skip to content

Commit 4c27ed4

Browse files
committed
test: entitlment tests with paidSubscriber
1 parent f63a451 commit 4c27ed4

File tree

5 files changed

+52
-13
lines changed

5 files changed

+52
-13
lines changed

test/spec/login-browser-integ-test.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ define(function (require, exports, module) {
184184

185185
entitlementsResponse.plan = {
186186
isSubscriber: true,
187+
paidSubscriber: true,
187188
name: "Phoenix Pro",
188189
fullName: "Phoenix Pro",
189190
validTill: validTill
@@ -197,6 +198,7 @@ define(function (require, exports, module) {
197198
} else {
198199
entitlementsResponse.plan = {
199200
isSubscriber: false,
201+
paidSubscriber: false,
200202
name: "Free Plan",
201203
fullName: "Free Plan"
202204
};

test/spec/login-desktop-integ-test.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@ define(function (require, exports, module) {
210210

211211
entitlementsResponse.plan = {
212212
isSubscriber: true,
213+
paidSubscriber: !isDeviceIDRequest, // Educational device licenses are unpaid
213214
name: "Phoenix Pro",
214215
fullName: isDeviceIDRequest ? "Phoenix Pro Test Edu" : "Phoenix Pro",
215216
validTill: validTill
@@ -223,6 +224,7 @@ define(function (require, exports, module) {
223224
} else {
224225
entitlementsResponse.plan = {
225226
isSubscriber: false,
227+
paidSubscriber: false,
226228
name: "Free Plan",
227229
fullName: "Free Plan"
228230
};

test/spec/login-shared.js

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,9 @@ define(function (require, exports, module) {
216216
if (expectedPlan.isSubscriber !== undefined) {
217217
expect(finalPlanDetails.isSubscriber).toBe(expectedPlan.isSubscriber);
218218
}
219+
if (expectedPlan.paidSubscriber !== undefined) {
220+
expect(finalPlanDetails.paidSubscriber).toBe(expectedPlan.paidSubscriber);
221+
}
219222
if (expectedPlan.name) {
220223
expect(finalPlanDetails.name).toBe(expectedPlan.name);
221224
}
@@ -399,7 +402,7 @@ define(function (require, exports, module) {
399402

400403
// Verify entitlements API consistency for logged in pro user
401404
await verifyIsInProTrialEntitlement(false, "pro user should not be in trial");
402-
await verifyPlanEntitlements({ isSubscriber: true }, "pro user should have paid subscriber plan");
405+
await verifyPlanEntitlements({ isSubscriber: true, paidSubscriber: true }, "pro user should have paid subscriber plan");
403406

404407
// Check profile popup shows pro status (not trial)
405408
const $profileButton = testWindow.$("#user-profile-button");
@@ -448,7 +451,7 @@ define(function (require, exports, module) {
448451

449452
// Verify entitlements API consistency for logged in trial user
450453
await verifyIsInProTrialEntitlement(true, "user should still be in trial after login");
451-
await verifyPlanEntitlements({ isSubscriber: true }, "trial user should have isSubscriber true");
454+
await verifyPlanEntitlements({ isSubscriber: true, paidSubscriber: false }, "trial user should have isSubscriber true but paidSubscriber false");
452455

453456
// Check profile popup shows trial status
454457
const $profileButton = testWindow.$("#user-profile-button");
@@ -530,7 +533,7 @@ define(function (require, exports, module) {
530533
await verifyProBranding(false, "no pro branding to start with");
531534

532535
// Verify entitlements API consistency for logged out user with expired trial
533-
await verifyPlanEntitlements({ isSubscriber: false, name: testWindow.Strings.USER_FREE_PLAN_NAME_DO_NOT_TRANSLATE },
536+
await verifyPlanEntitlements({ isSubscriber: false, paidSubscriber: false, name: testWindow.Strings.USER_FREE_PLAN_NAME_DO_NOT_TRANSLATE },
534537
"free plan for logged out user with expired trial");
535538
await verifyIsInProTrialEntitlement(false, "no trial for user with expired trial");
536539
await verifyTrialRemainingDaysEntitlement(0, "no trial days remaining for expired trial");
@@ -543,7 +546,7 @@ define(function (require, exports, module) {
543546
await verifyProBranding(false, "after trial free user login");
544547

545548
// Verify entitlements API consistency for logged in free user
546-
await verifyPlanEntitlements({ isSubscriber: false, name: testWindow.Strings.USER_FREE_PLAN_NAME_DO_NOT_TRANSLATE },
549+
await verifyPlanEntitlements({ isSubscriber: false, paidSubscriber: false, name: testWindow.Strings.USER_FREE_PLAN_NAME_DO_NOT_TRANSLATE },
547550
"free plan for logged in user with expired trial");
548551
await verifyIsInProTrialEntitlement(false, "still no trial after login");
549552
await verifyLiveEditEntitlement({ activated: false }, "live edit still deactivated after login");
@@ -589,7 +592,7 @@ define(function (require, exports, module) {
589592
await verifyProBranding(false, "no pro branding initially due to expired entitlements");
590593

591594
// Verify entitlements API consistency for logged out user with no trial
592-
await verifyPlanEntitlements({ isSubscriber: false, name: testWindow.Strings.USER_FREE_PLAN_NAME_DO_NOT_TRANSLATE },
595+
await verifyPlanEntitlements({ isSubscriber: false, paidSubscriber: false, name: testWindow.Strings.USER_FREE_PLAN_NAME_DO_NOT_TRANSLATE },
593596
"free plan for logged out user with no trial");
594597
await verifyIsInProTrialEntitlement(false, "no trial for logged out user");
595598
await verifyTrialRemainingDaysEntitlement(0, "no trial days remaining");
@@ -603,7 +606,7 @@ define(function (require, exports, module) {
603606
await verifyProBranding(false, "no pro branding after login with expired entitlements");
604607

605608
// Verify entitlements API consistency for logged in user with expired entitlements
606-
await verifyPlanEntitlements({ isSubscriber: false },
609+
await verifyPlanEntitlements({ isSubscriber: false, paidSubscriber: false },
607610
"expired entitlements filtered to free plan after login");
608611
await verifyIsInProTrialEntitlement(false, "no trial for user with expired entitlements");
609612
await verifyTrialRemainingDaysEntitlement(0, "no trial days for expired entitlements user");
@@ -654,7 +657,7 @@ define(function (require, exports, module) {
654657
await verifyProBranding(true, "pro branding initially due to active trial");
655658

656659
// Verify entitlements API consistency for logged out user with active trial
657-
await verifyPlanEntitlements({ isSubscriber: true, name: testWindow.brackets.config.main_pro_plan },
660+
await verifyPlanEntitlements({ isSubscriber: true, paidSubscriber: false, name: testWindow.brackets.config.main_pro_plan },
658661
"trial plan for logged out user overrides expired entitlements");
659662
await verifyIsInProTrialEntitlement(true, "user should be in trial initially");
660663
await verifyTrialRemainingDaysEntitlement(10, "should have 10 trial days remaining");
@@ -668,8 +671,8 @@ define(function (require, exports, module) {
668671
await verifyProBranding(true, "pro branding after login - trial overrides expired entitlements");
669672

670673
// Verify entitlements API consistency for logged in user (trial overrides expired server entitlements)
671-
await verifyPlanEntitlements({ isSubscriber: true },
672-
"trial overrides expired server entitlements to show paid subscriber");
674+
await verifyPlanEntitlements({ isSubscriber: true, paidSubscriber: false },
675+
"trial overrides expired server entitlements - user is subscriber but not paid");
673676
await verifyIsInProTrialEntitlement(true, "user should still be in trial after login");
674677
await verifyTrialRemainingDaysEntitlement(10, "trial days should remain 10 after login");
675678
await verifyLiveEditEntitlement({ activated: true }, "live edit should be activated via trial override");
@@ -786,9 +789,11 @@ define(function (require, exports, module) {
786789
await verifyProBranding(true, "device license shows Phoenix Pro branding in navbar");
787790

788791
// Verify entitlements API shows Pro access
792+
// Note: Device licenses can be paid (paidSubscriber: true) or educational (paidSubscriber: false)
793+
// This test uses educational license (deviceID request) so paidSubscriber should be false
789794
await verifyPlanEntitlements(
790-
{ isSubscriber: true, name: "Phoenix Pro" },
791-
"device license provides Pro plan"
795+
{ isSubscriber: true, paidSubscriber: false, name: "Phoenix Pro" },
796+
"device license provides Pro plan (educational license is unpaid)"
792797
);
793798
await verifyIsInProTrialEntitlement(false, "device license is not a trial");
794799
await verifyLiveEditEntitlement({ activated: true }, "live edit activated via device license");

test/spec/login-utils-test.js

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -327,18 +327,46 @@ define(function (require, exports, module) {
327327
});
328328

329329
it("should return true when isSubscriber status changes", function () {
330-
const current = {
330+
const current = {
331331
plan: { name: "Phoenix Pro", isSubscriber: true },
332332
entitlements: {}
333333
};
334-
const last = {
334+
const last = {
335335
plan: { name: "Phoenix Pro", isSubscriber: false },
336336
entitlements: {}
337337
};
338338
const result = LoginUtils.haveEntitlementsChanged(current, last);
339339
expect(result).toBe(true);
340340
});
341341

342+
it("should return true when paidSubscriber status changes", function () {
343+
const current = {
344+
plan: { name: "Phoenix Pro", isSubscriber: true, paidSubscriber: true },
345+
entitlements: {}
346+
};
347+
const last = {
348+
plan: { name: "Phoenix Pro", isSubscriber: true, paidSubscriber: false },
349+
entitlements: {}
350+
};
351+
const result = LoginUtils.haveEntitlementsChanged(current, last);
352+
expect(result).toBe(true);
353+
});
354+
355+
it("should return true when user goes from trial to paid (paidSubscriber changes)", function () {
356+
// Trial user: isSubscriber true, paidSubscriber false
357+
const trialUser = {
358+
plan: { name: "Phoenix Pro", isSubscriber: true, paidSubscriber: false },
359+
entitlements: { liveEdit: { activated: true } }
360+
};
361+
// Paid user: isSubscriber true, paidSubscriber true
362+
const paidUser = {
363+
plan: { name: "Phoenix Pro", isSubscriber: true, paidSubscriber: true },
364+
entitlements: { liveEdit: { activated: true } }
365+
};
366+
const result = LoginUtils.haveEntitlementsChanged(paidUser, trialUser);
367+
expect(result).toBe(true);
368+
});
369+
342370
it("should return true when plan name changes", function () {
343371
const current = {
344372
plan: { name: "Phoenix Pro", isSubscriber: true },

test/spec/promotions-integ-test.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -818,6 +818,7 @@ define(function (require, exports, module) {
818818
LoginServiceExports._validateAndFilterEntitlements(expiredPlanEntitlements);
819819

820820
expect(expiredPlanEntitlements.plan.isSubscriber).toBe(false);
821+
expect(expiredPlanEntitlements.plan.paidSubscriber).toBe(false);
821822
expect(expiredPlanEntitlements.plan.name).toBe(testWindow.Strings.USER_FREE_PLAN_NAME_DO_NOT_TRANSLATE);
822823
expect(expiredPlanEntitlements.plan.validTill).toBeGreaterThan(mockNow);
823824

@@ -848,6 +849,7 @@ define(function (require, exports, module) {
848849
LoginServiceExports._validateAndFilterEntitlements(noValidTillEntitlements);
849850

850851
expect(noValidTillEntitlements.plan.isSubscriber).toBe(false);
852+
expect(noValidTillEntitlements.plan.paidSubscriber).toBe(false);
851853
expect(noValidTillEntitlements.plan.name).toBe(testWindow.Strings.USER_FREE_PLAN_NAME_DO_NOT_TRANSLATE);
852854
});
853855

0 commit comments

Comments
 (0)