From 1cd22badfa6f0f722a2847f3d50b42d1bf6610e7 Mon Sep 17 00:00:00 2001 From: ivaosthu Date: Mon, 23 Mar 2015 17:35:58 +0100 Subject: [PATCH] Added test for the FeatureToggleStore --- package.json | 3 +- .../stores/FeatureToggleStore-test.js | 81 +++++++++++++++++++ public/js/stores/FeatureToggleStore.js | 2 - 3 files changed, 83 insertions(+), 3 deletions(-) create mode 100644 public/js/__tests__/stores/FeatureToggleStore-test.js diff --git a/package.json b/package.json index 4bc092089a..e3cfb50614 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,8 @@ "jest": { "scriptPreprocessor": "/jest-preprocessor.js", "unmockedModulePathPatterns": [ - "/node_modules/react" + "/node_modules/react", + "/node_modules/reflux" ], "moduleFileExtensions": [ "jsx", diff --git a/public/js/__tests__/stores/FeatureToggleStore-test.js b/public/js/__tests__/stores/FeatureToggleStore-test.js new file mode 100644 index 0000000000..ba2b62ff8d --- /dev/null +++ b/public/js/__tests__/stores/FeatureToggleStore-test.js @@ -0,0 +1,81 @@ +jest.autoMockOff() +jest.dontMock('../../stores/FeatureToggleActions'); +jest.dontMock('../../stores/FeatureToggleStore'); + +describe('FeatureToggleStore', function() { + + var Actions, Store, toggles; + + beforeEach(function() { + Actions = require('../../stores/FeatureToggleActions'); + Store = require('../../stores/FeatureToggleStore'); + toggles = [ + {name: "app.feature", enabled: true, strategy: "default"} + ]; + }); + + it('should be an empty store', function() { + expect(Store.getFeatureToggles().length).toBe(0); + }); + + it('should inititialize the store', function() { + Actions.init.completed(toggles); + + jest.runAllTimers(); + expect(Store.getFeatureToggles().length).toBe(1); + expect(Store.getFeatureToggles()[0].name).toEqual("app.feature"); + }); + + it('should add a another toggle', function() { + Actions.init.completed(toggles); + + var newToggle = {name: "app.featureB", enabled: true, strategy: "default"}; + + Actions.create.completed(newToggle); + + jest.runAllTimers(); + expect(Store.getFeatureToggles().length).toBe(2); + expect(Store.getFeatureToggles()[1].name).toEqual("app.featureB"); + }); + + it('should archive toggle', function() { + Actions.init.completed(toggles); + + Actions.archive.completed(toggles[0]); + + jest.runAllTimers(); + expect(Store.getFeatureToggles().length).toBe(0); + }); + + + it('should keep toggles in sorted order', function() { + Actions.init.completed([ + {name: "A"}, + {name: "B"}, + {name: "C"} + ]); + + Actions.create.completed({name: "AA"}); + + jest.runAllTimers(); + expect(Store.getFeatureToggles()[0].name).toEqual("A"); + expect(Store.getFeatureToggles()[1].name).toEqual("AA"); + expect(Store.getFeatureToggles()[3].name).toEqual("C"); + }); + + it('should update toggle', function() { + Actions.init.completed(toggles); + var toggle = toggles[0]; + + toggle.enabled = false; + Actions.update.completed(toggle); + + + jest.runAllTimers(); + expect(Store.getFeatureToggles()[0].enabled).toEqual(false); + }); + + + + +}); diff --git a/public/js/stores/FeatureToggleStore.js b/public/js/stores/FeatureToggleStore.js index ab34dc6e6a..383e0a5274 100644 --- a/public/js/stores/FeatureToggleStore.js +++ b/public/js/stores/FeatureToggleStore.js @@ -6,9 +6,7 @@ var findIndex = require('lodash/array/findIndex'); var _featureToggles = []; -// Creates a DataStore var FeatureStore = Reflux.createStore({ - //The store should be split in two: toggleStore && archivedToggleStore! // Initial setup init: function() {