UNPKG

golden-layout

Version:

A multi-screen javascript Layout manager https://golden-layout.com

68 lines (53 loc) 1.56 kB
describe( 'Sets and retrieves a component\'s state', function() { var myLayout, myComponent; it( 'Can create a most basic layout', function() { runs(function(){ myLayout = new window.GoldenLayout({ content: [{ type: 'component', componentName: 'testComponent', componentState: { testValue: 'initial' } }] }); myLayout.registerComponent( 'testComponent', function( container, state ){ this.container = container; this.state = state; myComponent = this; }); myLayout.init(); }); waitsFor(function(){ return myLayout.isInitialised; }); runs(function(){ expect( myComponent.state.testValue ).toBe( 'initial' ); }); }); it( 'returns the initial state', function(){ var config = myLayout.toConfig(); expect( config.content[ 0 ].content[ 0 ].componentState.testValue ).toBe( 'initial' ); }); it( 'emits stateChanged when a component updates its state', function(){ var stateChanges = 0; myLayout.on( 'stateChanged', function(){ stateChanges++; }); runs(function(){ myComponent.container.setState({ testValue: 'updated' }); }); waitsFor(function(){ return stateChanges !== 0; }); runs(function(){ expect( stateChanges ).toBe( 1 ); }); }); it( 'returns the updated state', function(){ var config = myLayout.toConfig(); expect( config.content[ 0 ].content[ 0 ].componentState.testValue ).toBe( 'updated' ); }); it( 'Destroys the layout', function(){ myLayout.destroy(); expect( myLayout.root.contentItems.length ).toBe( 0 ); }); });