From 6bb107f9e021f19e1c1bd368ae9bd74b329b01ec Mon Sep 17 00:00:00 2001 From: Blade Barringer Date: Fri, 13 Nov 2015 10:35:27 -0600 Subject: [PATCH] Set up analytics middleware to test prod and non prod behavior. --- .../api/v3/unit/middlewares/analytics.test.js | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/test/api/v3/unit/middlewares/analytics.test.js b/test/api/v3/unit/middlewares/analytics.test.js index 75df6c72dc..668196c966 100644 --- a/test/api/v3/unit/middlewares/analytics.test.js +++ b/test/api/v3/unit/middlewares/analytics.test.js @@ -5,28 +5,49 @@ import { } from '../../../../helpers/api-unit.helper'; import analyticsService from '../../../../../website/src/libs/api-v3/analyticsService' import nconf from 'nconf'; -import attachAnalytics from '../../../../../website/src/middlewares/api-v3/analytics'; describe('analytics middleware', function() { let res, req, next; + let pathToAnalyticsMiddleware = '../../../../../website/src/middlewares/api-v3/analytics'; beforeEach(() => { + // The nconf.get('IS_PROD') occurs when the file is required + // Since node caches IS_PROD, we have to delete it from the cache + // to test prod vs non-prod behaviors + delete require.cache[require.resolve(pathToAnalyticsMiddleware)]; + res = generateRes(); req = generateReq(); next = generateNext(); }); it('attaches analytics object res.locals', function() { + let attachAnalytics = require(pathToAnalyticsMiddleware); + attachAnalytics(req, res, next); expect(res.analytics).to.exist; }); it('attaches stubbed methods for non-prod environments', () => { + sandbox.stub(nconf, 'get').withArgs('IS_PROD').returns(false); + let attachAnalytics = require(pathToAnalyticsMiddleware); + attachAnalytics(req, res, next); expect(res.analytics.track).to.eql(analyticsService.mockAnalyticsService.track); expect(res.analytics.trackPurchase).to.eql(analyticsService.mockAnalyticsService.trackPurchase); }); + + it('attaches real methods for prod environments', () => { + sandbox.stub(nconf, 'get').withArgs('IS_PROD').returns(true); + + let attachAnalytics = require(pathToAnalyticsMiddleware); + + attachAnalytics(req, res, next); + + expect(res.analytics.track).to.eql(analyticsService.track); + expect(res.analytics.trackPurchase).to.eql(analyticsService.trackPurchase); + }); });