mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-05-27 02:51:57 +02:00
[web] make user feature changes in tests more reliable (#23557)
* [web] tests: rename User.upgradeFeatures to User.upgradeSomeFeatures The upgrades features do not match with any plan. * [web] make user feature changes in tests more reliable * [web] fix schema for featuresOverride in tests * [web] log in after upgrading features GitOrigin-RevId: ac5b19c798712926c118b221c553540b413802cd
This commit is contained in:
@@ -52,7 +52,7 @@ describe('ProjectFeatures', function () {
|
||||
|
||||
describe('with an upgraded account', function () {
|
||||
beforeEach(function (done) {
|
||||
return this.owner.upgradeFeatures(done)
|
||||
return this.owner.upgradeSomeFeatures(done)
|
||||
})
|
||||
after(function (done) {
|
||||
return this.owner.defaultFeatures(done)
|
||||
|
||||
@@ -327,8 +327,9 @@ describe('ProjectInviteTests', function () {
|
||||
|
||||
Async.series(
|
||||
[
|
||||
cb => this.sendingUser.ensureUserExists(cb),
|
||||
cb => this.sendingUser.upgradeFeatures({ collaborators: 10 }, cb),
|
||||
cb => this.sendingUser.login(cb),
|
||||
cb => this.sendingUser.setFeatures({ collaborators: 10 }, cb),
|
||||
cb =>
|
||||
this.sendingUser.mongoUpdate(
|
||||
{
|
||||
@@ -336,14 +337,6 @@ describe('ProjectInviteTests', function () {
|
||||
},
|
||||
cb
|
||||
),
|
||||
cb =>
|
||||
this.sendingUser.setFeaturesOverride(
|
||||
{
|
||||
note: 'ProjectInviteTests acceptance tests',
|
||||
features: { collaborators: 10 },
|
||||
},
|
||||
cb
|
||||
),
|
||||
],
|
||||
done
|
||||
)
|
||||
|
||||
@@ -437,6 +437,23 @@ class User {
|
||||
)
|
||||
}
|
||||
|
||||
// Update and persist feature upgrade. Downgrades will be flaky!
|
||||
upgradeFeatures(features, callback) {
|
||||
this.setFeatures(features, err => {
|
||||
if (err) return callback(err)
|
||||
// Persist the feature update, otherwise the next feature refresh will reset them.
|
||||
this.setFeaturesOverride(
|
||||
{
|
||||
createdAt: new Date(),
|
||||
note: 'Some note',
|
||||
features,
|
||||
},
|
||||
callback
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
// Low-level. Temporary feature change. A feature refresh might reset them, e.g. "some time" after logging in.
|
||||
setFeatures(features, callback) {
|
||||
const update = {}
|
||||
for (const key in features) {
|
||||
@@ -448,7 +465,11 @@ class User {
|
||||
.catch(callback)
|
||||
}
|
||||
|
||||
// Low-level. Permanent feature change. Feature overrides are not applied right away. A feature refresh might populate them "some time" after login/changing subscriptions.
|
||||
setFeaturesOverride(featuresOverride, callback) {
|
||||
if (!featuresOverride?.features) {
|
||||
throw new Error('bad featuresOverride schema')
|
||||
}
|
||||
const update = { $push: { featuresOverrides: featuresOverride } }
|
||||
UserModel.updateOne({ _id: this.id }, update)
|
||||
.then((...args) => callback(null, ...args))
|
||||
@@ -542,7 +563,7 @@ class User {
|
||||
this.mongoUpdate(update, callback)
|
||||
}
|
||||
|
||||
upgradeFeatures(callback) {
|
||||
upgradeSomeFeatures(callback) {
|
||||
const features = {
|
||||
collaborators: -1, // Infinite
|
||||
versioning: true,
|
||||
|
||||
Reference in New Issue
Block a user