Skip to content

Commit

Permalink
add tests for PluginUtils
Browse files Browse the repository at this point in the history
  • Loading branch information
offtherailz committed Mar 21, 2017
1 parent 237a4cc commit cc25a03
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 0 deletions.
6 changes: 6 additions & 0 deletions web/client/utils/PluginsUtils.js
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,12 @@ const getReducers = (plugins) => Object.keys(plugins).map((name) => plugins[name
const getEpics = (plugins) => Object.keys(plugins).map((name) => plugins[name].epics)
.reduce((previous, current) => assign({}, previous, current), {});
const PluginsUtils = {
/**
* Produces the reducers from the plugins, combined with other plugins
* @param {array} plugins the plugins
* @param {array} reducers other plugins
* @returns {function} a reducer made from the plugins' reducers and the reducers passed as 2nd parameter
*/
combineReducers: (plugins, reducers) => {
const pluginsReducers = getReducers(plugins);
return combineReducers(assign({}, reducers, pluginsReducers));
Expand Down
76 changes: 76 additions & 0 deletions web/client/utils/__tests__/PluginUtils-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
/**
* Copyright 2017, GeoSolutions Sas.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree.
*/
const expect = require('expect');
const PluginsUtils = require('../PluginsUtils');
const assign = require('object-assign');

describe('PluginsUtils', () => {
beforeEach( () => {

});
afterEach((done) => {
document.body.innerHTML = '';

setTimeout(done);
});
it('combineReducers', () => {
const P1 = {
reducers: {
reducer1: () => {}
}
};

const P2 = {
reducers: {
reducer1: (state = {}) => assign({}, state, { A: "A"}),
reducer2: (state = {}) => state
}
};
const reducers = {
reducer3: (state = {}) => state
};
const spyNo = expect.spyOn(P1.reducers, "reducer1");
const finalReducer = PluginsUtils.combineReducers([P1, P2], reducers);
const state = finalReducer();
expect(state.reducer1).toExist();
expect(state.reducer1.A).toBe("A");

// test overriding
expect(spyNo.calls.length).toBe(0);
});
it('getPluginDescriptor', () => {
const P1 = assign( () => {}, {
reducers: {
reducer1: () => {}
}
});
const item = {
test: "TEST"
};
const P2 = assign( () => {}, {
P1: item,
reducers: {
reducer1: () => ({ A: "A"}),
reducer2: () => {}
}
});
const cfg = {
test: "TEST"
};
let desc1 = PluginsUtils.getPluginDescriptor({}, {P1Plugin: P1, P2Plugin: P2}, [{name: "P1", cfg}, "P2"], "P1" );
expect(desc1).toExist();
expect(desc1.id).toBe("P1");
expect(desc1.name).toBe("P1");
expect(desc1.cfg).toExist(cfg);
expect(desc1.items.length).toBe(1);
expect(desc1.items[0].test).toBe(item.test);
expect(desc1.items[0].cfg).toExist();

});

});

0 comments on commit cc25a03

Please sign in to comment.