chore: add test for file bytes used setting persistence between renewed subscriptions (#2600)
This commit is contained in:
@@ -679,6 +679,10 @@ export class AppContext {
|
||||
|
||||
options.expiresAt = options.expiresAt || dateInAnHour
|
||||
options.subscriptionPlanName = options.subscriptionPlanName || 'PRO_PLAN'
|
||||
options.cancelPreviousSubscription = options.cancelPreviousSubscription || false
|
||||
|
||||
const nextSubscriptionId = GlobalSubscriptionIdCounter++
|
||||
|
||||
let uploadBytesLimit = -1
|
||||
switch (options.subscriptionPlanName) {
|
||||
case 'PLUS_PLAN':
|
||||
@@ -690,9 +694,27 @@ export class AppContext {
|
||||
}
|
||||
|
||||
try {
|
||||
if (options.cancelPreviousSubscription) {
|
||||
await Events.publishMockedEvent('SUBSCRIPTION_CANCELLED', {
|
||||
userEmail: this.email,
|
||||
subscriptionId: (nextSubscriptionId - 1),
|
||||
subscriptionName: options.subscriptionPlanName,
|
||||
subscriptionCreatedAt: 1,
|
||||
subscriptionUpdatedAt: 1,
|
||||
lastPayedAt: 1,
|
||||
subscriptionEndsAt: (new Date()).getTime() * 1_000,
|
||||
timestamp: (new Date()).getTime() * 1_000,
|
||||
offline: false,
|
||||
replaced: true,
|
||||
userExistingSubscriptionsCount: 1,
|
||||
billingFrequency: 12,
|
||||
payAmount: 59.0,
|
||||
})
|
||||
}
|
||||
|
||||
await Events.publishMockedEvent('SUBSCRIPTION_PURCHASED', {
|
||||
userEmail: this.email,
|
||||
subscriptionId: GlobalSubscriptionIdCounter++,
|
||||
subscriptionId: nextSubscriptionId,
|
||||
subscriptionName: options.subscriptionPlanName,
|
||||
subscriptionExpiresAt: options.expiresAt.getTime() * 1_000,
|
||||
timestamp: Date.now(),
|
||||
@@ -713,7 +735,7 @@ export class AppContext {
|
||||
)
|
||||
|
||||
try {
|
||||
await HomeServer.activatePremiumFeatures(this.email, options.subscriptionPlanName, options.expiresAt, uploadBytesLimit)
|
||||
await HomeServer.activatePremiumFeatures(this.email, nextSubscriptionId, options.subscriptionPlanName, options.expiresAt, uploadBytesLimit, options.cancelPreviousSubscription)
|
||||
|
||||
await this.sleep(1, 'Waiting for premium features to be activated')
|
||||
} catch (error) {
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
import * as Defaults from './Defaults.js'
|
||||
|
||||
export async function activatePremiumFeatures(username, subscriptionPlanName, endsAt, uploadBytesLimit) {
|
||||
export async function activatePremiumFeatures(
|
||||
username,
|
||||
subscriptionId,
|
||||
subscriptionPlanName,
|
||||
endsAt,
|
||||
uploadBytesLimit,
|
||||
cancelPreviousSubscription
|
||||
) {
|
||||
await fetch(`${Defaults.getDefaultHost()}/e2e/activate-premium`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
@@ -9,9 +16,11 @@ export async function activatePremiumFeatures(username, subscriptionPlanName, en
|
||||
},
|
||||
body: JSON.stringify({
|
||||
username,
|
||||
subscriptionId,
|
||||
subscriptionPlanName,
|
||||
endsAt,
|
||||
uploadBytesLimit,
|
||||
cancelPreviousSubscription,
|
||||
}),
|
||||
})
|
||||
}
|
||||
|
||||
@@ -163,9 +163,13 @@ describe('settings service', function () {
|
||||
)
|
||||
expect(usedSettingBefore).to.equal('196')
|
||||
|
||||
await context.activatePaidSubscriptionForUser()
|
||||
await context.activatePaidSubscriptionForUser({
|
||||
cancelPreviousSubscription: true,
|
||||
})
|
||||
|
||||
await context.activatePaidSubscriptionForUser()
|
||||
await context.activatePaidSubscriptionForUser({
|
||||
cancelPreviousSubscription: true,
|
||||
})
|
||||
|
||||
const limitSettingAfter = await application.settings.getSubscriptionSetting(
|
||||
SettingName.create(SettingName.NAMES.FileUploadBytesLimit).getValue(),
|
||||
@@ -176,5 +180,22 @@ describe('settings service', function () {
|
||||
SettingName.create(SettingName.NAMES.FileUploadBytesUsed).getValue(),
|
||||
)
|
||||
expect(usedSettingAfter).to.equal(usedSettingBefore)
|
||||
|
||||
const afterResponse = await fetch('/packages/snjs/mocha/assets/small_file.md')
|
||||
const afterBuffer = new Uint8Array(await afterResponse.arrayBuffer())
|
||||
|
||||
await Files.uploadFile(application.files, afterBuffer, 'my-file', 'md', 1000)
|
||||
|
||||
await Factory.sleep(1)
|
||||
|
||||
const limitSettingAfterSecondUpload = await application.settings.getSubscriptionSetting(
|
||||
SettingName.create(SettingName.NAMES.FileUploadBytesLimit).getValue(),
|
||||
)
|
||||
expect(limitSettingAfterSecondUpload).to.equal(limitSettingBefore)
|
||||
|
||||
const usedSettingAfterSecondUpload = await application.settings.getSubscriptionSetting(
|
||||
SettingName.create(SettingName.NAMES.FileUploadBytesUsed).getValue(),
|
||||
)
|
||||
expect(usedSettingAfterSecondUpload).to.equal('392')
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user