diff options
Diffstat (limited to 'sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services')
6 files changed, 307 insertions, 0 deletions
diff --git a/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/cluster/cluster.js b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/cluster/cluster.js new file mode 100644 index 000000000..c4ddf6552 --- /dev/null +++ b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/cluster/cluster.js @@ -0,0 +1,47 @@ +(function( $, app ) { + + var services = app.ns("services"); + var ux = app.ns("ux"); + + function parse_version( v ) { + return v.match(/^(\d+)\.(\d+)\.(\d+)/).slice(1,4).map( function(d) { return parseInt(d || 0, 10); } ); + } + + services.Cluster = ux.Class.extend({ + defaults: { + base_uri: null + }, + init: function() { + this.base_uri = this.config.base_uri; + }, + setVersion: function( v ) { + this.version = v; + this._version_parts = parse_version( v ); + }, + versionAtLeast: function( v ) { + var testVersion = parse_version( v ); + for( var i = 0; i < 3; i++ ) { + if( testVersion[i] !== this._version_parts[i] ) { + return testVersion[i] < this._version_parts[i]; + } + } + return true; + }, + request: function( params ) { + return $.ajax( $.extend({ + url: this.base_uri + params.path, + dataType: "json", + error: function(xhr, type, message) { + if("console" in window) { + console.log({ "XHR Error": type, "message": message }); + } + } + }, params) ); + }, + "get": function(path, success) { return this.request( { type: "GET", path: path, success: success } ); }, + "post": function(path, data, success) { return this.request( { type: "POST", path: path, data: data, success: success } ); }, + "put": function(path, data, success) { return this.request( { type: "PUT", path: path, data: data, success: success } ); }, + "delete": function(path, data, success) { return this.request( { type: "DELETE", path: path, data: data, success: success } ); } + }); + +})( this.jQuery, this.app ); diff --git a/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/cluster/clusterSpec.js b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/cluster/clusterSpec.js new file mode 100644 index 000000000..ff4e8a967 --- /dev/null +++ b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/cluster/clusterSpec.js @@ -0,0 +1,65 @@ +describe("app.services.Cluster", function() { + + var Cluster = window.app.services.Cluster; + var test = window.test; + + var cluster; + + beforeEach( function() { + cluster = new Cluster({ base_uri: "http://localhost:9200/" }); + }); + + describe( "when it is initialised", function() { + + it("should have a localhost base_uri", function() { + expect( cluster.base_uri ).toBe( "http://localhost:9200/" ); + }); + + it("should have no version", function() { + expect( cluster.version ).toBe( undefined ); + }); + + }); + + describe( "setVersion()", function() { + + it("have a version", function() { + cluster.setVersion( "1.12.3-5" ); + expect( cluster.version ).toBe( "1.12.3-5" ); + }); + + }); + + describe("versionAtLeast()", function() { + var vs = [ "0.0.3", "0.13.5", "0.90.3", "1.0.0", "1.1.0", "1.2.3", "1.12.4.rc2", "13.0.0" ]; + + it("should return true for versions that are less than or equal to the current version", function() { + cluster.setVersion("1.12.5"); + expect( cluster.versionAtLeast("1.12.5" ) ).toBe( true ); + expect( cluster.versionAtLeast("1.12.5rc2" ) ).toBe( true ); + expect( cluster.versionAtLeast("1.12.5-6" ) ).toBe( true ); + expect( cluster.versionAtLeast("1.12.5-6.beta7" ) ).toBe( true ); + expect( cluster.versionAtLeast("1.12.4" ) ).toBe( true ); + expect( cluster.versionAtLeast("0.12.4" ) ).toBe( true ); + expect( cluster.versionAtLeast("1.1.8" ) ).toBe( true ); + + for( var i = 0; i < vs.length - 1; i++ ) { + cluster.setVersion( vs[i+1] ); + expect( cluster.versionAtLeast( vs[i] ) ).toBe( true ); + } + }); + + it("should return false for versions that are greater than the current version", function() { + cluster.setVersion("1.12.5"); + expect( cluster.versionAtLeast("1.12.6" ) ).toBe( false ); + expect( cluster.versionAtLeast("1.13.4" ) ).toBe( false ); + expect( cluster.versionAtLeast("2.0.0" ) ).toBe( false ); + + for( var i = 0; i < vs.length - 1; i++ ) { + cluster.setVersion( vs[i] ); + expect( cluster.versionAtLeast( vs[i+1] ) ).toBe( false ); + } + }); + }); + +}); diff --git a/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/clusterState/clusterState.js b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/clusterState/clusterState.js new file mode 100644 index 000000000..1d7334e0f --- /dev/null +++ b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/clusterState/clusterState.js @@ -0,0 +1,73 @@ + (function( app ) { + + var services = app.ns("services"); + var ux = app.ns("ux"); + + services.ClusterState = ux.Observable.extend({ + defaults: { + cluster: null + }, + init: function() { + this._super(); + this.cluster = this.config.cluster; + this.clusterState = null; + this.status = null; + this.nodeStats = null; + this.clusterNodes = null; + }, + refresh: function() { + var self = this, clusterState, status, nodeStats, clusterNodes, clusterHealth; + function updateModel() { + if( clusterState && status && nodeStats && clusterNodes && clusterHealth ) { + this.clusterState = clusterState; + this.status = status; + this.nodeStats = nodeStats; + this.clusterNodes = clusterNodes; + this.clusterHealth = clusterHealth; + this.fire( "data", this ); + } + } + this.cluster.get("_cluster/state", function( data ) { + clusterState = data; + updateModel.call( self ); + }); + this.cluster.get("_stats", function( data ) { + status = data; + updateModel.call( self ); + }); + this.cluster.get("_nodes/stats", function( data ) { + nodeStats = data; + updateModel.call( self ); + }); + this.cluster.get("_nodes", function( data ) { + clusterNodes = data; + updateModel.call( self ); + }); + this.cluster.get("_cluster/health", function( data ) { + clusterHealth = data; + updateModel.call( self ); + }); + }, + _clusterState_handler: function(state) { + this.clusterState = state; + this.redraw("clusterState"); + }, + _status_handler: function(status) { + this.status = status; + this.redraw("status"); + }, + _clusterNodeStats_handler: function(stats) { + this.nodeStats = stats; + this.redraw("nodeStats"); + }, + _clusterNodes_handler: function(nodes) { + this.clusterNodes = nodes; + this.redraw("clusterNodes"); + }, + _clusterHealth_handler: function(health) { + this.clusterHealth = health; + this.redraw("status"); + } + }); + +})( this.app ); diff --git a/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/clusterState/clusterStateSpec.js b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/clusterState/clusterStateSpec.js new file mode 100644 index 000000000..b91237c6e --- /dev/null +++ b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/clusterState/clusterStateSpec.js @@ -0,0 +1,64 @@ +describe("app.services.ClusterState", function() { + + var ClusterState = window.app.services.ClusterState; + var test = window.test; + + var c; + var dummyData = {}; + var dataEventCallback; + + function expectAllDataToBeNull() { + expect( c.clusterState ).toBe( null ); + expect( c.status ).toBe( null ); + expect( c.nodeStats ).toBe( null ); + expect( c.clusterNodes ).toBe( null ); + } + + beforeEach( function() { + test.cb.use(); + dataEventCallback = jasmine.createSpy("onData"); + c = new ClusterState({ + cluster: { + get: test.cb.createSpy("get", 1, [ dummyData ] ) + }, + onData: dataEventCallback + }); + }); + + describe( "when it is initialised", function() { + + it("should have null data", function() { + expectAllDataToBeNull(); + }); + + }); + + describe( "when refresh is called", function() { + + beforeEach( function() { + c.refresh(); + }); + + it("should not not update models until all network requests have completed", function() { + test.cb.execOne(); + expectAllDataToBeNull(); + test.cb.execOne(); + expectAllDataToBeNull(); + test.cb.execOne(); + expectAllDataToBeNull(); + test.cb.execOne(); + expectAllDataToBeNull(); + test.cb.execOne(); + expect( c.clusterState ).toBe( dummyData ); + expect( c.status ).toBe( dummyData ); + expect( c.nodeStats ).toBe( dummyData ); + expect( c.clusterNodes ).toBe( dummyData ); + }); + + it("should fire a 'data' event when all data is ready", function() { + test.cb.execAll(); + expect( dataEventCallback ).toHaveBeenCalledWith( c ); + }); + }); + +}); diff --git a/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/preferences/preferenceSpec.js b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/preferences/preferenceSpec.js new file mode 100644 index 000000000..968815d4c --- /dev/null +++ b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/preferences/preferenceSpec.js @@ -0,0 +1,23 @@ +describe("app.services.Preferences", function(){ + +var Preferences = window.app.services.Preferences; + + var prefs; + + beforeEach( function() { + spyOn(window.localStorage, "getItem").and.returnValue( '{"foo":true}' ); + spyOn(window.localStorage, "setItem"); + prefs = Preferences.instance(); + }); + + it("should return a preference from localStorage", function() { + expect( prefs.get("foo") ).toEqual( {foo:true} ); + }); + + it("should set a preference in localStorage", function() { + prefs.set("foo", { foo: false } ); + expect( window.localStorage.setItem ).toHaveBeenCalledWith('foo', '{"foo":false}'); + }); + + +}); diff --git a/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/preferences/preferences.js b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/preferences/preferences.js new file mode 100644 index 000000000..a45eb966d --- /dev/null +++ b/sdnr/wt/devicemanager/provider/src/test/resources/elasticsearch/plugins/head/src/app/services/preferences/preferences.js @@ -0,0 +1,35 @@ +(function( app ) { + + var ux = app.ns("ux"); + var services = app.ns("services"); + + services.Preferences = ux.Singleton.extend({ + init: function() { + this._storage = window.localStorage; + this._setItem("__version", 1 ); + }, + get: function( key ) { + return this._getItem( key ); + }, + set: function( key, val ) { + return this._setItem( key, val ); + }, + _getItem: function( key ) { + try { + return JSON.parse( this._storage.getItem( key ) ); + } catch(e) { + console.warn( e ); + return undefined; + } + }, + _setItem: function( key, val ) { + try { + return this._storage.setItem( key, JSON.stringify( val ) ); + } catch(e) { + console.warn( e ); + return undefined; + } + } + }); + +})( this.app ); |