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.expiresAt = options.expiresAt || dateInAnHour
|
||||||
options.subscriptionPlanName = options.subscriptionPlanName || 'PRO_PLAN'
|
options.subscriptionPlanName = options.subscriptionPlanName || 'PRO_PLAN'
|
||||||
|
options.cancelPreviousSubscription = options.cancelPreviousSubscription || false
|
||||||
|
|
||||||
|
const nextSubscriptionId = GlobalSubscriptionIdCounter++
|
||||||
|
|
||||||
let uploadBytesLimit = -1
|
let uploadBytesLimit = -1
|
||||||
switch (options.subscriptionPlanName) {
|
switch (options.subscriptionPlanName) {
|
||||||
case 'PLUS_PLAN':
|
case 'PLUS_PLAN':
|
||||||
@@ -690,9 +694,27 @@ export class AppContext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
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', {
|
await Events.publishMockedEvent('SUBSCRIPTION_PURCHASED', {
|
||||||
userEmail: this.email,
|
userEmail: this.email,
|
||||||
subscriptionId: GlobalSubscriptionIdCounter++,
|
subscriptionId: nextSubscriptionId,
|
||||||
subscriptionName: options.subscriptionPlanName,
|
subscriptionName: options.subscriptionPlanName,
|
||||||
subscriptionExpiresAt: options.expiresAt.getTime() * 1_000,
|
subscriptionExpiresAt: options.expiresAt.getTime() * 1_000,
|
||||||
timestamp: Date.now(),
|
timestamp: Date.now(),
|
||||||
@@ -713,7 +735,7 @@ export class AppContext {
|
|||||||
)
|
)
|
||||||
|
|
||||||
try {
|
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')
|
await this.sleep(1, 'Waiting for premium features to be activated')
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
import * as Defaults from './Defaults.js'
|
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`, {
|
await fetch(`${Defaults.getDefaultHost()}/e2e/activate-premium`, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
@@ -9,9 +16,11 @@ export async function activatePremiumFeatures(username, subscriptionPlanName, en
|
|||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
username,
|
username,
|
||||||
|
subscriptionId,
|
||||||
subscriptionPlanName,
|
subscriptionPlanName,
|
||||||
endsAt,
|
endsAt,
|
||||||
uploadBytesLimit,
|
uploadBytesLimit,
|
||||||
|
cancelPreviousSubscription,
|
||||||
}),
|
}),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -163,9 +163,13 @@ describe('settings service', function () {
|
|||||||
)
|
)
|
||||||
expect(usedSettingBefore).to.equal('196')
|
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(
|
const limitSettingAfter = await application.settings.getSubscriptionSetting(
|
||||||
SettingName.create(SettingName.NAMES.FileUploadBytesLimit).getValue(),
|
SettingName.create(SettingName.NAMES.FileUploadBytesLimit).getValue(),
|
||||||
@@ -176,5 +180,22 @@ describe('settings service', function () {
|
|||||||
SettingName.create(SettingName.NAMES.FileUploadBytesUsed).getValue(),
|
SettingName.create(SettingName.NAMES.FileUploadBytesUsed).getValue(),
|
||||||
)
|
)
|
||||||
expect(usedSettingAfter).to.equal(usedSettingBefore)
|
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