chore: add test for file bytes used setting persistence between renewed subscriptions (#2600)

This commit is contained in:
Karol Sójko
2023-10-23 12:17:40 +02:00
committed by GitHub
parent ce013ee316
commit c72a06e3e8
3 changed files with 57 additions and 5 deletions

View File

@@ -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) {

View File

@@ -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,
}),
})
}

View File

@@ -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')
})
})