diff src/DML/MainVisBundle/Resources/assets/jasmine/marionette/[t]ContextModule.11-State.js @ 0:493bcb69166c

added public content
author Daniel Wolff
date Tue, 09 Feb 2016 20:54:02 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/DML/MainVisBundle/Resources/assets/jasmine/marionette/[t]ContextModule.11-State.js	Tue Feb 09 20:54:02 2016 +0100
@@ -0,0 +1,158 @@
+"use strict";
+
+describe("ContextModule.State", function() {
+
+    var serializedStates = {
+            "empty": {
+                "musicCollectionGrid": {
+                    "entityConfigs": [],
+                    "viewConfigs": [],
+                },
+                "musicRecordingGrid": {
+                    "entityConfigs": [],
+                    "viewConfigs": [],
+                }
+            },
+
+            "empty_faulty1": {
+                
+            },
+            "empty_faulty2": 42,
+            "empty_faulty3": null,
+            
+            "empty_incomplete1": {
+                "musicCollectionGrid": {
+                    "entityConfigs": [],
+                    "viewConfigs": [],
+                },
+            },
+            "empty_incomplete2": {
+                "musicRecordingGrid": {
+                    "viewConfigs": [],
+                },
+            },
+
+            "1by1": {
+                "musicCollectionGrid": {
+                    "entityConfigs": [{clientId: "c10", parameters: {"ce": 1}, plannedParameterUpdates: {}}],
+                    "viewConfigs": [{clientId: "c20", parameters: {"cv": 2}, plannedParameterUpdates: {}}],
+                },
+                "musicRecordingGrid": {
+                    "entityConfigs": [{clientId: "c30", parameters: {"re": 3}, plannedParameterUpdates: {}}],
+                    "viewConfigs": [{clientId: "c40", parameters: {"rv": 4}, plannedParameterUpdates: {}}],
+                }
+            },
+            "1by1_faulty1": {
+                "musicCollectionGrid": {
+                    "entityConfigs": [{clientId: "c10", parameters: {"ce": 1}, plannedParameterUpdates: null}],
+                    "viewConfigs": [{clientId: "c20", parameters: {"cv": 2}, plannedParameterUpdates: {}}],
+                },
+                "musicRecordingGrid": {
+                    "entityConfigs": [{clientId: "c30", parameters: {"re": 3}, plannedParameterUpdates: 42}],
+                    "viewConfigs": [{clientId: "c40", parameters: {"rv": 4}, plannedParameterUpdates: {}}],
+                }
+            },
+            "1by1_incomplete1": {
+                "musicCollectionGrid": {
+                    "entityConfigs": [{clientId: "c10", parameters: {"ce": 1}, }],
+                    "viewConfigs": [{clientId: "c20", parameters: {"cv": 2}, plannedParameterUpdates: {}}],
+                },
+                "musicRecordingGrid": {
+                    "entityConfigs": [{clientId: "c30", parameters: {"re": 3}, }],
+                    "viewConfigs": [{clientId: "c40", parameters: {"rv": 4}, plannedParameterUpdates: {}}],
+                }
+            },
+            
+    };
+    
+    it("is promptly created", function() {
+        var testedState = new App.ContextModule.State();
+        
+        expect(testedState).not.toBe(null);
+        
+        expect(testedState.get("musicCollectionGrid")).not.toBe(null);
+        expect(testedState.get("musicCollectionGrid") instanceof App.ContextModule.ConfigGrid).toBe(true);
+
+        expect(testedState.get("musicRecordingGrid")).not.toBe(null);
+        expect(testedState.get("musicRecordingGrid") instanceof App.ContextModule.ConfigGrid).toBe(true);
+        
+    });
+
+    it("serializes and unserializes itself", function() {
+        var testedState = new App.ContextModule.State();
+        
+        testedState.unserialize(serializedStates["empty"]);
+        expect(testedState.serialize()).toEqual(serializedStates["empty"]);
+        
+        testedState.unserialize(serializedStates["empty_faulty1"]);
+        expect(testedState.serialize()).toEqual(serializedStates["empty"]);
+        
+        testedState.unserialize(serializedStates["empty_faulty2"]);
+        expect(testedState.serialize()).toEqual(serializedStates["empty"]);
+        
+        testedState.unserialize(serializedStates["empty_faulty3"]);
+        expect(testedState.serialize()).toEqual(serializedStates["empty"]);
+        
+        testedState.unserialize(serializedStates["empty_incomplete1"]);
+        expect(testedState.serialize()).toEqual(serializedStates["empty"]);
+
+        testedState.unserialize(serializedStates["empty_incomplete2"]);
+        expect(testedState.serialize()).toEqual(serializedStates["empty"]);
+        
+        testedState.unserialize(serializedStates["1by1"]);
+        expect(testedState.serialize()).toEqual(serializedStates["1by1"]);
+
+        testedState.unserialize(serializedStates["1by1_faulty1"]);
+        expect(testedState.serialize()).toEqual(serializedStates["1by1"]);
+
+        testedState.unserialize(serializedStates["1by1_incomplete1"]);
+        expect(testedState.serialize()).toEqual(serializedStates["1by1"]);
+    });
+    
+    xit("returns grid by type", function() {
+        
+    });
+    
+    xit("works with property musicRecordingsGridIsShown", function() {
+        
+    });
+    
+    it("triggers change event when when config grids change", function() {
+        var testedState = new App.ContextModule.State();
+        
+        var changeListener = jasmine.createSpy("changeListener");
+        testedState.on("change", changeListener);
+        
+        expect(changeListener.calls.count()).toEqual(0);
+        
+        testedState.get("musicCollectionGrid").entityConfigs.add(new App.ContextModule.Config());
+        expect(changeListener.calls.count()).toEqual(1);
+        changeListener.calls.reset();
+
+        testedState.get("musicRecordingGrid").entityConfigs.add(new App.ContextModule.Config());
+        expect(changeListener.calls.count()).toEqual(1);
+        changeListener.calls.reset();
+        
+        testedState.unserialize(serializedStates["empty"]);
+        expect(changeListener.calls.count()).toEqual(1);
+        changeListener.calls.reset();
+
+        testedState.unserialize(serializedStates["empty_faulty1"]);
+        expect(changeListener.calls.count()).toEqual(0);
+        changeListener.calls.reset();
+
+        testedState.unserialize(serializedStates["empty_incomplete1"]);
+        expect(changeListener.calls.count()).toEqual(0);
+        changeListener.calls.reset();
+
+        testedState.unserialize(serializedStates["1by1"]);
+        expect(changeListener.calls.count()).toEqual(1);
+        changeListener.calls.reset();
+        testedState.unserialize(serializedStates["1by1"]);
+        expect(changeListener.calls.count()).toEqual(0);
+        changeListener.calls.reset();
+        testedState.unserialize(serializedStates["1by1_incomplete1"]);
+        expect(changeListener.calls.count()).toEqual(0);
+        changeListener.calls.reset();
+    });
+});