UNPKG

flipit

Version:
101 lines (85 loc) 3.4 kB
var Y = require('yuitest'), Assert = Y.Assert, helper = require('./helper'), mockery = require('mockery'), path = require('path'), FLIPIT_PATH = '../index'; Y.TestRunner.add(new Y.TestCase({ "name": "Test Index", "setUp": function () { this.app = require(FLIPIT_PATH); }, "tearDown": function () { mockery.deregisterAll(); mockery.disable(); }, "test require index package": function () { Assert.isNotUndefined(this.app, 'App is a valid package to import'); }, "validate API": function () { var self = this, testEndpoints = [ 'isEnabled', 'enable', 'disable', 'load' ]; testEndpoints.forEach(function (endpoint) { Assert.isTrue(self.app.hasOwnProperty(endpoint), 'Endpoint "' + endpoint + '" exists.'); Assert.isFunction(self.app[endpoint], 'Endpoint "' + endpoint + '" is a valid function'); }); }, "toggle a feature": function () { var feature = 'brandSpankingNewFeature'; Assert.isFalse(this.app.isEnabled(feature), 'Feature "' + feature + '" is initially disabled.'); Assert.isTrue(this.app.enable(feature), 'Feature "' + feature + '" has been enabled.'); Assert.isTrue(this.app.isEnabled(feature), 'Feature "' + feature + '" is currently active.'); Assert.isTrue(this.app.disable(feature), 'Feature "' + feature + '" has been disabled.'); Assert.isFalse(this.app.isEnabled(feature), 'Feature "' + feature + '" is currently inactive.'); }, "disable an already disabled feature": function () { var feature = 'brandSpankingNewFeature'; Assert.isFalse(this.app.isEnabled(feature), 'Feature "' + feature + '" is initially disabled.'); Assert.isFalse(this.app.disable(feature), 'Feature "' + feature + '" is already disabled.'); }, "loading a feature flag from file": function () { var testFilePath = helper.generateTestFile(), testFeatures = helper.loadDataFromFile(testFilePath), me = this; mockery.enable({ useCleanCache: true }); mockery.registerMock('./lib/feature-loader', { "load": function (filename, callback) { callback(null, testFeatures); } }); mockery.registerAllowable(FLIPIT_PATH); this.app = require(FLIPIT_PATH); // Make sure the current test features are disabled Object.keys(testFeatures).forEach(function (feature) { if (testFeatures.hasOwnProperty(feature)) { Assert.isFalse(me.app.isEnabled(feature), 'Feature "' + feature + '" is initially disabled.'); } }); this.app.load(testFilePath, function () { Object.keys(testFeatures).forEach(function (feature) { if (testFeatures.hasOwnProperty(feature)) { Assert.areSame(testFeatures[feature], me.app.isEnabled(feature), 'Feature "' + feature + '" is properly flagged from a load.'); } }); }); helper.destroyTestFile(testFilePath); } }));