Daniel@0: "use strict"; Daniel@0: Daniel@0: describe("ContextModule.State", function() { Daniel@0: Daniel@0: var serializedStates = { Daniel@0: "empty": { Daniel@0: "musicCollectionGrid": { Daniel@0: "entityConfigs": [], Daniel@0: "viewConfigs": [], Daniel@0: }, Daniel@0: "musicRecordingGrid": { Daniel@0: "entityConfigs": [], Daniel@0: "viewConfigs": [], Daniel@0: } Daniel@0: }, Daniel@0: Daniel@0: "empty_faulty1": { Daniel@0: Daniel@0: }, Daniel@0: "empty_faulty2": 42, Daniel@0: "empty_faulty3": null, Daniel@0: Daniel@0: "empty_incomplete1": { Daniel@0: "musicCollectionGrid": { Daniel@0: "entityConfigs": [], Daniel@0: "viewConfigs": [], Daniel@0: }, Daniel@0: }, Daniel@0: "empty_incomplete2": { Daniel@0: "musicRecordingGrid": { Daniel@0: "viewConfigs": [], Daniel@0: }, Daniel@0: }, Daniel@0: Daniel@0: "1by1": { Daniel@0: "musicCollectionGrid": { Daniel@0: "entityConfigs": [{clientId: "c10", parameters: {"ce": 1}, plannedParameterUpdates: {}}], Daniel@0: "viewConfigs": [{clientId: "c20", parameters: {"cv": 2}, plannedParameterUpdates: {}}], Daniel@0: }, Daniel@0: "musicRecordingGrid": { Daniel@0: "entityConfigs": [{clientId: "c30", parameters: {"re": 3}, plannedParameterUpdates: {}}], Daniel@0: "viewConfigs": [{clientId: "c40", parameters: {"rv": 4}, plannedParameterUpdates: {}}], Daniel@0: } Daniel@0: }, Daniel@0: "1by1_faulty1": { Daniel@0: "musicCollectionGrid": { Daniel@0: "entityConfigs": [{clientId: "c10", parameters: {"ce": 1}, plannedParameterUpdates: null}], Daniel@0: "viewConfigs": [{clientId: "c20", parameters: {"cv": 2}, plannedParameterUpdates: {}}], Daniel@0: }, Daniel@0: "musicRecordingGrid": { Daniel@0: "entityConfigs": [{clientId: "c30", parameters: {"re": 3}, plannedParameterUpdates: 42}], Daniel@0: "viewConfigs": [{clientId: "c40", parameters: {"rv": 4}, plannedParameterUpdates: {}}], Daniel@0: } Daniel@0: }, Daniel@0: "1by1_incomplete1": { Daniel@0: "musicCollectionGrid": { Daniel@0: "entityConfigs": [{clientId: "c10", parameters: {"ce": 1}, }], Daniel@0: "viewConfigs": [{clientId: "c20", parameters: {"cv": 2}, plannedParameterUpdates: {}}], Daniel@0: }, Daniel@0: "musicRecordingGrid": { Daniel@0: "entityConfigs": [{clientId: "c30", parameters: {"re": 3}, }], Daniel@0: "viewConfigs": [{clientId: "c40", parameters: {"rv": 4}, plannedParameterUpdates: {}}], Daniel@0: } Daniel@0: }, Daniel@0: Daniel@0: }; Daniel@0: Daniel@0: it("is promptly created", function() { Daniel@0: var testedState = new App.ContextModule.State(); Daniel@0: Daniel@0: expect(testedState).not.toBe(null); Daniel@0: Daniel@0: expect(testedState.get("musicCollectionGrid")).not.toBe(null); Daniel@0: expect(testedState.get("musicCollectionGrid") instanceof App.ContextModule.ConfigGrid).toBe(true); Daniel@0: Daniel@0: expect(testedState.get("musicRecordingGrid")).not.toBe(null); Daniel@0: expect(testedState.get("musicRecordingGrid") instanceof App.ContextModule.ConfigGrid).toBe(true); Daniel@0: Daniel@0: }); Daniel@0: Daniel@0: it("serializes and unserializes itself", function() { Daniel@0: var testedState = new App.ContextModule.State(); Daniel@0: Daniel@0: testedState.unserialize(serializedStates["empty"]); Daniel@0: expect(testedState.serialize()).toEqual(serializedStates["empty"]); Daniel@0: Daniel@0: testedState.unserialize(serializedStates["empty_faulty1"]); Daniel@0: expect(testedState.serialize()).toEqual(serializedStates["empty"]); Daniel@0: Daniel@0: testedState.unserialize(serializedStates["empty_faulty2"]); Daniel@0: expect(testedState.serialize()).toEqual(serializedStates["empty"]); Daniel@0: Daniel@0: testedState.unserialize(serializedStates["empty_faulty3"]); Daniel@0: expect(testedState.serialize()).toEqual(serializedStates["empty"]); Daniel@0: Daniel@0: testedState.unserialize(serializedStates["empty_incomplete1"]); Daniel@0: expect(testedState.serialize()).toEqual(serializedStates["empty"]); Daniel@0: Daniel@0: testedState.unserialize(serializedStates["empty_incomplete2"]); Daniel@0: expect(testedState.serialize()).toEqual(serializedStates["empty"]); Daniel@0: Daniel@0: testedState.unserialize(serializedStates["1by1"]); Daniel@0: expect(testedState.serialize()).toEqual(serializedStates["1by1"]); Daniel@0: Daniel@0: testedState.unserialize(serializedStates["1by1_faulty1"]); Daniel@0: expect(testedState.serialize()).toEqual(serializedStates["1by1"]); Daniel@0: Daniel@0: testedState.unserialize(serializedStates["1by1_incomplete1"]); Daniel@0: expect(testedState.serialize()).toEqual(serializedStates["1by1"]); Daniel@0: }); Daniel@0: Daniel@0: xit("returns grid by type", function() { Daniel@0: Daniel@0: }); Daniel@0: Daniel@0: xit("works with property musicRecordingsGridIsShown", function() { Daniel@0: Daniel@0: }); Daniel@0: Daniel@0: it("triggers change event when when config grids change", function() { Daniel@0: var testedState = new App.ContextModule.State(); Daniel@0: Daniel@0: var changeListener = jasmine.createSpy("changeListener"); Daniel@0: testedState.on("change", changeListener); Daniel@0: Daniel@0: expect(changeListener.calls.count()).toEqual(0); Daniel@0: Daniel@0: testedState.get("musicCollectionGrid").entityConfigs.add(new App.ContextModule.Config()); Daniel@0: expect(changeListener.calls.count()).toEqual(1); Daniel@0: changeListener.calls.reset(); Daniel@0: Daniel@0: testedState.get("musicRecordingGrid").entityConfigs.add(new App.ContextModule.Config()); Daniel@0: expect(changeListener.calls.count()).toEqual(1); Daniel@0: changeListener.calls.reset(); Daniel@0: Daniel@0: testedState.unserialize(serializedStates["empty"]); Daniel@0: expect(changeListener.calls.count()).toEqual(1); Daniel@0: changeListener.calls.reset(); Daniel@0: Daniel@0: testedState.unserialize(serializedStates["empty_faulty1"]); Daniel@0: expect(changeListener.calls.count()).toEqual(0); Daniel@0: changeListener.calls.reset(); Daniel@0: Daniel@0: testedState.unserialize(serializedStates["empty_incomplete1"]); Daniel@0: expect(changeListener.calls.count()).toEqual(0); Daniel@0: changeListener.calls.reset(); Daniel@0: Daniel@0: testedState.unserialize(serializedStates["1by1"]); Daniel@0: expect(changeListener.calls.count()).toEqual(1); Daniel@0: changeListener.calls.reset(); Daniel@0: testedState.unserialize(serializedStates["1by1"]); Daniel@0: expect(changeListener.calls.count()).toEqual(0); Daniel@0: changeListener.calls.reset(); Daniel@0: testedState.unserialize(serializedStates["1by1_incomplete1"]); Daniel@0: expect(changeListener.calls.count()).toEqual(0); Daniel@0: changeListener.calls.reset(); Daniel@0: }); Daniel@0: });