0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-03 23:00:14 -05:00
ghost/test/unit/services/labs.test.js
Kevin Ansfield 0294918eb9 Fixed labs service unit tests
refs d735e3a4f3
refs c7972c20a5

- the unit tests are currently tied to the labs service data rather than testing independent behaviour meaning that the test needs to be updated when the particular alpha flag they are tied to gets removed
2021-09-14 10:19:26 +01:00

99 lines
3 KiB
JavaScript

const should = require('should');
const sinon = require('sinon');
const configUtils = require('../../utils/configUtils');
const labs = require('../../../core/shared/labs');
const settingsCache = require('../../../core/shared/settings-cache');
describe('Labs Service', function () {
afterEach(function () {
sinon.restore();
configUtils.restore();
});
it('can getAll, even if empty with enabled members', function () {
labs.getAll().should.eql({
members: true
});
});
it('returns an alpha flag when dev experiments in toggled', function () {
configUtils.set('enableDeveloperExperiments', true);
sinon.stub(process.env, 'NODE_ENV').value('production');
sinon.stub(settingsCache, 'get');
settingsCache.get.withArgs('labs').returns({
emailOnlyPosts: true
});
labs.getAll().should.eql({
emailOnlyPosts: true,
members: true
});
labs.isSet('members').should.be.true;
labs.isSet('emailOnlyPosts').should.be.true;
});
it('returns a falsy alpha flag when dev experiments in NOT toggled', function () {
configUtils.set('enableDeveloperExperiments', false);
sinon.stub(process.env, 'NODE_ENV').value('production');
sinon.stub(settingsCache, 'get');
settingsCache.get.withArgs('labs').returns({
emailOnlyPosts: true
});
labs.getAll().should.eql({
members: true
});
labs.isSet('members').should.be.true;
labs.isSet('emailOnlyPosts').should.be.false;
});
it('members flag is true when members_signup_access setting is "all"', function () {
sinon.stub(settingsCache, 'get');
settingsCache.get.withArgs('members_signup_access').returns('all');
labs.getAll().should.eql({
members: true
});
labs.isSet('members').should.be.true;
});
it('returns other allowlisted flags along with members', function () {
sinon.stub(settingsCache, 'get');
settingsCache.get.withArgs('members_signup_access').returns('all');
settingsCache.get.withArgs('labs').returns({
activitypub: false
});
labs.getAll().should.eql({
members: true,
activitypub: false
});
labs.isSet('members').should.be.true;
labs.isSet('activitypub').should.be.false;
});
it('members flag is false when members_signup_access setting is "none"', function () {
sinon.stub(settingsCache, 'get');
settingsCache.get.withArgs('members_signup_access').returns('none');
labs.getAll().should.eql({
members: false
});
labs.isSet('members').should.be.false;
});
it('isSet returns false for undefined', function () {
labs.isSet('bar').should.be.false;
});
it('isSet always returns false for deprecated', function () {
labs.isSet('subscribers').should.be.false;
labs.isSet('publicAPI').should.be.false;
});
});