From fefa4ec3912a4efce7b2e7ef20375861c5be725c Mon Sep 17 00:00:00 2001 From: Jessica Lawshe Date: Wed, 9 Jun 2021 08:44:05 -0500 Subject: [PATCH] Merge pull request #4136 from overleaf/jel-add-gallery-bundle Add JS bundle for gallery and begin Algolia/React gallery search migration GitOrigin-RevId: ddce48df9108b4880b39e522c30617fd1a7c0a87 --- .../app/src/Features/Helpers/FeatureFlag.js | 9 ++++ .../unit/src/HelperFiles/FeatureFlagTests.js | 52 +++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 services/web/app/src/Features/Helpers/FeatureFlag.js create mode 100644 services/web/test/unit/src/HelperFiles/FeatureFlagTests.js diff --git a/services/web/app/src/Features/Helpers/FeatureFlag.js b/services/web/app/src/Features/Helpers/FeatureFlag.js new file mode 100644 index 0000000000..44f0b812aa --- /dev/null +++ b/services/web/app/src/Features/Helpers/FeatureFlag.js @@ -0,0 +1,9 @@ +function shouldDisplayFeature(req, name, variantFlag) { + if (req.query && req.query[name]) { + return req.query[name] === 'true' + } else { + return variantFlag === true + } +} + +module.exports = { shouldDisplayFeature } diff --git a/services/web/test/unit/src/HelperFiles/FeatureFlagTests.js b/services/web/test/unit/src/HelperFiles/FeatureFlagTests.js new file mode 100644 index 0000000000..bb31a5afab --- /dev/null +++ b/services/web/test/unit/src/HelperFiles/FeatureFlagTests.js @@ -0,0 +1,52 @@ +const { expect } = require('chai') +const SandboxedModule = require('sandboxed-module') +const modulePath = require('path').join( + __dirname, + '../../../../app/src/Features/Helpers/FeatureFlag' +) + +describe('FeatureFlag', function () { + beforeEach(function () { + this.FeatureFlag = SandboxedModule.require(modulePath, {}) + }) + + describe('shouldDisplayFeature', function () { + describe('no req.query', function () { + const req = {} + it('should return false when variantFlag=false', function () { + expect(this.FeatureFlag.shouldDisplayFeature(req, '', false)).to.be + .false + }) + it('should return true when variantFlag=true', function () { + expect(this.FeatureFlag.shouldDisplayFeature(req, '', true)).to.be.true + }) + }) + + describe('req.query but no query param', function () { + const req = { query: {} } + it('should return false when variantFlag=false', function () { + expect(this.FeatureFlag.shouldDisplayFeature(req, '', false)).to.be + .false + }) + it('should return true when variantFlag=true', function () { + expect(this.FeatureFlag.shouldDisplayFeature(req, '', true)).to.be.true + }) + }) + + describe('req.query[name] exists', function () { + const paramName = 'test' + const req = { query: {} } + + it('should return false when value is not "true"', function () { + req.query[paramName] = 'nope' + expect(this.FeatureFlag.shouldDisplayFeature(req, paramName, false)).to + .be.false + }) + it('should return true when value is "true"', function () { + req.query[paramName] = 'true' + expect(this.FeatureFlag.shouldDisplayFeature(req, paramName, false)).to + .be.true + }) + }) + }) +})