From da7d854e17c75dabae800ed106cc6c30dca3436d Mon Sep 17 00:00:00 2001 From: Dalton Barreto Date: Fri, 8 Dec 2017 09:38:27 -0200 Subject: [PATCH 1/7] Initial implementation of filters This implementatioon makes it possible to pass an object thought a set of filters that can modify it as they want. This will enable plugins to modify virtually any part of the core UI as long as a filter is available for this. --- src/js/plugin/sdk/stores/PipelineStore.js | 44 +++++++++++++ src/test/units/PipelineStore.test.js | 80 +++++++++++++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 src/js/plugin/sdk/stores/PipelineStore.js create mode 100644 src/test/units/PipelineStore.test.js diff --git a/src/js/plugin/sdk/stores/PipelineStore.js b/src/js/plugin/sdk/stores/PipelineStore.js new file mode 100644 index 000000000..2e0359b70 --- /dev/null +++ b/src/js/plugin/sdk/stores/PipelineStore.js @@ -0,0 +1,44 @@ + +class PipelineStore { + constructor() { + this.PRE_AJAX_REQUEST = "PRE_AJAX_REQUEST"; + this.FILTERS_PIPELINE = {}; + } + + applyFilter(filterName, filterParameters) { + if (this.FILTERS_PIPELINE[filterName]) { + for (let filter of this.FILTERS_PIPELINE[filterName]) { + filter(filterParameters); + } + } + return filterParameters; + }; + + register(filterName, callback) { + + if (!this.FILTERS_PIPELINE[filterName]) { + this.FILTERS_PIPELINE[filterName] = []; + } + + let callBacklist = this.FILTERS_PIPELINE[filterName]; + if (callBacklist.indexOf(callback) === -1) { + this.FILTERS_PIPELINE[filterName].push(callback); + } + }; + + deregister(filterName, callback) { + var callbckPosition = this.FILTERS_PIPELINE[filterName].indexOf(callback); + if (callbckPosition !== -1) { + this.FILTERS_PIPELINE[filterName].splice(callbckPosition, 1); + } + }; + + clearPipeline() { + this.FILTERS_PIPELINE = {}; + }; + +}; + +module.exports = { + PipelineStore: new PipelineStore() +}; diff --git a/src/test/units/PipelineStore.test.js b/src/test/units/PipelineStore.test.js new file mode 100644 index 000000000..a5925fbd1 --- /dev/null +++ b/src/test/units/PipelineStore.test.js @@ -0,0 +1,80 @@ +import {expect} from "chai"; +import {PipelineStore} from "../../js/plugin/sdk/stores/PipelineStore" + +describe("Pipeline tests", function () { + + beforeEach(function (){ + PipelineStore.clearPipeline(); + }); + + it("should add a new function to the pipeline", function () { + var filter = function() {}; + + expect(PipelineStore.FILTERS_PIPELINE[PipelineStore.PRE_AJAX_REQUEST]).to.be.equal(undefined); + PipelineStore.register(PipelineStore.PRE_AJAX_REQUEST, filter); + expect(PipelineStore.FILTERS_PIPELINE[PipelineStore.PRE_AJAX_REQUEST]).to.have.lengthOf(1); + expect(PipelineStore.FILTERS_PIPELINE[PipelineStore.PRE_AJAX_REQUEST][0]).to.be.equal(filter); + }); + + it("should add multiple functions to the pipeline", function () { + var filter = function() {}; + var filter2 = function() {}; + + expect(PipelineStore.FILTERS_PIPELINE[PipelineStore.PRE_AJAX_REQUEST]).to.be.equal(undefined); + PipelineStore.register(PipelineStore.PRE_AJAX_REQUEST, filter); + PipelineStore.register(PipelineStore.PRE_AJAX_REQUEST, filter2); + expect(PipelineStore.FILTERS_PIPELINE[PipelineStore.PRE_AJAX_REQUEST]).to.have.lengthOf(2); + expect(PipelineStore.FILTERS_PIPELINE[PipelineStore.PRE_AJAX_REQUEST][0]).to.be.equal(filter); + expect(PipelineStore.FILTERS_PIPELINE[PipelineStore.PRE_AJAX_REQUEST][1]).to.be.equal(filter2); + }); + + it("should remove a function from the pipeline", function () { + var filter = function() {}; + + expect(PipelineStore.FILTERS_PIPELINE[PipelineStore.PRE_AJAX_REQUEST]).to.be.equal(undefined); + + PipelineStore.register(PipelineStore.PRE_AJAX_REQUEST, filter); + expect(PipelineStore.FILTERS_PIPELINE[PipelineStore.PRE_AJAX_REQUEST]).to.have.lengthOf(1); + + PipelineStore.deregister(PipelineStore.PRE_AJAX_REQUEST, filter); + expect(PipelineStore.FILTERS_PIPELINE[PipelineStore.PRE_AJAX_REQUEST]).to.have.lengthOf(0); + }); + + it("should not error when removing the same function twice", function () { + var filter = function() {}; + + PipelineStore.register(PipelineStore.PRE_AJAX_REQUEST, filter); + + PipelineStore.deregister(PipelineStore.PRE_AJAX_REQUEST, filter); + PipelineStore.deregister(PipelineStore.PRE_AJAX_REQUEST, filter); + expect(PipelineStore.FILTERS_PIPELINE[PipelineStore.PRE_AJAX_REQUEST]).to.have.lengthOf(0); + }); + + it("should not add the same function twice", function () { + var filter = function() {}; + + PipelineStore.register(PipelineStore.PRE_AJAX_REQUEST, filter); + PipelineStore.register(PipelineStore.PRE_AJAX_REQUEST, filter); + expect(PipelineStore.FILTERS_PIPELINE[PipelineStore.PRE_AJAX_REQUEST]).to.have.lengthOf(1); + expect(PipelineStore.FILTERS_PIPELINE[PipelineStore.PRE_AJAX_REQUEST][0]).to.be.equal(filter); + }); + + it("should call all functions of the chosen pipeline", function () { + var filter_one = function(data) { + data.value = data.value + "_filter_one"; + }; + var filter_two = function(data) { + data.value = data.value + "_filter_two"; + }; + PipelineStore.register(PipelineStore.PRE_AJAX_REQUEST, filter_one); + PipelineStore.register(PipelineStore.PRE_AJAX_REQUEST, filter_two); + let filtered_data = PipelineStore.applyFilter(PipelineStore.PRE_AJAX_REQUEST, {value: "initial"}); + expect(filtered_data.value).to.be.equal("initial_filter_one_filter_two"); + }); + + it("should be able to run an empty pipeline", function () { + let filtered_data = PipelineStore.applyFilter(PipelineStore.PRE_AJAX_REQUEST, {value: "initial"}); + expect(filtered_data.value).to.be.equal("initial"); + }); + +}); From ac3fb70787ff81e83b7fbfd87cff2d80a2b7d19d Mon Sep 17 00:00:00 2001 From: Dalton Barreto Date: Fri, 8 Dec 2017 09:47:44 -0200 Subject: [PATCH 2/7] Running PRE_AJAX_REQUEST filter before ajax request --- src/js/helpers/ajaxWrapper.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/js/helpers/ajaxWrapper.js b/src/js/helpers/ajaxWrapper.js index 70f3439eb..268bac871 100644 --- a/src/js/helpers/ajaxWrapper.js +++ b/src/js/helpers/ajaxWrapper.js @@ -1,5 +1,6 @@ import fetch from "isomorphic-fetch"; import Util from "./Util"; +import {PipelineStore} from "../plugin/sdk/stores/PipelineStore"; var uniqueCalls = []; @@ -47,6 +48,10 @@ var ajaxWrapper = function (opts = {}) { }); } + options = PipelineStore.applyFilter( + PipelineStore.PRE_AJAX_REQUEST, + options + ); return fetch(options.url, fetchOptions); }; From 722858b594e4177afbbcdba06e096324813366c3 Mon Sep 17 00:00:00 2001 From: Dalton Barreto Date: Fri, 8 Dec 2017 09:48:14 -0200 Subject: [PATCH 3/7] Publishing PipelineStore to all plugins --- src/js/plugin/PluginLoader.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/js/plugin/PluginLoader.js b/src/js/plugin/PluginLoader.js index d548b83cb..5fcf13a0c 100644 --- a/src/js/plugin/PluginLoader.js +++ b/src/js/plugin/PluginLoader.js @@ -12,6 +12,7 @@ import PluginDispatcherProxy from "./PluginDispatcherProxy"; import MarathonService from "./sdk/services/MarathonService"; import MarathonActions from "./sdk/actions/MarathonActions"; +import PipelineStore from "./sdk/stores/PipelineStore"; const PLUGIN_STARTUP_TIMEOUT = 10000; // in ms @@ -51,6 +52,7 @@ const PluginLoader = { config: Object.freeze(config), MarathonService: MarathonService, MarathonActions: MarathonActions, + PipelineStore: PipelineStore, }); let dispatchToken = PluginDispatcher.register(function (event) { From 8049a6b3587d53aba4688cf6c2a0e92f6e0844ff Mon Sep 17 00:00:00 2001 From: Dalton Barreto Date: Wed, 13 Dec 2017 14:04:47 -0200 Subject: [PATCH 4/7] Correclty exporting symbols from PipelineStore module --- src/js/plugin/PluginLoader.js | 2 +- src/js/plugin/sdk/stores/PipelineStore.js | 33 +++++---- src/test/units/PipelineStore.test.js | 81 +++++++++++++++-------- 3 files changed, 68 insertions(+), 48 deletions(-) diff --git a/src/js/plugin/PluginLoader.js b/src/js/plugin/PluginLoader.js index 5fcf13a0c..fc9b9e1d3 100644 --- a/src/js/plugin/PluginLoader.js +++ b/src/js/plugin/PluginLoader.js @@ -52,7 +52,7 @@ const PluginLoader = { config: Object.freeze(config), MarathonService: MarathonService, MarathonActions: MarathonActions, - PipelineStore: PipelineStore, + PipelineStore: new PipelineStore(), }); let dispatchToken = PluginDispatcher.register(function (event) { diff --git a/src/js/plugin/sdk/stores/PipelineStore.js b/src/js/plugin/sdk/stores/PipelineStore.js index 2e0359b70..8671e3c25 100644 --- a/src/js/plugin/sdk/stores/PipelineStore.js +++ b/src/js/plugin/sdk/stores/PipelineStore.js @@ -1,13 +1,13 @@ -class PipelineStore { - constructor() { - this.PRE_AJAX_REQUEST = "PRE_AJAX_REQUEST"; - this.FILTERS_PIPELINE = {}; - } + +export const FILTERS_PIPELINE = {}; +export const PRE_AJAX_REQUEST = "PRE_AJAX_REQUEST"; + +export default class PipelineStore { applyFilter(filterName, filterParameters) { - if (this.FILTERS_PIPELINE[filterName]) { - for (let filter of this.FILTERS_PIPELINE[filterName]) { + if (FILTERS_PIPELINE[filterName]) { + for (let filter of FILTERS_PIPELINE[filterName]) { filter(filterParameters); } } @@ -16,29 +16,26 @@ class PipelineStore { register(filterName, callback) { - if (!this.FILTERS_PIPELINE[filterName]) { - this.FILTERS_PIPELINE[filterName] = []; + if (!FILTERS_PIPELINE[filterName]) { + FILTERS_PIPELINE[filterName] = []; } - let callBacklist = this.FILTERS_PIPELINE[filterName]; + let callBacklist = FILTERS_PIPELINE[filterName]; if (callBacklist.indexOf(callback) === -1) { - this.FILTERS_PIPELINE[filterName].push(callback); + FILTERS_PIPELINE[filterName].push(callback); } }; deregister(filterName, callback) { - var callbckPosition = this.FILTERS_PIPELINE[filterName].indexOf(callback); + var callbckPosition = FILTERS_PIPELINE[filterName].indexOf(callback); if (callbckPosition !== -1) { - this.FILTERS_PIPELINE[filterName].splice(callbckPosition, 1); + FILTERS_PIPELINE[filterName].splice(callbckPosition, 1); } }; - clearPipeline() { - this.FILTERS_PIPELINE = {}; + getPipeline() { + return FILTERS_PIPELINE; }; }; -module.exports = { - PipelineStore: new PipelineStore() -}; diff --git a/src/test/units/PipelineStore.test.js b/src/test/units/PipelineStore.test.js index a5925fbd1..6270ac91f 100644 --- a/src/test/units/PipelineStore.test.js +++ b/src/test/units/PipelineStore.test.js @@ -1,62 +1,71 @@ import {expect} from "chai"; -import {PipelineStore} from "../../js/plugin/sdk/stores/PipelineStore" +import PipelineStore from "../../js/plugin/sdk/stores/PipelineStore" +import {FILTERS_PIPELINE, PRE_AJAX_REQUEST} from "../../js/plugin/sdk/stores/PipelineStore" + describe("Pipeline tests", function () { beforeEach(function (){ - PipelineStore.clearPipeline(); + for (let a of Object.keys(FILTERS_PIPELINE)){ + delete FILTERS_PIPELINE[a]; + } }); it("should add a new function to the pipeline", function () { var filter = function() {}; - expect(PipelineStore.FILTERS_PIPELINE[PipelineStore.PRE_AJAX_REQUEST]).to.be.equal(undefined); - PipelineStore.register(PipelineStore.PRE_AJAX_REQUEST, filter); - expect(PipelineStore.FILTERS_PIPELINE[PipelineStore.PRE_AJAX_REQUEST]).to.have.lengthOf(1); - expect(PipelineStore.FILTERS_PIPELINE[PipelineStore.PRE_AJAX_REQUEST][0]).to.be.equal(filter); + let pipeline = new PipelineStore(); + expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST]).to.be.equal(undefined); + pipeline.register(PRE_AJAX_REQUEST, filter); + expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST]).to.have.lengthOf(1); + expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST][0]).to.be.equal(filter); }); it("should add multiple functions to the pipeline", function () { var filter = function() {}; var filter2 = function() {}; - expect(PipelineStore.FILTERS_PIPELINE[PipelineStore.PRE_AJAX_REQUEST]).to.be.equal(undefined); - PipelineStore.register(PipelineStore.PRE_AJAX_REQUEST, filter); - PipelineStore.register(PipelineStore.PRE_AJAX_REQUEST, filter2); - expect(PipelineStore.FILTERS_PIPELINE[PipelineStore.PRE_AJAX_REQUEST]).to.have.lengthOf(2); - expect(PipelineStore.FILTERS_PIPELINE[PipelineStore.PRE_AJAX_REQUEST][0]).to.be.equal(filter); - expect(PipelineStore.FILTERS_PIPELINE[PipelineStore.PRE_AJAX_REQUEST][1]).to.be.equal(filter2); + let pipeline = new PipelineStore(); + expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST]).to.be.equal(undefined); + pipeline.register(PRE_AJAX_REQUEST, filter); + pipeline.register(PRE_AJAX_REQUEST, filter2); + expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST]).to.have.lengthOf(2); + expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST][0]).to.be.equal(filter); + expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST][1]).to.be.equal(filter2); }); it("should remove a function from the pipeline", function () { var filter = function() {}; - expect(PipelineStore.FILTERS_PIPELINE[PipelineStore.PRE_AJAX_REQUEST]).to.be.equal(undefined); + let pipeline = new PipelineStore(); + expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST]).to.be.equal(undefined); - PipelineStore.register(PipelineStore.PRE_AJAX_REQUEST, filter); - expect(PipelineStore.FILTERS_PIPELINE[PipelineStore.PRE_AJAX_REQUEST]).to.have.lengthOf(1); + pipeline.register(PRE_AJAX_REQUEST, filter); + expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST]).to.have.lengthOf(1); - PipelineStore.deregister(PipelineStore.PRE_AJAX_REQUEST, filter); - expect(PipelineStore.FILTERS_PIPELINE[PipelineStore.PRE_AJAX_REQUEST]).to.have.lengthOf(0); + pipeline.deregister(PRE_AJAX_REQUEST, filter); + expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST]).to.have.lengthOf(0); }); it("should not error when removing the same function twice", function () { var filter = function() {}; - PipelineStore.register(PipelineStore.PRE_AJAX_REQUEST, filter); + let pipeline = new PipelineStore(); + pipeline.register(PRE_AJAX_REQUEST, filter); - PipelineStore.deregister(PipelineStore.PRE_AJAX_REQUEST, filter); - PipelineStore.deregister(PipelineStore.PRE_AJAX_REQUEST, filter); - expect(PipelineStore.FILTERS_PIPELINE[PipelineStore.PRE_AJAX_REQUEST]).to.have.lengthOf(0); + pipeline.deregister(PRE_AJAX_REQUEST, filter); + pipeline.deregister(PRE_AJAX_REQUEST, filter); + expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST]).to.have.lengthOf(0); }); it("should not add the same function twice", function () { var filter = function() {}; - PipelineStore.register(PipelineStore.PRE_AJAX_REQUEST, filter); - PipelineStore.register(PipelineStore.PRE_AJAX_REQUEST, filter); - expect(PipelineStore.FILTERS_PIPELINE[PipelineStore.PRE_AJAX_REQUEST]).to.have.lengthOf(1); - expect(PipelineStore.FILTERS_PIPELINE[PipelineStore.PRE_AJAX_REQUEST][0]).to.be.equal(filter); + let pipeline = new PipelineStore(); + pipeline.register(PRE_AJAX_REQUEST, filter); + pipeline.register(PRE_AJAX_REQUEST, filter); + expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST]).to.have.lengthOf(1); + expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST][0]).to.be.equal(filter); }); it("should call all functions of the chosen pipeline", function () { @@ -66,15 +75,29 @@ describe("Pipeline tests", function () { var filter_two = function(data) { data.value = data.value + "_filter_two"; }; - PipelineStore.register(PipelineStore.PRE_AJAX_REQUEST, filter_one); - PipelineStore.register(PipelineStore.PRE_AJAX_REQUEST, filter_two); - let filtered_data = PipelineStore.applyFilter(PipelineStore.PRE_AJAX_REQUEST, {value: "initial"}); + + let pipeline = new PipelineStore(); + pipeline.register(PRE_AJAX_REQUEST, filter_one); + pipeline.register(PRE_AJAX_REQUEST, filter_two); + let filtered_data = pipeline.applyFilter(PRE_AJAX_REQUEST, {value: "initial"}); expect(filtered_data.value).to.be.equal("initial_filter_one_filter_two"); }); it("should be able to run an empty pipeline", function () { - let filtered_data = PipelineStore.applyFilter(PipelineStore.PRE_AJAX_REQUEST, {value: "initial"}); + let pipeline = new PipelineStore(); + let filtered_data = pipeline.applyFilter(PRE_AJAX_REQUEST, {value: "initial"}); expect(filtered_data.value).to.be.equal("initial"); }); + it ("should share the same filters between multiple pipeline instances", function (){ + let filter = function (){}; + + let pipeline_one = new PipelineStore(); + let pipeline_two = new PipelineStore(); + pipeline_one.register(PRE_AJAX_REQUEST, filter); + pipeline_two.register(PRE_AJAX_REQUEST, filter); + expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST]).to.have.lengthOf(1); + expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST][0]).to.be.equal(filter); + }); + }); From a2d43b458499ad9e0e9995eb1bed1f236027e349 Mon Sep 17 00:00:00 2001 From: Dalton Barreto Date: Thu, 14 Dec 2017 08:19:40 -0200 Subject: [PATCH 5/7] Fixing call to PipelineStore on ajaxWrapper --- src/js/helpers/ajaxWrapper.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/js/helpers/ajaxWrapper.js b/src/js/helpers/ajaxWrapper.js index 268bac871..2014d19ed 100644 --- a/src/js/helpers/ajaxWrapper.js +++ b/src/js/helpers/ajaxWrapper.js @@ -1,8 +1,9 @@ import fetch from "isomorphic-fetch"; import Util from "./Util"; -import {PipelineStore} from "../plugin/sdk/stores/PipelineStore"; +import PipelineStore from "../plugin/sdk/stores/PipelineStore"; var uniqueCalls = []; +var pipeline = new PipelineStore(); function removeCall(options) { uniqueCalls.splice(uniqueCalls.indexOf(options.url), 1); @@ -48,7 +49,7 @@ var ajaxWrapper = function (opts = {}) { }); } - options = PipelineStore.applyFilter( + options = pipeline.applyFilter( PipelineStore.PRE_AJAX_REQUEST, options ); From efef127e69d38575c43f5b54812a15f3193cc55b Mon Sep 17 00:00:00 2001 From: Dalton Barreto Date: Thu, 14 Dec 2017 08:25:43 -0200 Subject: [PATCH 6/7] Fixing exporting of PipelineHook names --- src/js/plugin/PluginLoader.js | 3 +- src/js/plugin/sdk/stores/PipelineStore.js | 6 +- src/test/units/PipelineStore.test.js | 67 +++++++++++------------ 3 files changed, 40 insertions(+), 36 deletions(-) diff --git a/src/js/plugin/PluginLoader.js b/src/js/plugin/PluginLoader.js index fc9b9e1d3..845185435 100644 --- a/src/js/plugin/PluginLoader.js +++ b/src/js/plugin/PluginLoader.js @@ -12,7 +12,7 @@ import PluginDispatcherProxy from "./PluginDispatcherProxy"; import MarathonService from "./sdk/services/MarathonService"; import MarathonActions from "./sdk/actions/MarathonActions"; -import PipelineStore from "./sdk/stores/PipelineStore"; +import PipelineStore, {Hooks as PipelineHooks} from "./sdk/stores/PipelineStore"; const PLUGIN_STARTUP_TIMEOUT = 10000; // in ms @@ -53,6 +53,7 @@ const PluginLoader = { MarathonService: MarathonService, MarathonActions: MarathonActions, PipelineStore: new PipelineStore(), + PipelineHooks: PipelineHooks, }); let dispatchToken = PluginDispatcher.register(function (event) { diff --git a/src/js/plugin/sdk/stores/PipelineStore.js b/src/js/plugin/sdk/stores/PipelineStore.js index 8671e3c25..112f4fc42 100644 --- a/src/js/plugin/sdk/stores/PipelineStore.js +++ b/src/js/plugin/sdk/stores/PipelineStore.js @@ -1,7 +1,11 @@ export const FILTERS_PIPELINE = {}; -export const PRE_AJAX_REQUEST = "PRE_AJAX_REQUEST"; +const PRE_AJAX_REQUEST = "PRE_AJAX_REQUEST"; + +export const Hooks = { + PRE_AJAX_REQUEST: PRE_AJAX_REQUEST +}; export default class PipelineStore { diff --git a/src/test/units/PipelineStore.test.js b/src/test/units/PipelineStore.test.js index 6270ac91f..fe4452ad6 100644 --- a/src/test/units/PipelineStore.test.js +++ b/src/test/units/PipelineStore.test.js @@ -1,7 +1,6 @@ import {expect} from "chai"; -import PipelineStore from "../../js/plugin/sdk/stores/PipelineStore" -import {FILTERS_PIPELINE, PRE_AJAX_REQUEST} from "../../js/plugin/sdk/stores/PipelineStore" - +import PipelineStore, {Hooks} from "../../js/plugin/sdk/stores/PipelineStore" +import {FILTERS_PIPELINE} from "../../js/plugin/sdk/stores/PipelineStore" describe("Pipeline tests", function () { @@ -15,10 +14,10 @@ describe("Pipeline tests", function () { var filter = function() {}; let pipeline = new PipelineStore(); - expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST]).to.be.equal(undefined); - pipeline.register(PRE_AJAX_REQUEST, filter); - expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST]).to.have.lengthOf(1); - expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST][0]).to.be.equal(filter); + expect(FILTERS_PIPELINE[Hooks.PRE_AJAX_REQUEST]).to.be.equal(undefined); + pipeline.register(Hooks.PRE_AJAX_REQUEST, filter); + expect(FILTERS_PIPELINE[Hooks.PRE_AJAX_REQUEST]).to.have.lengthOf(1); + expect(FILTERS_PIPELINE[Hooks.PRE_AJAX_REQUEST][0]).to.be.equal(filter); }); it("should add multiple functions to the pipeline", function () { @@ -26,46 +25,46 @@ describe("Pipeline tests", function () { var filter2 = function() {}; let pipeline = new PipelineStore(); - expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST]).to.be.equal(undefined); - pipeline.register(PRE_AJAX_REQUEST, filter); - pipeline.register(PRE_AJAX_REQUEST, filter2); - expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST]).to.have.lengthOf(2); - expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST][0]).to.be.equal(filter); - expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST][1]).to.be.equal(filter2); + expect(FILTERS_PIPELINE[Hooks.PRE_AJAX_REQUEST]).to.be.equal(undefined); + pipeline.register(Hooks.PRE_AJAX_REQUEST, filter); + pipeline.register(Hooks.PRE_AJAX_REQUEST, filter2); + expect(FILTERS_PIPELINE[Hooks.PRE_AJAX_REQUEST]).to.have.lengthOf(2); + expect(FILTERS_PIPELINE[Hooks.PRE_AJAX_REQUEST][0]).to.be.equal(filter); + expect(FILTERS_PIPELINE[Hooks.PRE_AJAX_REQUEST][1]).to.be.equal(filter2); }); it("should remove a function from the pipeline", function () { var filter = function() {}; let pipeline = new PipelineStore(); - expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST]).to.be.equal(undefined); + expect(FILTERS_PIPELINE[Hooks.PRE_AJAX_REQUEST]).to.be.equal(undefined); - pipeline.register(PRE_AJAX_REQUEST, filter); - expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST]).to.have.lengthOf(1); + pipeline.register(Hooks.PRE_AJAX_REQUEST, filter); + expect(FILTERS_PIPELINE[Hooks.PRE_AJAX_REQUEST]).to.have.lengthOf(1); - pipeline.deregister(PRE_AJAX_REQUEST, filter); - expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST]).to.have.lengthOf(0); + pipeline.deregister(Hooks.PRE_AJAX_REQUEST, filter); + expect(FILTERS_PIPELINE[Hooks.PRE_AJAX_REQUEST]).to.have.lengthOf(0); }); it("should not error when removing the same function twice", function () { var filter = function() {}; let pipeline = new PipelineStore(); - pipeline.register(PRE_AJAX_REQUEST, filter); + pipeline.register(Hooks.PRE_AJAX_REQUEST, filter); - pipeline.deregister(PRE_AJAX_REQUEST, filter); - pipeline.deregister(PRE_AJAX_REQUEST, filter); - expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST]).to.have.lengthOf(0); + pipeline.deregister(Hooks.PRE_AJAX_REQUEST, filter); + pipeline.deregister(Hooks.PRE_AJAX_REQUEST, filter); + expect(FILTERS_PIPELINE[Hooks.PRE_AJAX_REQUEST]).to.have.lengthOf(0); }); it("should not add the same function twice", function () { var filter = function() {}; let pipeline = new PipelineStore(); - pipeline.register(PRE_AJAX_REQUEST, filter); - pipeline.register(PRE_AJAX_REQUEST, filter); - expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST]).to.have.lengthOf(1); - expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST][0]).to.be.equal(filter); + pipeline.register(Hooks.PRE_AJAX_REQUEST, filter); + pipeline.register(Hooks.PRE_AJAX_REQUEST, filter); + expect(FILTERS_PIPELINE[Hooks.PRE_AJAX_REQUEST]).to.have.lengthOf(1); + expect(FILTERS_PIPELINE[Hooks.PRE_AJAX_REQUEST][0]).to.be.equal(filter); }); it("should call all functions of the chosen pipeline", function () { @@ -77,15 +76,15 @@ describe("Pipeline tests", function () { }; let pipeline = new PipelineStore(); - pipeline.register(PRE_AJAX_REQUEST, filter_one); - pipeline.register(PRE_AJAX_REQUEST, filter_two); - let filtered_data = pipeline.applyFilter(PRE_AJAX_REQUEST, {value: "initial"}); + pipeline.register(Hooks.PRE_AJAX_REQUEST, filter_one); + pipeline.register(Hooks.PRE_AJAX_REQUEST, filter_two); + let filtered_data = pipeline.applyFilter(Hooks.PRE_AJAX_REQUEST, {value: "initial"}); expect(filtered_data.value).to.be.equal("initial_filter_one_filter_two"); }); it("should be able to run an empty pipeline", function () { let pipeline = new PipelineStore(); - let filtered_data = pipeline.applyFilter(PRE_AJAX_REQUEST, {value: "initial"}); + let filtered_data = pipeline.applyFilter(Hooks.PRE_AJAX_REQUEST, {value: "initial"}); expect(filtered_data.value).to.be.equal("initial"); }); @@ -94,10 +93,10 @@ describe("Pipeline tests", function () { let pipeline_one = new PipelineStore(); let pipeline_two = new PipelineStore(); - pipeline_one.register(PRE_AJAX_REQUEST, filter); - pipeline_two.register(PRE_AJAX_REQUEST, filter); - expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST]).to.have.lengthOf(1); - expect(FILTERS_PIPELINE[PRE_AJAX_REQUEST][0]).to.be.equal(filter); + pipeline_one.register(Hooks.PRE_AJAX_REQUEST, filter); + pipeline_two.register(Hooks.PRE_AJAX_REQUEST, filter); + expect(FILTERS_PIPELINE[Hooks.PRE_AJAX_REQUEST]).to.have.lengthOf(1); + expect(FILTERS_PIPELINE[Hooks.PRE_AJAX_REQUEST][0]).to.be.equal(filter); }); }); From 5b811715ed290a7f8fb9440606e436ca36d8a561 Mon Sep 17 00:00:00 2001 From: Dalton Barreto Date: Thu, 14 Dec 2017 09:59:01 -0200 Subject: [PATCH 7/7] Fixing linter errors --- src/js/plugin/PluginLoader.js | 3 ++- src/js/plugin/sdk/stores/PipelineStore.js | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/js/plugin/PluginLoader.js b/src/js/plugin/PluginLoader.js index 845185435..f447e7e9f 100644 --- a/src/js/plugin/PluginLoader.js +++ b/src/js/plugin/PluginLoader.js @@ -12,7 +12,8 @@ import PluginDispatcherProxy from "./PluginDispatcherProxy"; import MarathonService from "./sdk/services/MarathonService"; import MarathonActions from "./sdk/actions/MarathonActions"; -import PipelineStore, {Hooks as PipelineHooks} from "./sdk/stores/PipelineStore"; +import PipelineStore, + {Hooks as PipelineHooks} from "./sdk/stores/PipelineStore"; const PLUGIN_STARTUP_TIMEOUT = 10000; // in ms diff --git a/src/js/plugin/sdk/stores/PipelineStore.js b/src/js/plugin/sdk/stores/PipelineStore.js index 112f4fc42..42b898ed8 100644 --- a/src/js/plugin/sdk/stores/PipelineStore.js +++ b/src/js/plugin/sdk/stores/PipelineStore.js @@ -1,5 +1,4 @@ - export const FILTERS_PIPELINE = {}; const PRE_AJAX_REQUEST = "PRE_AJAX_REQUEST";