comparison src/DML/MainVisBundle/Resources/assets/jasmine/marionette/[t]ContextModule.40-AppContext.js @ 0:493bcb69166c

added public content
author Daniel Wolff
date Tue, 09 Feb 2016 20:54:02 +0100
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:493bcb69166c
1 "use strict";
2
3 describe("ContextModule.AppContext", function() {
4
5 var serializedAppContexts = {
6 "empty": {
7 "stateHistory": {
8 "currentSerializedState": {
9 "musicCollectionGrid": {
10 "entityConfigs": [],
11 "viewConfigs": [],
12 },
13 "musicRecordingGrid": {
14 "entityConfigs": [],
15 "viewConfigs": [],
16 }
17 },
18 "undoStack": [],
19 "redoStack": []
20 },
21 "stateBookmarks": []
22 },
23
24 "empty_faulty1": {
25 },
26 "empty_faulty2": 42,
27 "empty_faulty3": null,
28
29 "empty_incomplete1": {
30 "stateHistory": {
31 "currentSerializedState": {
32 "musicCollectionGrid": {
33 "entityConfigs": [],
34 "viewConfigs": [],
35 },
36 },
37 "redoStack": []
38 },
39 "stateBookmarks": []
40 },
41 "empty_incomplete2": {
42 "stateHistory": {
43 "currentSerializedState": null,
44 "undoStack": [],
45 "redoStack": []
46 },
47 "stateBookmarks": []
48 },
49 };
50
51 it("is promptly created", function() {
52 var testedAppContext = new App.ContextModule.AppContext();
53
54 expect(testedAppContext).not.toBe(null);
55
56 expect(testedAppContext.get("state")).not.toBe(null);
57 expect(testedAppContext.get("state") instanceof App.ContextModule.State).toBe(true);
58
59 expect(testedAppContext.get("stateHistory")).not.toBe(null);
60 expect(testedAppContext.get("stateHistory") instanceof App.ContextModule.StateHistory).toBe(true);
61
62 expect(testedAppContext.get("stateBookmarks")).not.toBe(null);
63 expect(testedAppContext.get("stateBookmarks") instanceof App.ContextModule.StateBookmarkCollection).toBe(true);
64
65 });
66
67 it("serializes and unserializes itself", function() {
68 var testedAppContext = new App.ContextModule.AppContext();
69
70 testedAppContext.unserialize(serializedAppContexts["empty"]);
71 expect(testedAppContext.serialize()).toEqual(serializedAppContexts["empty"]);
72
73 testedAppContext.unserialize(serializedAppContexts["empty_faulty1"]);
74 expect(testedAppContext.serialize()).toEqual(serializedAppContexts["empty"]);
75
76 testedAppContext.unserialize(serializedAppContexts["empty_faulty2"]);
77 expect(testedAppContext.serialize()).toEqual(serializedAppContexts["empty"]);
78
79 testedAppContext.unserialize(serializedAppContexts["empty_faulty3"]);
80 expect(testedAppContext.serialize()).toEqual(serializedAppContexts["empty"]);
81
82 testedAppContext.unserialize(serializedAppContexts["empty_incomplete1"]);
83 expect(testedAppContext.serialize()).toEqual(serializedAppContexts["empty"]);
84
85 testedAppContext.unserialize(serializedAppContexts["empty_incomplete2"]);
86 expect(testedAppContext.serialize()).toEqual(serializedAppContexts["empty"]);
87 });
88
89 it("triggers change events when something changes", function() {
90 var testedAppContext = new App.ContextModule.AppContext();
91
92 var spyNames = [
93 "change",
94 "changeState",
95 "changeStateHistory",
96 "changeStateBookmarks",
97 ];
98 var spy = jasmine.createSpyObj("listener", spyNames);
99 var expectSpyCallCount = function() {
100 _.each(arguments, function(arg, i) {
101 //console.log("___", i, "--->", spy[spyNames[i]].calls.count(), arg);
102 expect(spy[spyNames[i]].calls.count()).toEqual(arg);
103 });
104 for (var i = arguments.length; i < spyNames.length; i++) {
105 //console.log("___", i, "--->", spy[spyNames[i]].calls.count(), 0);
106 expect(spy[spyNames[i]].calls.count()).toEqual(0);
107 }
108 };
109 var resetSpyCallCount = function() {
110 _.each(spyNames, function(spyName) {
111 spy[spyName].calls.reset();
112 });
113 };
114 var expectSpyCallCountAndReset = function() {
115 expectSpyCallCount.apply(null, arguments);
116 resetSpyCallCount();
117 };
118
119 testedAppContext.on("change", spy["change"]);
120 testedAppContext.get("state").on("change", spy["changeState"]);
121 testedAppContext.get("stateHistory").on("change", spy["changeStateHistory"]);
122 testedAppContext.get("stateBookmarks").on("change", spy["changeStateBookmarks"]);
123
124 expectSpyCallCountAndReset(0);
125
126 testedAppContext.unserialize(serializedAppContexts["empty"]);
127 expectSpyCallCountAndReset(0);
128
129 testedAppContext.unserialize(serializedAppContexts["empty_faulty1"]);
130 expectSpyCallCountAndReset(0);
131 expect(testedAppContext.get("stateHistory").canUndo()).toEqual(false);
132 expect(testedAppContext.get("stateHistory").canRedo()).toEqual(false);
133
134 testedAppContext.get("state").get("musicCollectionGrid").entityConfigs.add(new App.ContextModule.Config({
135 "parameters": {
136 "x": 2,
137 "y": 3,
138 }
139 }));
140 expectSpyCallCountAndReset(1, 1, 1);
141 testedAppContext.get("state").get("musicCollectionGrid").entityConfigs.at(0).planParameterUpdate("x", 10);
142 expectSpyCallCountAndReset(1, 1, 1);
143 testedAppContext.get("state").get("musicCollectionGrid").entityConfigs.at(0).applyPlannedParameterUpdates();
144 expectSpyCallCountAndReset(1, 1, 1);
145 testedAppContext.get("state").get("musicCollectionGrid").entityConfigs.at(0).planParameterUpdate("x", 10);
146 expectSpyCallCountAndReset(0, 0, 0);
147 expect(testedAppContext.get("state").get("musicCollectionGrid").entityConfigs.at(0).getParameterValue("x")).toEqual(10);
148 expect(testedAppContext.get("state").get("musicCollectionGrid").entityConfigs.at(0).getPlannedParameterValue("x")).toEqual(10);
149 expect(testedAppContext.get("state").get("musicCollectionGrid").entityConfigs.at(0).isPlannedToUpdate("x")).toEqual(false);
150
151 testedAppContext.get("stateHistory").undo();
152 expectSpyCallCountAndReset(1, 1, 1);
153 expect(testedAppContext.get("stateHistory").canUndo()).toEqual(true);
154 expect(testedAppContext.get("stateHistory").canRedo()).toEqual(true);
155 expect(testedAppContext.get("state").get("musicCollectionGrid").entityConfigs.at(0).getParameterValue("x")).toEqual(2);
156 expect(testedAppContext.get("state").get("musicCollectionGrid").entityConfigs.at(0).getPlannedParameterValue("x")).toEqual(10);
157 expect(testedAppContext.get("state").get("musicCollectionGrid").entityConfigs.at(0).isPlannedToUpdate("x")).toEqual(true);
158
159 testedAppContext.get("stateHistory").undo();
160 testedAppContext.get("stateHistory").undo();
161 expectSpyCallCountAndReset(2, 2, 2);
162 expect(testedAppContext.get("stateHistory").canUndo()).toEqual(false);
163 expect(testedAppContext.get("stateHistory").canRedo()).toEqual(true);
164 expect(testedAppContext.get("state").get("musicCollectionGrid").entityConfigs.size()).toEqual(0);
165
166 testedAppContext.get("stateHistory").redo();
167 expectSpyCallCountAndReset(1, 1, 1);
168 expect(testedAppContext.get("stateHistory").canUndo()).toEqual(true);
169 expect(testedAppContext.get("stateHistory").canRedo()).toEqual(true);
170
171 testedAppContext.unserialize(serializedAppContexts["empty"]);
172 expectSpyCallCountAndReset(1, 1, 1);
173 expect(testedAppContext.get("stateHistory").canUndo()).toEqual(false);
174 expect(testedAppContext.get("stateHistory").canRedo()).toEqual(false);
175 });
176 });