@vived/host 4.0.3 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/dist/cjs/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.js +24 -0
  2. package/dist/cjs/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.js.map +1 -0
  3. package/dist/cjs/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.test.js +30 -0
  4. package/dist/cjs/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.test.js.map +1 -0
  5. package/dist/cjs/ChallengeResults/Adapters/index.js +1 -0
  6. package/dist/cjs/ChallengeResults/Adapters/index.js.map +1 -1
  7. package/dist/cjs/ChallengeResults/Factories/index.js +1 -1
  8. package/dist/cjs/ChallengeResults/Factories/index.js.map +1 -1
  9. package/dist/cjs/ChallengeResults/Factories/setupChallengeResults.js +14 -0
  10. package/dist/cjs/ChallengeResults/Factories/setupChallengeResults.js.map +1 -0
  11. package/dist/cjs/ChallengeResults/Factories/setupChallengeResultsForSandbox.js +1 -0
  12. package/dist/cjs/ChallengeResults/Factories/setupChallengeResultsForSandbox.js.map +1 -1
  13. package/dist/cjs/ChallengeResults/Mocks/MockHasChallengeResultsPM.js +16 -0
  14. package/dist/cjs/ChallengeResults/Mocks/MockHasChallengeResultsPM.js.map +1 -0
  15. package/dist/cjs/ChallengeResults/Mocks/index.js +1 -0
  16. package/dist/cjs/ChallengeResults/Mocks/index.js.map +1 -1
  17. package/dist/cjs/ChallengeResults/PMs/ChallengeResultsListPM.js +2 -0
  18. package/dist/cjs/ChallengeResults/PMs/ChallengeResultsListPM.js.map +1 -1
  19. package/dist/cjs/ChallengeResults/PMs/ChallengeResultsListPM.test.js +4 -2
  20. package/dist/cjs/ChallengeResults/PMs/ChallengeResultsListPM.test.js.map +1 -1
  21. package/dist/cjs/ChallengeResults/PMs/HasChallengeResultsPM.js +37 -0
  22. package/dist/cjs/ChallengeResults/PMs/HasChallengeResultsPM.js.map +1 -0
  23. package/dist/cjs/ChallengeResults/PMs/HasChallengeResultsPM.test.js +32 -0
  24. package/dist/cjs/ChallengeResults/PMs/HasChallengeResultsPM.test.js.map +1 -0
  25. package/dist/cjs/ChallengeResults/PMs/index.js +1 -0
  26. package/dist/cjs/ChallengeResults/PMs/index.js.map +1 -1
  27. package/dist/cjs/StateMachine/Adapters/hostStateAdapter.js +24 -0
  28. package/dist/cjs/StateMachine/Adapters/hostStateAdapter.js.map +1 -0
  29. package/dist/cjs/StateMachine/Adapters/hostStateAdapter.test.js +49 -0
  30. package/dist/cjs/StateMachine/Adapters/hostStateAdapter.test.js.map +1 -0
  31. package/dist/cjs/StateMachine/Adapters/index.js +1 -0
  32. package/dist/cjs/StateMachine/Adapters/index.js.map +1 -1
  33. package/dist/cjs/StateMachine/Controllers/editStateName.js +13 -0
  34. package/dist/cjs/StateMachine/Controllers/editStateName.js.map +1 -0
  35. package/dist/cjs/StateMachine/Controllers/editStateName.test.js +49 -0
  36. package/dist/cjs/StateMachine/Controllers/editStateName.test.js.map +1 -0
  37. package/dist/cjs/StateMachine/Controllers/index.js +1 -0
  38. package/dist/cjs/StateMachine/Controllers/index.js.map +1 -1
  39. package/dist/cjs/StateMachine/Entities/HostStateMachine.js +67 -24
  40. package/dist/cjs/StateMachine/Entities/HostStateMachine.js.map +1 -1
  41. package/dist/cjs/StateMachine/Entities/HostStateMachine.test.js +174 -0
  42. package/dist/cjs/StateMachine/Entities/HostStateMachine.test.js.map +1 -1
  43. package/dist/cjs/StateMachine/Mocks/MockEditStateNameUC.js +12 -0
  44. package/dist/cjs/StateMachine/Mocks/MockEditStateNameUC.js.map +1 -0
  45. package/dist/cjs/StateMachine/Mocks/MockHostStatePM.js +23 -0
  46. package/dist/cjs/StateMachine/Mocks/MockHostStatePM.js.map +1 -0
  47. package/dist/cjs/StateMachine/PMs/HostStateMachinePM.js +21 -15
  48. package/dist/cjs/StateMachine/PMs/HostStateMachinePM.js.map +1 -1
  49. package/dist/cjs/StateMachine/PMs/HostStateMachinePM.test.js +65 -56
  50. package/dist/cjs/StateMachine/PMs/HostStateMachinePM.test.js.map +1 -1
  51. package/dist/cjs/StateMachine/PMs/HostStatePM.js +136 -0
  52. package/dist/cjs/StateMachine/PMs/HostStatePM.js.map +1 -0
  53. package/dist/cjs/StateMachine/PMs/HostStatePM.test.js +405 -0
  54. package/dist/cjs/StateMachine/PMs/HostStatePM.test.js.map +1 -0
  55. package/dist/cjs/StateMachine/PMs/index.js +1 -0
  56. package/dist/cjs/StateMachine/PMs/index.js.map +1 -1
  57. package/dist/cjs/StateMachine/UCs/EditStateNameUC.js +35 -0
  58. package/dist/cjs/StateMachine/UCs/EditStateNameUC.js.map +1 -0
  59. package/dist/cjs/StateMachine/UCs/EditStateNameUC.test.js +58 -0
  60. package/dist/cjs/StateMachine/UCs/EditStateNameUC.test.js.map +1 -0
  61. package/dist/cjs/StateMachine/UCs/index.js +1 -0
  62. package/dist/cjs/StateMachine/UCs/index.js.map +1 -1
  63. package/dist/cjs/ThemeColors/Factories/index.js +1 -1
  64. package/dist/cjs/ThemeColors/Factories/index.js.map +1 -1
  65. package/dist/cjs/ThemeColors/Factories/setupTheme.js +20 -0
  66. package/dist/cjs/ThemeColors/Factories/setupTheme.js.map +1 -0
  67. package/dist/cjs/ThemeColors/UCs/SetThemeUC.js +1 -1
  68. package/dist/cjs/ThemeColors/UCs/SetThemeUC.js.map +1 -1
  69. package/dist/esm/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.js +21 -0
  70. package/dist/esm/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.js.map +1 -0
  71. package/dist/esm/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.test.js +28 -0
  72. package/dist/esm/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.test.js.map +1 -0
  73. package/dist/esm/ChallengeResults/Adapters/index.js +1 -0
  74. package/dist/esm/ChallengeResults/Adapters/index.js.map +1 -1
  75. package/dist/esm/ChallengeResults/Factories/index.js +1 -1
  76. package/dist/esm/ChallengeResults/Factories/index.js.map +1 -1
  77. package/dist/esm/ChallengeResults/Factories/setupChallengeResults.js +11 -0
  78. package/dist/esm/ChallengeResults/Factories/setupChallengeResults.js.map +1 -0
  79. package/dist/esm/ChallengeResults/Factories/setupChallengeResultsForSandbox.js +2 -1
  80. package/dist/esm/ChallengeResults/Factories/setupChallengeResultsForSandbox.js.map +1 -1
  81. package/dist/esm/ChallengeResults/Mocks/MockHasChallengeResultsPM.js +11 -0
  82. package/dist/esm/ChallengeResults/Mocks/MockHasChallengeResultsPM.js.map +1 -0
  83. package/dist/esm/ChallengeResults/Mocks/index.js +1 -0
  84. package/dist/esm/ChallengeResults/Mocks/index.js.map +1 -1
  85. package/dist/esm/ChallengeResults/PMs/ChallengeResultsListPM.js +2 -0
  86. package/dist/esm/ChallengeResults/PMs/ChallengeResultsListPM.js.map +1 -1
  87. package/dist/esm/ChallengeResults/PMs/ChallengeResultsListPM.test.js +4 -2
  88. package/dist/esm/ChallengeResults/PMs/ChallengeResultsListPM.test.js.map +1 -1
  89. package/dist/esm/ChallengeResults/PMs/HasChallengeResultsPM.js +32 -0
  90. package/dist/esm/ChallengeResults/PMs/HasChallengeResultsPM.js.map +1 -0
  91. package/dist/esm/ChallengeResults/PMs/HasChallengeResultsPM.test.js +30 -0
  92. package/dist/esm/ChallengeResults/PMs/HasChallengeResultsPM.test.js.map +1 -0
  93. package/dist/esm/ChallengeResults/PMs/index.js +1 -0
  94. package/dist/esm/ChallengeResults/PMs/index.js.map +1 -1
  95. package/dist/esm/StateMachine/Adapters/hostStateAdapter.js +21 -0
  96. package/dist/esm/StateMachine/Adapters/hostStateAdapter.js.map +1 -0
  97. package/dist/esm/StateMachine/Adapters/hostStateAdapter.test.js +47 -0
  98. package/dist/esm/StateMachine/Adapters/hostStateAdapter.test.js.map +1 -0
  99. package/dist/esm/StateMachine/Adapters/index.js +1 -0
  100. package/dist/esm/StateMachine/Adapters/index.js.map +1 -1
  101. package/dist/esm/StateMachine/Controllers/editStateName.js +10 -0
  102. package/dist/esm/StateMachine/Controllers/editStateName.js.map +1 -0
  103. package/dist/esm/StateMachine/Controllers/editStateName.test.js +47 -0
  104. package/dist/esm/StateMachine/Controllers/editStateName.test.js.map +1 -0
  105. package/dist/esm/StateMachine/Controllers/index.js +1 -0
  106. package/dist/esm/StateMachine/Controllers/index.js.map +1 -1
  107. package/dist/esm/StateMachine/Entities/HostStateMachine.js +67 -24
  108. package/dist/esm/StateMachine/Entities/HostStateMachine.js.map +1 -1
  109. package/dist/esm/StateMachine/Entities/HostStateMachine.test.js +174 -0
  110. package/dist/esm/StateMachine/Entities/HostStateMachine.test.js.map +1 -1
  111. package/dist/esm/StateMachine/Mocks/MockEditStateNameUC.js +8 -0
  112. package/dist/esm/StateMachine/Mocks/MockEditStateNameUC.js.map +1 -0
  113. package/dist/esm/StateMachine/Mocks/MockHostStatePM.js +18 -0
  114. package/dist/esm/StateMachine/Mocks/MockHostStatePM.js.map +1 -0
  115. package/dist/esm/StateMachine/PMs/HostStateMachinePM.js +21 -15
  116. package/dist/esm/StateMachine/PMs/HostStateMachinePM.js.map +1 -1
  117. package/dist/esm/StateMachine/PMs/HostStateMachinePM.test.js +65 -56
  118. package/dist/esm/StateMachine/PMs/HostStateMachinePM.test.js.map +1 -1
  119. package/dist/esm/StateMachine/PMs/HostStatePM.js +131 -0
  120. package/dist/esm/StateMachine/PMs/HostStatePM.js.map +1 -0
  121. package/dist/esm/StateMachine/PMs/HostStatePM.test.js +403 -0
  122. package/dist/esm/StateMachine/PMs/HostStatePM.test.js.map +1 -0
  123. package/dist/esm/StateMachine/PMs/index.js +1 -0
  124. package/dist/esm/StateMachine/PMs/index.js.map +1 -1
  125. package/dist/esm/StateMachine/UCs/EditStateNameUC.js +30 -0
  126. package/dist/esm/StateMachine/UCs/EditStateNameUC.js.map +1 -0
  127. package/dist/esm/StateMachine/UCs/EditStateNameUC.test.js +56 -0
  128. package/dist/esm/StateMachine/UCs/EditStateNameUC.test.js.map +1 -0
  129. package/dist/esm/StateMachine/UCs/index.js +1 -0
  130. package/dist/esm/StateMachine/UCs/index.js.map +1 -1
  131. package/dist/esm/ThemeColors/Factories/index.js +1 -1
  132. package/dist/esm/ThemeColors/Factories/index.js.map +1 -1
  133. package/dist/esm/ThemeColors/Factories/setupTheme.js +17 -0
  134. package/dist/esm/ThemeColors/Factories/setupTheme.js.map +1 -0
  135. package/dist/esm/ThemeColors/UCs/SetThemeUC.js +1 -1
  136. package/dist/esm/ThemeColors/UCs/SetThemeUC.js.map +1 -1
  137. package/dist/types/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.d.ts +3 -0
  138. package/dist/types/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.d.ts.map +1 -0
  139. package/dist/types/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.test.d.ts +2 -0
  140. package/dist/types/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.test.d.ts.map +1 -0
  141. package/dist/types/ChallengeResults/Adapters/index.d.ts +1 -0
  142. package/dist/types/ChallengeResults/Adapters/index.d.ts.map +1 -1
  143. package/dist/types/ChallengeResults/Factories/index.d.ts +1 -1
  144. package/dist/types/ChallengeResults/Factories/index.d.ts.map +1 -1
  145. package/dist/types/ChallengeResults/Factories/setupChallengeResults.d.ts +4 -0
  146. package/dist/types/ChallengeResults/Factories/setupChallengeResults.d.ts.map +1 -0
  147. package/dist/types/ChallengeResults/Factories/setupChallengeResultsForSandbox.d.ts.map +1 -1
  148. package/dist/types/ChallengeResults/Mocks/MockHasChallengeResultsPM.d.ts +8 -0
  149. package/dist/types/ChallengeResults/Mocks/MockHasChallengeResultsPM.d.ts.map +1 -0
  150. package/dist/types/ChallengeResults/Mocks/index.d.ts +1 -0
  151. package/dist/types/ChallengeResults/Mocks/index.d.ts.map +1 -1
  152. package/dist/types/ChallengeResults/PMs/ChallengeResultsListPM.d.ts +1 -0
  153. package/dist/types/ChallengeResults/PMs/ChallengeResultsListPM.d.ts.map +1 -1
  154. package/dist/types/ChallengeResults/PMs/HasChallengeResultsPM.d.ts +7 -0
  155. package/dist/types/ChallengeResults/PMs/HasChallengeResultsPM.d.ts.map +1 -0
  156. package/dist/types/ChallengeResults/PMs/HasChallengeResultsPM.test.d.ts +2 -0
  157. package/dist/types/ChallengeResults/PMs/HasChallengeResultsPM.test.d.ts.map +1 -0
  158. package/dist/types/ChallengeResults/PMs/index.d.ts +1 -0
  159. package/dist/types/ChallengeResults/PMs/index.d.ts.map +1 -1
  160. package/dist/types/StateMachine/Adapters/hostStateAdapter.d.ts +4 -0
  161. package/dist/types/StateMachine/Adapters/hostStateAdapter.d.ts.map +1 -0
  162. package/dist/types/StateMachine/Adapters/hostStateAdapter.test.d.ts +2 -0
  163. package/dist/types/StateMachine/Adapters/hostStateAdapter.test.d.ts.map +1 -0
  164. package/dist/types/StateMachine/Adapters/index.d.ts +1 -0
  165. package/dist/types/StateMachine/Adapters/index.d.ts.map +1 -1
  166. package/dist/types/StateMachine/Controllers/editStateName.d.ts +3 -0
  167. package/dist/types/StateMachine/Controllers/editStateName.d.ts.map +1 -0
  168. package/dist/types/StateMachine/Controllers/editStateName.test.d.ts +2 -0
  169. package/dist/types/StateMachine/Controllers/editStateName.test.d.ts.map +1 -0
  170. package/dist/types/StateMachine/Controllers/index.d.ts +1 -0
  171. package/dist/types/StateMachine/Controllers/index.d.ts.map +1 -1
  172. package/dist/types/StateMachine/Entities/HostStateMachine.d.ts +6 -0
  173. package/dist/types/StateMachine/Entities/HostStateMachine.d.ts.map +1 -1
  174. package/dist/types/StateMachine/Mocks/MockEditStateNameUC.d.ts +7 -0
  175. package/dist/types/StateMachine/Mocks/MockEditStateNameUC.d.ts.map +1 -0
  176. package/dist/types/StateMachine/Mocks/MockHostStatePM.d.ts +9 -0
  177. package/dist/types/StateMachine/Mocks/MockHostStatePM.d.ts.map +1 -0
  178. package/dist/types/StateMachine/PMs/HostStateMachinePM.d.ts +3 -4
  179. package/dist/types/StateMachine/PMs/HostStateMachinePM.d.ts.map +1 -1
  180. package/dist/types/StateMachine/PMs/HostStatePM.d.ts +18 -0
  181. package/dist/types/StateMachine/PMs/HostStatePM.d.ts.map +1 -0
  182. package/dist/types/StateMachine/PMs/HostStatePM.test.d.ts +2 -0
  183. package/dist/types/StateMachine/PMs/HostStatePM.test.d.ts.map +1 -0
  184. package/dist/types/StateMachine/PMs/index.d.ts +1 -0
  185. package/dist/types/StateMachine/PMs/index.d.ts.map +1 -1
  186. package/dist/types/StateMachine/UCs/EditStateNameUC.d.ts +9 -0
  187. package/dist/types/StateMachine/UCs/EditStateNameUC.d.ts.map +1 -0
  188. package/dist/types/StateMachine/UCs/EditStateNameUC.test.d.ts +2 -0
  189. package/dist/types/StateMachine/UCs/EditStateNameUC.test.d.ts.map +1 -0
  190. package/dist/types/StateMachine/UCs/index.d.ts +1 -0
  191. package/dist/types/StateMachine/UCs/index.d.ts.map +1 -1
  192. package/dist/types/ThemeColors/Factories/index.d.ts +1 -1
  193. package/dist/types/ThemeColors/Factories/index.d.ts.map +1 -1
  194. package/dist/types/ThemeColors/Factories/setupTheme.d.ts +3 -0
  195. package/dist/types/ThemeColors/Factories/setupTheme.d.ts.map +1 -0
  196. package/package.json +1 -1
@@ -36,48 +36,82 @@ describe("Host State Machine Presentation Manager", () => {
36
36
  stateMachine.setActiveStateByID("state1");
37
37
  const vm = pm.lastVM;
38
38
  expect(vm.activeSlideID).toEqual("state1");
39
+ expect(vm.activeSlideName).toEqual("State 1");
39
40
  expect(vm.previousSlideID).toBeUndefined();
40
41
  expect(vm.nextSlideID).toEqual("state2");
41
42
  expect(vm.states).toHaveLength(3);
43
+ expect(vm.states).toEqual(["state1", "state2", "state3"]);
44
+ expect(vm.isSingleSlide).toEqual(false);
42
45
  });
43
46
  it("Checks for equal vms", () => {
44
47
  const { pm } = makeTestRig();
45
48
  const vm1 = {
46
49
  activeSlideID: "activeSlideID",
50
+ activeSlideName: "Active Slide",
47
51
  nextSlideID: "newSlideID",
48
52
  previousSlideID: "previousSlideID",
49
- states: [
50
- { id: "state1", name: "State 1" },
51
- { id: "state2", name: "State 2" }
52
- ]
53
+ states: ["state1", "state2"],
54
+ isSingleSlide: false
53
55
  };
54
56
  const vm2 = { ...vm1 };
55
57
  expect(pm.vmsAreEqual(vm1, vm2)).toEqual(true);
56
58
  });
59
+ it("Sets isSingleSlide to true when there is only one state", () => {
60
+ const { pm, stateMachine } = makeTestRig();
61
+ stateMachine.setStates([stateMachine.getStateByID("state1")]);
62
+ const vm = pm.lastVM;
63
+ expect(vm.states).toHaveLength(1);
64
+ expect(vm.states).toEqual(["state1"]);
65
+ expect(vm.isSingleSlide).toEqual(true);
66
+ });
67
+ it("Checks for a change in isSingleSlide", () => {
68
+ const { pm } = makeTestRig();
69
+ const vm1 = {
70
+ activeSlideID: "activeSlideID",
71
+ activeSlideName: "Active Slide",
72
+ nextSlideID: "newSlideID",
73
+ previousSlideID: "previousSlideID",
74
+ states: ["state1"],
75
+ isSingleSlide: true
76
+ };
77
+ const vm2 = { ...vm1, isSingleSlide: false };
78
+ expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);
79
+ });
57
80
  it("Checks for a change in the active slide", () => {
58
81
  const { pm } = makeTestRig();
59
82
  const vm1 = {
60
83
  activeSlideID: "activeSlideID",
84
+ activeSlideName: "Active Slide",
61
85
  nextSlideID: "newSlideID",
62
86
  previousSlideID: "previousSlideID",
63
- states: [
64
- { id: "state1", name: "State 1" },
65
- { id: "state2", name: "State 2" }
66
- ]
87
+ states: ["state1", "state2"],
88
+ isSingleSlide: false
67
89
  };
68
90
  const vm2 = { ...vm1, activeSlideID: "CHANGED" };
69
91
  expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);
70
92
  });
93
+ it("Checks for a change in the active slide name", () => {
94
+ const { pm } = makeTestRig();
95
+ const vm1 = {
96
+ activeSlideID: "activeSlideID",
97
+ activeSlideName: "Active Slide",
98
+ nextSlideID: "newSlideID",
99
+ previousSlideID: "previousSlideID",
100
+ states: ["state1", "state2"],
101
+ isSingleSlide: false
102
+ };
103
+ const vm2 = { ...vm1, activeSlideName: "CHANGED" };
104
+ expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);
105
+ });
71
106
  it("Checks for a change in the next slide", () => {
72
107
  const { pm } = makeTestRig();
73
108
  const vm1 = {
74
109
  activeSlideID: "activeSlideID",
110
+ activeSlideName: "Active Slide",
75
111
  nextSlideID: "newSlideID",
76
112
  previousSlideID: "previousSlideID",
77
- states: [
78
- { id: "state1", name: "State 1" },
79
- { id: "state2", name: "State 2" }
80
- ]
113
+ states: ["state1", "state2"],
114
+ isSingleSlide: false
81
115
  };
82
116
  const vm2 = { ...vm1, nextSlideID: "CHANGED" };
83
117
  expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);
@@ -86,12 +120,11 @@ describe("Host State Machine Presentation Manager", () => {
86
120
  const { pm } = makeTestRig();
87
121
  const vm1 = {
88
122
  activeSlideID: "activeSlideID",
123
+ activeSlideName: "Active Slide",
89
124
  nextSlideID: "newSlideID",
90
125
  previousSlideID: "previousSlideID",
91
- states: [
92
- { id: "state1", name: "State 1" },
93
- { id: "state2", name: "State 2" }
94
- ]
126
+ states: ["state1", "state2"],
127
+ isSingleSlide: false
95
128
  };
96
129
  const vm2 = { ...vm1, previousSlideID: "CHANGED" };
97
130
  expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);
@@ -100,20 +133,16 @@ describe("Host State Machine Presentation Manager", () => {
100
133
  const { pm } = makeTestRig();
101
134
  const vm1 = {
102
135
  activeSlideID: "activeSlideID",
136
+ activeSlideName: "Active Slide",
103
137
  nextSlideID: "newSlideID",
104
138
  previousSlideID: "previousSlideID",
105
- states: [
106
- { id: "state1", name: "State 1" },
107
- { id: "state2", name: "State 2" }
108
- ]
139
+ states: ["state1", "state2"],
140
+ isSingleSlide: false
109
141
  };
110
142
  const vm2 = {
111
143
  ...vm1,
112
- states: [
113
- { id: "state1", name: "State 1" },
114
- { id: "state2", name: "State 2" },
115
- { id: "state3", name: "State 3" }
116
- ]
144
+ states: ["state1", "state2", "state3"],
145
+ isSingleSlide: false
117
146
  };
118
147
  expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);
119
148
  });
@@ -121,53 +150,33 @@ describe("Host State Machine Presentation Manager", () => {
121
150
  const { pm } = makeTestRig();
122
151
  const vm1 = {
123
152
  activeSlideID: "activeSlideID",
153
+ activeSlideName: "Active Slide",
124
154
  nextSlideID: "newSlideID",
125
155
  previousSlideID: "previousSlideID",
126
- states: [
127
- { id: "state1", name: "State 1" },
128
- { id: "state2", name: "State 2" }
129
- ]
130
- };
131
- const vm2 = { ...vm1, states: [{ id: "state1", name: "State 1" }] };
132
- expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);
133
- });
134
- it("Checks for state to be renamed", () => {
135
- const { pm } = makeTestRig();
136
- const vm1 = {
137
- activeSlideID: "activeSlideID",
138
- nextSlideID: "newSlideID",
139
- previousSlideID: "previousSlideID",
140
- states: [
141
- { id: "state1", name: "State 1" },
142
- { id: "state2", name: "State 2" }
143
- ]
156
+ states: ["state1", "state2"],
157
+ isSingleSlide: false
144
158
  };
145
159
  const vm2 = {
146
160
  ...vm1,
147
- states: [
148
- { id: "state1", name: "State 1" },
149
- { id: "state2", name: "RENAMED" }
150
- ]
161
+ states: ["state1"],
162
+ isSingleSlide: true
151
163
  };
152
164
  expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);
153
165
  });
154
- it("Checks for state to have a different it", () => {
166
+ it("Checks for state order to change", () => {
155
167
  const { pm } = makeTestRig();
156
168
  const vm1 = {
157
169
  activeSlideID: "activeSlideID",
170
+ activeSlideName: "Active Slide",
158
171
  nextSlideID: "newSlideID",
159
172
  previousSlideID: "previousSlideID",
160
- states: [
161
- { id: "state1", name: "State 1" },
162
- { id: "state2", name: "State 2" }
163
- ]
173
+ states: ["state1", "state2"],
174
+ isSingleSlide: false
164
175
  };
165
176
  const vm2 = {
166
177
  ...vm1,
167
- states: [
168
- { id: "state1", name: "State 1" },
169
- { id: "CHANGED", name: "State 2" }
170
- ]
178
+ states: ["state2", "state1"],
179
+ isSingleSlide: false
171
180
  };
172
181
  expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);
173
182
  });
@@ -1 +1 @@
1
- {"version":3,"file":"HostStateMachinePM.test.js","sourceRoot":"","sources":["../../../../src/StateMachine/PMs/HostStateMachinePM.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAGL,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAE9B,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IAEzE,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAE9C,MAAM,MAAM,GAAG,mBAAmB,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrE,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;IAExB,MAAM,MAAM,GAAG,mBAAmB,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrE,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;IAExB,MAAM,MAAM,GAAG,mBAAmB,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrE,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;IAExB,YAAY,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAE1C,MAAM,EAAE,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAEtC,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,oBAAoB,EAAE,UAAU,EAAE,CAAC;AAChE,CAAC;AAED,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACvD,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC7B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,EAAE,oBAAoB,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QACnD,MAAM,CAAC,oBAAoB,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,WAAW,EAAE,CAAC;QAE3C,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAE1C,MAAM,EAAE,GAAG,EAAE,CAAC,MAA4B,CAAC;QAC3C,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,aAAa,EAAE,CAAC;QAC3C,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,GAAG,GAAuB;YAC9B,aAAa,EAAE,eAAe;YAC9B,WAAW,EAAE,YAAY;YACzB,eAAe,EAAE,iBAAiB;YAClC,MAAM,EAAE;gBACN,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;gBACjC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;aAClC;SACF,CAAC;QAEF,MAAM,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;QAEvB,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,GAAG,GAAuB;YAC9B,aAAa,EAAE,eAAe;YAC9B,WAAW,EAAE,YAAY;YACzB,eAAe,EAAE,iBAAiB;YAClC,MAAM,EAAE;gBACN,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;gBACjC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;aAClC;SACF,CAAC;QAEF,MAAM,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC;QAEjD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,GAAG,GAAuB;YAC9B,aAAa,EAAE,eAAe;YAC9B,WAAW,EAAE,YAAY;YACzB,eAAe,EAAE,iBAAiB;YAClC,MAAM,EAAE;gBACN,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;gBACjC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;aAClC;SACF,CAAC;QAEF,MAAM,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;QAE/C,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,GAAG,GAAuB;YAC9B,aAAa,EAAE,eAAe;YAC9B,WAAW,EAAE,YAAY;YACzB,eAAe,EAAE,iBAAiB;YAClC,MAAM,EAAE;gBACN,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;gBACjC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;aAClC;SACF,CAAC;QAEF,MAAM,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;QAEnD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,GAAG,GAAuB;YAC9B,aAAa,EAAE,eAAe;YAC9B,WAAW,EAAE,YAAY;YACzB,eAAe,EAAE,iBAAiB;YAClC,MAAM,EAAE;gBACN,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;gBACjC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;aAClC;SACF,CAAC;QAEF,MAAM,GAAG,GAAG;YACV,GAAG,GAAG;YACN,MAAM,EAAE;gBACN,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;gBACjC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;gBACjC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;aAClC;SACF,CAAC;QAEF,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,GAAG,GAAuB;YAC9B,aAAa,EAAE,eAAe;YAC9B,WAAW,EAAE,YAAY;YACzB,eAAe,EAAE,iBAAiB;YAClC,MAAM,EAAE;gBACN,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;gBACjC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;aAClC;SACF,CAAC;QAEF,MAAM,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;QAEpE,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,GAAG,GAAuB;YAC9B,aAAa,EAAE,eAAe;YAC9B,WAAW,EAAE,YAAY;YACzB,eAAe,EAAE,iBAAiB;YAClC,MAAM,EAAE;gBACN,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;gBACjC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;aAClC;SACF,CAAC;QAEF,MAAM,GAAG,GAAG;YACV,GAAG,GAAG;YACN,MAAM,EAAE;gBACN,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;gBACjC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;aAClC;SACF,CAAC;QAEF,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,GAAG,GAAuB;YAC9B,aAAa,EAAE,eAAe;YAC9B,WAAW,EAAE,YAAY;YACzB,eAAe,EAAE,iBAAiB;YAClC,MAAM,EAAE;gBACN,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;gBACjC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;aAClC;SACF,CAAC;QAEF,MAAM,GAAG,GAAG;YACV,GAAG,GAAG;YACN,MAAM,EAAE;gBACN,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;gBACjC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;aACnC;SACF,CAAC;QAEF,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { makeHostStateEntity } from \"../Entities\";\r\nimport { makeHostStateMachine } from \"../Entities/HostStateMachine\";\r\nimport {\r\n HostStateMachinePM,\r\n HostStateMachineVM,\r\n makeHostStateMachinePM\r\n} from \"./HostStateMachinePM\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const registerSingletonSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n\r\n const ao = appObjects.getOrCreate(\"AO\");\r\n const stateMachine = makeHostStateMachine(ao);\r\n\r\n const state1 = makeHostStateEntity(appObjects.getOrCreate(\"state1\"));\r\n state1.name = \"State 1\";\r\n\r\n const state2 = makeHostStateEntity(appObjects.getOrCreate(\"state2\"));\r\n state2.name = \"State 2\";\r\n\r\n const state3 = makeHostStateEntity(appObjects.getOrCreate(\"state3\"));\r\n state3.name = \"State 3\";\r\n\r\n stateMachine.setStates([state1, state2, state3]);\r\n stateMachine.setActiveStateByID(\"state2\");\r\n\r\n const pm = makeHostStateMachinePM(ao);\r\n\r\n return { stateMachine, pm, registerSingletonSpy, appObjects };\r\n}\r\n\r\ndescribe(\"Host State Machine Presentation Manager\", () => {\r\n it(\"Initializes the last vm\", () => {\r\n const { pm } = makeTestRig();\r\n expect(pm.lastVM).not.toBeUndefined();\r\n });\r\n\r\n it(\"Registers as the singleton\", () => {\r\n const { registerSingletonSpy, pm } = makeTestRig();\r\n expect(registerSingletonSpy).toBeCalledWith(pm);\r\n });\r\n\r\n it(\"Initializes the VM\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n expect(pm).not.toBeUndefined();\r\n });\r\n\r\n it(\"Updates if the entity changes\", () => {\r\n const { pm, stateMachine } = makeTestRig();\r\n\r\n stateMachine.setActiveStateByID(\"state1\");\r\n\r\n const vm = pm.lastVM as HostStateMachineVM;\r\n expect(vm.activeSlideID).toEqual(\"state1\");\r\n expect(vm.previousSlideID).toBeUndefined();\r\n expect(vm.nextSlideID).toEqual(\"state2\");\r\n expect(vm.states).toHaveLength(3);\r\n });\r\n\r\n it(\"Checks for equal vms\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const vm1: HostStateMachineVM = {\r\n activeSlideID: \"activeSlideID\",\r\n nextSlideID: \"newSlideID\",\r\n previousSlideID: \"previousSlideID\",\r\n states: [\r\n { id: \"state1\", name: \"State 1\" },\r\n { id: \"state2\", name: \"State 2\" }\r\n ]\r\n };\r\n\r\n const vm2 = { ...vm1 };\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(true);\r\n });\r\n\r\n it(\"Checks for a change in the active slide\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const vm1: HostStateMachineVM = {\r\n activeSlideID: \"activeSlideID\",\r\n nextSlideID: \"newSlideID\",\r\n previousSlideID: \"previousSlideID\",\r\n states: [\r\n { id: \"state1\", name: \"State 1\" },\r\n { id: \"state2\", name: \"State 2\" }\r\n ]\r\n };\r\n\r\n const vm2 = { ...vm1, activeSlideID: \"CHANGED\" };\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);\r\n });\r\n\r\n it(\"Checks for a change in the next slide\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const vm1: HostStateMachineVM = {\r\n activeSlideID: \"activeSlideID\",\r\n nextSlideID: \"newSlideID\",\r\n previousSlideID: \"previousSlideID\",\r\n states: [\r\n { id: \"state1\", name: \"State 1\" },\r\n { id: \"state2\", name: \"State 2\" }\r\n ]\r\n };\r\n\r\n const vm2 = { ...vm1, nextSlideID: \"CHANGED\" };\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);\r\n });\r\n\r\n it(\"Checks for a change in the previous slide\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const vm1: HostStateMachineVM = {\r\n activeSlideID: \"activeSlideID\",\r\n nextSlideID: \"newSlideID\",\r\n previousSlideID: \"previousSlideID\",\r\n states: [\r\n { id: \"state1\", name: \"State 1\" },\r\n { id: \"state2\", name: \"State 2\" }\r\n ]\r\n };\r\n\r\n const vm2 = { ...vm1, previousSlideID: \"CHANGED\" };\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);\r\n });\r\n\r\n it(\"Checks for state to be added\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const vm1: HostStateMachineVM = {\r\n activeSlideID: \"activeSlideID\",\r\n nextSlideID: \"newSlideID\",\r\n previousSlideID: \"previousSlideID\",\r\n states: [\r\n { id: \"state1\", name: \"State 1\" },\r\n { id: \"state2\", name: \"State 2\" }\r\n ]\r\n };\r\n\r\n const vm2 = {\r\n ...vm1,\r\n states: [\r\n { id: \"state1\", name: \"State 1\" },\r\n { id: \"state2\", name: \"State 2\" },\r\n { id: \"state3\", name: \"State 3\" }\r\n ]\r\n };\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);\r\n });\r\n\r\n it(\"Checks for state to be removed\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const vm1: HostStateMachineVM = {\r\n activeSlideID: \"activeSlideID\",\r\n nextSlideID: \"newSlideID\",\r\n previousSlideID: \"previousSlideID\",\r\n states: [\r\n { id: \"state1\", name: \"State 1\" },\r\n { id: \"state2\", name: \"State 2\" }\r\n ]\r\n };\r\n\r\n const vm2 = { ...vm1, states: [{ id: \"state1\", name: \"State 1\" }] };\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);\r\n });\r\n\r\n it(\"Checks for state to be renamed\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const vm1: HostStateMachineVM = {\r\n activeSlideID: \"activeSlideID\",\r\n nextSlideID: \"newSlideID\",\r\n previousSlideID: \"previousSlideID\",\r\n states: [\r\n { id: \"state1\", name: \"State 1\" },\r\n { id: \"state2\", name: \"State 2\" }\r\n ]\r\n };\r\n\r\n const vm2 = {\r\n ...vm1,\r\n states: [\r\n { id: \"state1\", name: \"State 1\" },\r\n { id: \"state2\", name: \"RENAMED\" }\r\n ]\r\n };\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);\r\n });\r\n\r\n it(\"Checks for state to have a different it\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const vm1: HostStateMachineVM = {\r\n activeSlideID: \"activeSlideID\",\r\n nextSlideID: \"newSlideID\",\r\n previousSlideID: \"previousSlideID\",\r\n states: [\r\n { id: \"state1\", name: \"State 1\" },\r\n { id: \"state2\", name: \"State 2\" }\r\n ]\r\n };\r\n\r\n const vm2 = {\r\n ...vm1,\r\n states: [\r\n { id: \"state1\", name: \"State 1\" },\r\n { id: \"CHANGED\", name: \"State 2\" }\r\n ]\r\n };\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"HostStateMachinePM.test.js","sourceRoot":"","sources":["../../../../src/StateMachine/PMs/HostStateMachinePM.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { makeHostStateEntity } from \"../Entities\";\r\nimport { makeHostStateMachine } from \"../Entities/HostStateMachine\";\r\nimport {\r\n HostStateMachinePM,\r\n HostStateMachineVM,\r\n makeHostStateMachinePM\r\n} from \"./HostStateMachinePM\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const registerSingletonSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n\r\n const ao = appObjects.getOrCreate(\"AO\");\r\n const stateMachine = makeHostStateMachine(ao);\r\n\r\n const state1 = makeHostStateEntity(appObjects.getOrCreate(\"state1\"));\r\n state1.name = \"State 1\";\r\n\r\n const state2 = makeHostStateEntity(appObjects.getOrCreate(\"state2\"));\r\n state2.name = \"State 2\";\r\n\r\n const state3 = makeHostStateEntity(appObjects.getOrCreate(\"state3\"));\r\n state3.name = \"State 3\";\r\n\r\n stateMachine.setStates([state1, state2, state3]);\r\n stateMachine.setActiveStateByID(\"state2\");\r\n\r\n const pm = makeHostStateMachinePM(ao);\r\n\r\n return { stateMachine, pm, registerSingletonSpy, appObjects };\r\n}\r\n\r\ndescribe(\"Host State Machine Presentation Manager\", () => {\r\n it(\"Initializes the last vm\", () => {\r\n const { pm } = makeTestRig();\r\n expect(pm.lastVM).not.toBeUndefined();\r\n });\r\n\r\n it(\"Registers as the singleton\", () => {\r\n const { registerSingletonSpy, pm } = makeTestRig();\r\n expect(registerSingletonSpy).toBeCalledWith(pm);\r\n });\r\n\r\n it(\"Initializes the VM\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n expect(pm).not.toBeUndefined();\r\n });\r\n\r\n it(\"Updates if the entity changes\", () => {\r\n const { pm, stateMachine } = makeTestRig();\r\n\r\n stateMachine.setActiveStateByID(\"state1\");\r\n\r\n const vm = pm.lastVM as HostStateMachineVM;\r\n expect(vm.activeSlideID).toEqual(\"state1\");\r\n expect(vm.activeSlideName).toEqual(\"State 1\");\r\n expect(vm.previousSlideID).toBeUndefined();\r\n expect(vm.nextSlideID).toEqual(\"state2\");\r\n expect(vm.states).toHaveLength(3);\r\n expect(vm.states).toEqual([\"state1\", \"state2\", \"state3\"]);\r\n expect(vm.isSingleSlide).toEqual(false);\r\n });\r\n\r\n it(\"Checks for equal vms\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const vm1: HostStateMachineVM = {\r\n activeSlideID: \"activeSlideID\",\r\n activeSlideName: \"Active Slide\",\r\n nextSlideID: \"newSlideID\",\r\n previousSlideID: \"previousSlideID\",\r\n states: [\"state1\", \"state2\"],\r\n isSingleSlide: false\r\n };\r\n\r\n const vm2 = { ...vm1 };\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(true);\r\n });\r\n\r\n it(\"Sets isSingleSlide to true when there is only one state\", () => {\r\n const { pm, stateMachine } = makeTestRig();\r\n\r\n stateMachine.setStates([stateMachine.getStateByID(\"state1\")!]);\r\n\r\n const vm = pm.lastVM as HostStateMachineVM;\r\n expect(vm.states).toHaveLength(1);\r\n expect(vm.states).toEqual([\"state1\"]);\r\n expect(vm.isSingleSlide).toEqual(true);\r\n });\r\n\r\n it(\"Checks for a change in isSingleSlide\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const vm1: HostStateMachineVM = {\r\n activeSlideID: \"activeSlideID\",\r\n activeSlideName: \"Active Slide\",\r\n nextSlideID: \"newSlideID\",\r\n previousSlideID: \"previousSlideID\",\r\n states: [\"state1\"],\r\n isSingleSlide: true\r\n };\r\n\r\n const vm2 = { ...vm1, isSingleSlide: false };\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);\r\n });\r\n\r\n it(\"Checks for a change in the active slide\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const vm1: HostStateMachineVM = {\r\n activeSlideID: \"activeSlideID\",\r\n activeSlideName: \"Active Slide\",\r\n nextSlideID: \"newSlideID\",\r\n previousSlideID: \"previousSlideID\",\r\n states: [\"state1\", \"state2\"],\r\n isSingleSlide: false\r\n };\r\n\r\n const vm2 = { ...vm1, activeSlideID: \"CHANGED\" };\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);\r\n });\r\n\r\n it(\"Checks for a change in the active slide name\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const vm1: HostStateMachineVM = {\r\n activeSlideID: \"activeSlideID\",\r\n activeSlideName: \"Active Slide\",\r\n nextSlideID: \"newSlideID\",\r\n previousSlideID: \"previousSlideID\",\r\n states: [\"state1\", \"state2\"],\r\n isSingleSlide: false\r\n };\r\n\r\n const vm2 = { ...vm1, activeSlideName: \"CHANGED\" };\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);\r\n });\r\n\r\n it(\"Checks for a change in the next slide\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const vm1: HostStateMachineVM = {\r\n activeSlideID: \"activeSlideID\",\r\n activeSlideName: \"Active Slide\",\r\n nextSlideID: \"newSlideID\",\r\n previousSlideID: \"previousSlideID\",\r\n states: [\"state1\", \"state2\"],\r\n isSingleSlide: false\r\n };\r\n\r\n const vm2 = { ...vm1, nextSlideID: \"CHANGED\" };\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);\r\n });\r\n\r\n it(\"Checks for a change in the previous slide\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const vm1: HostStateMachineVM = {\r\n activeSlideID: \"activeSlideID\",\r\n activeSlideName: \"Active Slide\",\r\n nextSlideID: \"newSlideID\",\r\n previousSlideID: \"previousSlideID\",\r\n states: [\"state1\", \"state2\"],\r\n isSingleSlide: false\r\n };\r\n\r\n const vm2 = { ...vm1, previousSlideID: \"CHANGED\" };\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);\r\n });\r\n\r\n it(\"Checks for state to be added\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const vm1: HostStateMachineVM = {\r\n activeSlideID: \"activeSlideID\",\r\n activeSlideName: \"Active Slide\",\r\n nextSlideID: \"newSlideID\",\r\n previousSlideID: \"previousSlideID\",\r\n states: [\"state1\", \"state2\"],\r\n isSingleSlide: false\r\n };\r\n\r\n const vm2 = {\r\n ...vm1,\r\n states: [\"state1\", \"state2\", \"state3\"],\r\n isSingleSlide: false\r\n };\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);\r\n });\r\n\r\n it(\"Checks for state to be removed\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const vm1: HostStateMachineVM = {\r\n activeSlideID: \"activeSlideID\",\r\n activeSlideName: \"Active Slide\",\r\n nextSlideID: \"newSlideID\",\r\n previousSlideID: \"previousSlideID\",\r\n states: [\"state1\", \"state2\"],\r\n isSingleSlide: false\r\n };\r\n\r\n const vm2 = {\r\n ...vm1,\r\n states: [\"state1\"],\r\n isSingleSlide: true\r\n };\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);\r\n });\r\n\r\n it(\"Checks for state order to change\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const vm1: HostStateMachineVM = {\r\n activeSlideID: \"activeSlideID\",\r\n activeSlideName: \"Active Slide\",\r\n nextSlideID: \"newSlideID\",\r\n previousSlideID: \"previousSlideID\",\r\n states: [\"state1\", \"state2\"],\r\n isSingleSlide: false\r\n };\r\n\r\n const vm2 = {\r\n ...vm1,\r\n states: [\"state2\", \"state1\"],\r\n isSingleSlide: false\r\n };\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);\r\n });\r\n});\r\n"]}
@@ -0,0 +1,131 @@
1
+ import { AppObjectPM } from "@vived/core";
2
+ import { AppRepoEntity } from "../../Apps/Entities/AppRepo";
3
+ import { HostStateEntity } from "../Entities/HostStateEntity";
4
+ import { HostStateMachine } from "../Entities/HostStateMachine";
5
+ export class HostStatePM extends AppObjectPM {
6
+ // Non-singleton getter pattern
7
+ static getById(id, appObjects) {
8
+ return appObjects.get(id)?.getComponent(HostStatePM.type);
9
+ }
10
+ }
11
+ HostStatePM.type = "HostStatePM";
12
+ // Default view model
13
+ HostStatePM.defaultVM = {
14
+ id: "",
15
+ name: "",
16
+ data: {},
17
+ isActive: false,
18
+ appName: "",
19
+ canBumpBackwards: false,
20
+ canBumpForward: false,
21
+ index: -1
22
+ };
23
+ export function makeHostStatePM(appObject) {
24
+ return new HostStatePMImp(appObject);
25
+ }
26
+ class HostStatePMImp extends HostStatePM {
27
+ // Get the entity from the same AppObject
28
+ get hostStateEntity() {
29
+ return this.getCachedLocalComponent(HostStateEntity.type);
30
+ }
31
+ // Get the state machine which is a singleton
32
+ get hostStateMachine() {
33
+ return this.getCachedSingleton(HostStateMachine.type);
34
+ }
35
+ // Get the app repo which is a singleton
36
+ get appRepo() {
37
+ return this.getCachedSingleton(AppRepoEntity.type);
38
+ }
39
+ // Required equality check method for view models
40
+ vmsAreEqual(a, b) {
41
+ if (a.id !== b.id)
42
+ return false;
43
+ if (a.name !== b.name)
44
+ return false;
45
+ if (a.isActive !== b.isActive)
46
+ return false;
47
+ if (a.appName !== b.appName)
48
+ return false;
49
+ if (a.canBumpBackwards !== b.canBumpBackwards)
50
+ return false;
51
+ if (a.canBumpForward !== b.canBumpForward)
52
+ return false;
53
+ if (a.index !== b.index)
54
+ return false;
55
+ // Deep comparison for the data object
56
+ const aData = JSON.stringify(a.data);
57
+ const bData = JSON.stringify(b.data);
58
+ if (aData !== bData)
59
+ return false;
60
+ return true;
61
+ }
62
+ updateViewModel() {
63
+ const entity = this.hostStateEntity;
64
+ const stateMachine = this.hostStateMachine;
65
+ const appRepo = this.appRepo;
66
+ if (!entity) {
67
+ this.doUpdateView(HostStatePM.defaultVM);
68
+ return;
69
+ }
70
+ // Check if this state is the active one in the state machine
71
+ const isActive = stateMachine?.activeState === entity.id;
72
+ // Look up the app name using the appID from the state entity
73
+ let appName = "";
74
+ if (appRepo && entity.appID) {
75
+ const app = appRepo.getApp(entity.appID);
76
+ if (app) {
77
+ appName = app.name;
78
+ }
79
+ }
80
+ // Determine if the state can be bumped backwards or forwards
81
+ let canBumpBackwards = false;
82
+ let canBumpForward = false;
83
+ let index = -1;
84
+ if (stateMachine) {
85
+ const stateIndex = stateMachine.getStateIndex(entity.id);
86
+ if (stateIndex !== undefined) {
87
+ index = stateIndex;
88
+ // Can bump backwards if index > 0
89
+ canBumpBackwards = stateIndex > 0;
90
+ // Can bump forward if index < length-1
91
+ canBumpForward = stateIndex < stateMachine.stateCount - 1;
92
+ }
93
+ }
94
+ // Create a new immutable view model based on entity state
95
+ const newVM = {
96
+ id: entity.id,
97
+ name: entity.name,
98
+ data: entity.stateData,
99
+ isActive: isActive || false,
100
+ appName,
101
+ canBumpBackwards,
102
+ canBumpForward,
103
+ index
104
+ };
105
+ // Update the view with the new view model
106
+ this.doUpdateView(newVM);
107
+ }
108
+ constructor(appObject) {
109
+ super(appObject, HostStatePM.type);
110
+ // Handler for entity changes
111
+ this.onEntityChange = () => {
112
+ this.updateViewModel();
113
+ };
114
+ // Handler for state machine changes
115
+ this.onStateMachineChange = () => {
116
+ this.updateViewModel();
117
+ };
118
+ this.dispose = () => {
119
+ this.hostStateEntity?.removeChangeObserver(this.onEntityChange);
120
+ this.hostStateMachine?.removeChangeObserver(this.onStateMachineChange);
121
+ super.dispose();
122
+ };
123
+ // Subscribe to entity changes
124
+ this.hostStateEntity?.addChangeObserver(this.onEntityChange);
125
+ // Subscribe to state machine changes
126
+ this.hostStateMachine?.addChangeObserver(this.onStateMachineChange);
127
+ // Initialize the view model
128
+ this.updateViewModel();
129
+ }
130
+ }
131
+ //# sourceMappingURL=HostStatePM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HostStatePM.js","sourceRoot":"","sources":["../../../../src/StateMachine/PMs/HostStatePM.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectPM, AppObjectRepo } from \"@vived/core\";\r\nimport { AppRepoEntity } from \"../../Apps/Entities/AppRepo\";\r\nimport { HostStateEntity } from \"../Entities/HostStateEntity\";\r\nimport { HostStateMachine } from \"../Entities/HostStateMachine\";\r\n\r\nexport interface HostStateVM {\r\n readonly id: string;\r\n readonly name: string;\r\n readonly data: object;\r\n readonly isActive: boolean;\r\n readonly appName: string;\r\n readonly canBumpBackwards: boolean;\r\n readonly canBumpForward: boolean;\r\n readonly index: number;\r\n}\r\n\r\nexport abstract class HostStatePM extends AppObjectPM<HostStateVM> {\r\n static readonly type = \"HostStatePM\";\r\n\r\n // Default view model\r\n static readonly defaultVM: HostStateVM = {\r\n id: \"\",\r\n name: \"\",\r\n data: {},\r\n isActive: false,\r\n appName: \"\",\r\n canBumpBackwards: false,\r\n canBumpForward: false,\r\n index: -1\r\n };\r\n\r\n // Non-singleton getter pattern\r\n static getById(\r\n id: string,\r\n appObjects: AppObjectRepo\r\n ): HostStatePM | undefined {\r\n return appObjects.get(id)?.getComponent<HostStatePM>(HostStatePM.type);\r\n }\r\n}\r\n\r\nexport function makeHostStatePM(appObject: AppObject): HostStatePM {\r\n return new HostStatePMImp(appObject);\r\n}\r\n\r\nclass HostStatePMImp extends HostStatePM {\r\n // Get the entity from the same AppObject\r\n private get hostStateEntity() {\r\n return this.getCachedLocalComponent<HostStateEntity>(HostStateEntity.type);\r\n }\r\n\r\n // Get the state machine which is a singleton\r\n private get hostStateMachine() {\r\n return this.getCachedSingleton<HostStateMachine>(HostStateMachine.type);\r\n }\r\n\r\n // Get the app repo which is a singleton\r\n private get appRepo() {\r\n return this.getCachedSingleton<AppRepoEntity>(AppRepoEntity.type);\r\n }\r\n\r\n // Required equality check method for view models\r\n vmsAreEqual(a: HostStateVM, b: HostStateVM): boolean {\r\n if (a.id !== b.id) return false;\r\n if (a.name !== b.name) return false;\r\n if (a.isActive !== b.isActive) return false;\r\n if (a.appName !== b.appName) return false;\r\n if (a.canBumpBackwards !== b.canBumpBackwards) return false;\r\n if (a.canBumpForward !== b.canBumpForward) return false;\r\n if (a.index !== b.index) return false;\r\n\r\n // Deep comparison for the data object\r\n const aData = JSON.stringify(a.data);\r\n const bData = JSON.stringify(b.data);\r\n if (aData !== bData) return false;\r\n\r\n return true;\r\n }\r\n\r\n // Handler for entity changes\r\n private onEntityChange = (): void => {\r\n this.updateViewModel();\r\n };\r\n\r\n // Handler for state machine changes\r\n private onStateMachineChange = (): void => {\r\n this.updateViewModel();\r\n };\r\n\r\n private updateViewModel(): void {\r\n const entity = this.hostStateEntity;\r\n const stateMachine = this.hostStateMachine;\r\n const appRepo = this.appRepo;\r\n\r\n if (!entity) {\r\n this.doUpdateView(HostStatePM.defaultVM);\r\n return;\r\n }\r\n\r\n // Check if this state is the active one in the state machine\r\n const isActive = stateMachine?.activeState === entity.id;\r\n\r\n // Look up the app name using the appID from the state entity\r\n let appName = \"\";\r\n if (appRepo && entity.appID) {\r\n const app = appRepo.getApp(entity.appID);\r\n if (app) {\r\n appName = app.name;\r\n }\r\n }\r\n\r\n // Determine if the state can be bumped backwards or forwards\r\n let canBumpBackwards = false;\r\n let canBumpForward = false;\r\n let index = -1;\r\n\r\n if (stateMachine) {\r\n const stateIndex = stateMachine.getStateIndex(entity.id);\r\n if (stateIndex !== undefined) {\r\n index = stateIndex;\r\n // Can bump backwards if index > 0\r\n canBumpBackwards = stateIndex > 0;\r\n // Can bump forward if index < length-1\r\n canBumpForward = stateIndex < stateMachine.stateCount - 1;\r\n }\r\n }\r\n\r\n // Create a new immutable view model based on entity state\r\n const newVM: HostStateVM = {\r\n id: entity.id,\r\n name: entity.name,\r\n data: entity.stateData,\r\n isActive: isActive || false,\r\n appName,\r\n canBumpBackwards,\r\n canBumpForward,\r\n index\r\n };\r\n\r\n // Update the view with the new view model\r\n this.doUpdateView(newVM);\r\n }\r\n\r\n dispose = (): void => {\r\n this.hostStateEntity?.removeChangeObserver(this.onEntityChange);\r\n this.hostStateMachine?.removeChangeObserver(this.onStateMachineChange);\r\n super.dispose();\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, HostStatePM.type);\r\n\r\n // Subscribe to entity changes\r\n this.hostStateEntity?.addChangeObserver(this.onEntityChange);\r\n\r\n // Subscribe to state machine changes\r\n this.hostStateMachine?.addChangeObserver(this.onStateMachineChange);\r\n\r\n // Initialize the view model\r\n this.updateViewModel();\r\n }\r\n}\r\n"]}