mirror of
https://github.com/signalapp/Signal-Desktop.git
synced 2026-04-18 23:49:20 +01:00
188 lines
4.9 KiB
TypeScript
188 lines
4.9 KiB
TypeScript
// Copyright 2025 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
import { assert } from 'chai';
|
|
import { _isFeatureEnabledInner } from '../../util/isFeatureEnabled.dom.js';
|
|
|
|
const isTestEnvironment = () => false;
|
|
|
|
describe('isFeatureEnabled', () => {
|
|
it('returns false if nothing triggers', async () => {
|
|
assert.isFalse(
|
|
_isFeatureEnabledInner({
|
|
betaValue: 'v2.0.0-beta.1',
|
|
currentVersion: 'v1.0.0',
|
|
isInternalUser: false,
|
|
isTestEnvironment,
|
|
prodValue: 'v1.1.0',
|
|
})
|
|
);
|
|
});
|
|
it('returns false if current version is invalid semver', async () => {
|
|
assert.isFalse(
|
|
_isFeatureEnabledInner({
|
|
betaValue: 'v2.0.0-beta.1',
|
|
currentVersion: 'broken',
|
|
isInternalUser: false,
|
|
isTestEnvironment,
|
|
prodValue: 'v1.1.0',
|
|
})
|
|
);
|
|
});
|
|
it('returns true if internal', async () => {
|
|
assert.isTrue(
|
|
_isFeatureEnabledInner({
|
|
betaValue: 'v2.0.0-beta.1',
|
|
currentVersion: 'v1.1.0',
|
|
isInternalUser: true,
|
|
isTestEnvironment,
|
|
prodValue: 'v1.1.0',
|
|
})
|
|
);
|
|
});
|
|
it('returns true if isAlpha', async () => {
|
|
assert.isTrue(
|
|
_isFeatureEnabledInner({
|
|
betaValue: 'v2.0.0-beta.1',
|
|
currentVersion: 'v1.0.0-alpha.1',
|
|
isInternalUser: false,
|
|
isTestEnvironment,
|
|
prodValue: 'v1.1.0',
|
|
})
|
|
);
|
|
});
|
|
it('returns true if isStaging', async () => {
|
|
assert.isTrue(
|
|
_isFeatureEnabledInner({
|
|
betaValue: 'v2.0.0-beta.1',
|
|
currentVersion: 'v1.0.0-staging.1',
|
|
isInternalUser: false,
|
|
isTestEnvironment,
|
|
prodValue: 'v1.1.0',
|
|
})
|
|
);
|
|
});
|
|
it('returns true if isTestEnvironment', async () => {
|
|
assert.isTrue(
|
|
_isFeatureEnabledInner({
|
|
betaValue: 'v2.0.0-beta.1',
|
|
currentVersion: 'v1.0.0',
|
|
isInternalUser: false,
|
|
isTestEnvironment: () => true,
|
|
prodValue: 'v1.1.0',
|
|
})
|
|
);
|
|
});
|
|
it('returns true if beta and beta version is greater', async () => {
|
|
assert.isTrue(
|
|
_isFeatureEnabledInner({
|
|
betaValue: 'v2.0.0-beta.1',
|
|
currentVersion: 'v2.0.0-beta.2',
|
|
isInternalUser: false,
|
|
isTestEnvironment,
|
|
prodValue: 'v1.1.0',
|
|
})
|
|
);
|
|
});
|
|
it('returns true if beta and beta version is equal', async () => {
|
|
assert.isTrue(
|
|
_isFeatureEnabledInner({
|
|
betaValue: 'v2.0.0-beta.1',
|
|
currentVersion: 'v2.0.0-beta.1',
|
|
isInternalUser: false,
|
|
isTestEnvironment,
|
|
prodValue: 'v1.1.0',
|
|
})
|
|
);
|
|
});
|
|
it('returns false if beta and beta version is lesser', async () => {
|
|
assert.isFalse(
|
|
_isFeatureEnabledInner({
|
|
betaValue: 'v2.0.0-beta.1',
|
|
currentVersion: 'v1.0.0-beta.1',
|
|
isInternalUser: false,
|
|
isTestEnvironment,
|
|
prodValue: 'v1.1.0',
|
|
})
|
|
);
|
|
});
|
|
it('returns false if beta and no beta value', async () => {
|
|
assert.isFalse(
|
|
_isFeatureEnabledInner({
|
|
betaValue: undefined,
|
|
currentVersion: 'v1.0.0-beta.1',
|
|
isInternalUser: false,
|
|
isTestEnvironment,
|
|
prodValue: 'v1.1.0',
|
|
})
|
|
);
|
|
});
|
|
it('returns false if beta and beta value is not valid semver', async () => {
|
|
assert.isFalse(
|
|
_isFeatureEnabledInner({
|
|
betaValue: 'broken',
|
|
currentVersion: 'v1.0.0-beta.1',
|
|
isInternalUser: false,
|
|
isTestEnvironment,
|
|
prodValue: 'v1.1.0',
|
|
})
|
|
);
|
|
});
|
|
|
|
it('returns true if prod and prod version is greater', async () => {
|
|
assert.isTrue(
|
|
_isFeatureEnabledInner({
|
|
betaValue: 'v2.0.0-beta.1',
|
|
currentVersion: 'v2.0.0',
|
|
isInternalUser: false,
|
|
isTestEnvironment,
|
|
prodValue: 'v1.1.0',
|
|
})
|
|
);
|
|
});
|
|
it('returns true if prod and prod version is equal', async () => {
|
|
assert.isTrue(
|
|
_isFeatureEnabledInner({
|
|
betaValue: 'v2.0.0-beta.1',
|
|
currentVersion: 'v1.1.0',
|
|
isInternalUser: false,
|
|
isTestEnvironment,
|
|
prodValue: 'v1.1.0',
|
|
})
|
|
);
|
|
});
|
|
it('returns false if prod and prod version is lesser', async () => {
|
|
assert.isFalse(
|
|
_isFeatureEnabledInner({
|
|
betaValue: 'v2.0.0-beta.1',
|
|
currentVersion: 'v1.0.0',
|
|
isInternalUser: false,
|
|
isTestEnvironment,
|
|
prodValue: 'v1.1.0',
|
|
})
|
|
);
|
|
});
|
|
it('returns false if prod and no prod value', async () => {
|
|
assert.isFalse(
|
|
_isFeatureEnabledInner({
|
|
betaValue: 'v2.0.0-beta.1',
|
|
currentVersion: 'v1.0.0-beta.1',
|
|
isInternalUser: false,
|
|
isTestEnvironment,
|
|
prodValue: undefined,
|
|
})
|
|
);
|
|
});
|
|
it('returns false if prod and prod value is not valid semver', async () => {
|
|
assert.isFalse(
|
|
_isFeatureEnabledInner({
|
|
betaValue: 'v2.0.0-beta.1',
|
|
currentVersion: 'v1.0.0-beta.1',
|
|
isInternalUser: false,
|
|
isTestEnvironment,
|
|
prodValue: 'broken',
|
|
})
|
|
);
|
|
});
|
|
});
|