@vived/app 6.7.1 → 6.8.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 (204) hide show
  1. package/README.md +145 -1
  2. package/dist/cjs/BaseApp/UC/RenderCanvasUC.js.map +1 -1
  3. package/dist/cjs/BaseApp/UC/RenderCanvasUC.test.js.map +1 -1
  4. package/dist/cjs/Challenge/Factories/ChallengeFeatureFactory.js.map +1 -1
  5. package/dist/cjs/Challenge/Factories/ChallengeFeatureFactory.test.js.map +1 -1
  6. package/dist/cjs/EventSystem/Entities/EventEntity.js.map +1 -1
  7. package/dist/cjs/EventSystem/Entities/EventEntity.test.js +4 -1
  8. package/dist/cjs/EventSystem/Entities/EventEntity.test.js.map +1 -1
  9. package/dist/cjs/EventSystem/Entities/index.js.map +1 -1
  10. package/dist/cjs/EventSystem/EventSystem.integration.test.js.map +1 -1
  11. package/dist/cjs/EventSystem/Factories/EventSystemFeatureFactory.js.map +1 -1
  12. package/dist/cjs/EventSystem/Factories/EventSystemFeatureFactory.test.js.map +1 -1
  13. package/dist/cjs/EventSystem/Factories/index.js.map +1 -1
  14. package/dist/cjs/EventSystem/Mocks/MockEventEntity.js.map +1 -1
  15. package/dist/cjs/EventSystem/Mocks/index.js.map +1 -1
  16. package/dist/cjs/EventSystem/index.js.map +1 -1
  17. package/dist/cjs/EventSystem/types.js.map +1 -1
  18. package/dist/cjs/LabelDrop/Factories/LabelDropFeatureFactory.js.map +1 -1
  19. package/dist/cjs/LabelDrop/UseCases/SubmitLabelDropResultUC.js.map +1 -1
  20. package/dist/cjs/LabelDrop/UseCases/SubmitLabelDropResultUC.test.js.map +1 -1
  21. package/dist/cjs/LabelDrop/UseCases/index.js.map +1 -1
  22. package/dist/cjs/Procedure/Adapters/index.js.map +1 -1
  23. package/dist/cjs/Procedure/Adapters/procedureAdapter.js.map +1 -1
  24. package/dist/cjs/Procedure/Adapters/procedureAdapter.test.js.map +1 -1
  25. package/dist/cjs/Procedure/Adapters/procedureAuthoringAdapter.js.map +1 -1
  26. package/dist/cjs/Procedure/Adapters/procedureAuthoringAdapter.test.js.map +1 -1
  27. package/dist/cjs/Procedure/Adapters/procedureHintAdapter.js.map +1 -1
  28. package/dist/cjs/Procedure/Adapters/procedureHintAdapter.test.js.map +1 -1
  29. package/dist/cjs/Procedure/Adapters/procedureProgressAdapter.js.map +1 -1
  30. package/dist/cjs/Procedure/Adapters/procedureProgressAdapter.test.js.map +1 -1
  31. package/dist/cjs/Procedure/Adapters/procedureQuizResultAdapter.js.map +1 -1
  32. package/dist/cjs/Procedure/Adapters/procedureQuizResultAdapter.test.js +3 -1
  33. package/dist/cjs/Procedure/Adapters/procedureQuizResultAdapter.test.js.map +1 -1
  34. package/dist/cjs/Procedure/Entities/HintRegistry.js.map +1 -1
  35. package/dist/cjs/Procedure/Entities/HintRegistry.test.js.map +1 -1
  36. package/dist/cjs/Procedure/Entities/ProcedureEntity.js.map +1 -1
  37. package/dist/cjs/Procedure/Entities/ProcedureEntity.test.js +1 -12
  38. package/dist/cjs/Procedure/Entities/ProcedureEntity.test.js.map +1 -1
  39. package/dist/cjs/Procedure/Entities/index.js.map +1 -1
  40. package/dist/cjs/Procedure/Factories/ProcedureFeatureFactory.js.map +1 -1
  41. package/dist/cjs/Procedure/Factories/ProcedureFeatureFactory.test.js +3 -1
  42. package/dist/cjs/Procedure/Factories/ProcedureFeatureFactory.test.js.map +1 -1
  43. package/dist/cjs/Procedure/Factories/index.js.map +1 -1
  44. package/dist/cjs/Procedure/Mocks/MockProcedureEntity.js.map +1 -1
  45. package/dist/cjs/Procedure/Mocks/MockProcedurePM.js.map +1 -1
  46. package/dist/cjs/Procedure/Mocks/index.js.map +1 -1
  47. package/dist/cjs/Procedure/PM/ProcedurePM.js.map +1 -1
  48. package/dist/cjs/Procedure/PM/ProcedurePM.test.js +1 -1
  49. package/dist/cjs/Procedure/PM/ProcedurePM.test.js.map +1 -1
  50. package/dist/cjs/Procedure/PM/index.js.map +1 -1
  51. package/dist/cjs/Procedure/ProcedureEventSystem.integration.test.js.map +1 -1
  52. package/dist/cjs/Procedure/UCs/AddProcedureEventUC.js.map +1 -1
  53. package/dist/cjs/Procedure/UCs/AddProcedureEventUC.test.js +1 -4
  54. package/dist/cjs/Procedure/UCs/AddProcedureEventUC.test.js.map +1 -1
  55. package/dist/cjs/Procedure/UCs/MoveProcedureEventDownUC.js.map +1 -1
  56. package/dist/cjs/Procedure/UCs/MoveProcedureEventDownUC.test.js.map +1 -1
  57. package/dist/cjs/Procedure/UCs/MoveProcedureEventUpUC.js.map +1 -1
  58. package/dist/cjs/Procedure/UCs/MoveProcedureEventUpUC.test.js.map +1 -1
  59. package/dist/cjs/Procedure/UCs/RecordProcedureEventUC.js.map +1 -1
  60. package/dist/cjs/Procedure/UCs/RecordProcedureEventUC.test.js.map +1 -1
  61. package/dist/cjs/Procedure/UCs/RecordProcedureSessionUC.js.map +1 -1
  62. package/dist/cjs/Procedure/UCs/RecordProcedureSessionUC.test.js +22 -4
  63. package/dist/cjs/Procedure/UCs/RecordProcedureSessionUC.test.js.map +1 -1
  64. package/dist/cjs/Procedure/UCs/RemoveProcedureEventUC.js.map +1 -1
  65. package/dist/cjs/Procedure/UCs/RemoveProcedureEventUC.test.js.map +1 -1
  66. package/dist/cjs/Procedure/UCs/ResetProcedureProgressUC.js.map +1 -1
  67. package/dist/cjs/Procedure/UCs/ResetProcedureProgressUC.test.js.map +1 -1
  68. package/dist/cjs/Procedure/UCs/SerializeProcedure.js.map +1 -1
  69. package/dist/cjs/Procedure/UCs/SerializeProcedure.test.js +6 -1
  70. package/dist/cjs/Procedure/UCs/SerializeProcedure.test.js.map +1 -1
  71. package/dist/cjs/Procedure/UCs/SetProcedureIsQuizUC.js.map +1 -1
  72. package/dist/cjs/Procedure/UCs/SetProcedureIsQuizUC.test.js.map +1 -1
  73. package/dist/cjs/Procedure/UCs/SetProcedureOrderMattersUC.js.map +1 -1
  74. package/dist/cjs/Procedure/UCs/SetProcedureOrderMattersUC.test.js.map +1 -1
  75. package/dist/cjs/Procedure/UCs/SetProcedureShowHintsUC.js.map +1 -1
  76. package/dist/cjs/Procedure/UCs/SetProcedureShowHintsUC.test.js.map +1 -1
  77. package/dist/cjs/Procedure/UCs/SubmitProcedureQuizUC.js.map +1 -1
  78. package/dist/cjs/Procedure/UCs/SubmitProcedureQuizUC.test.js.map +1 -1
  79. package/dist/cjs/Procedure/UCs/UpdateProcedureEventsUCHook.js.map +1 -1
  80. package/dist/cjs/Procedure/UCs/UpdateProcedureEventsUCHook.test.js.map +1 -1
  81. package/dist/cjs/Procedure/UCs/index.js.map +1 -1
  82. package/dist/cjs/Procedure/index.js.map +1 -1
  83. package/dist/cjs/Procedure/types.js.map +1 -1
  84. package/dist/cjs/RequestHandler/UC/SetThemeColorUC.test.js +9 -0
  85. package/dist/cjs/RequestHandler/UC/SetThemeColorUC.test.js.map +1 -1
  86. package/dist/cjs/ThemeColors/Entities/ThemeColors.js +24 -0
  87. package/dist/cjs/ThemeColors/Entities/ThemeColors.js.map +1 -1
  88. package/dist/cjs/ThemeColors/Entities/ThemeColors.test.js +20 -0
  89. package/dist/cjs/ThemeColors/Entities/ThemeColors.test.js.map +1 -1
  90. package/dist/cjs/TouchController/UC/UpdateTouchInoutBound.test.js.map +1 -1
  91. package/dist/cjs/TouchController/UC/UpdateTouchInputBound.js.map +1 -1
  92. package/dist/cjs/index.js.map +1 -1
  93. package/dist/esm/BaseApp/UC/RenderCanvasUC.js.map +1 -1
  94. package/dist/esm/BaseApp/UC/RenderCanvasUC.test.js.map +1 -1
  95. package/dist/esm/Challenge/Factories/ChallengeFeatureFactory.js.map +1 -1
  96. package/dist/esm/Challenge/Factories/ChallengeFeatureFactory.test.js.map +1 -1
  97. package/dist/esm/EventSystem/Entities/EventEntity.js.map +1 -1
  98. package/dist/esm/EventSystem/Entities/EventEntity.test.js +4 -1
  99. package/dist/esm/EventSystem/Entities/EventEntity.test.js.map +1 -1
  100. package/dist/esm/EventSystem/Entities/index.js.map +1 -1
  101. package/dist/esm/EventSystem/EventSystem.integration.test.js.map +1 -1
  102. package/dist/esm/EventSystem/Factories/EventSystemFeatureFactory.js.map +1 -1
  103. package/dist/esm/EventSystem/Factories/EventSystemFeatureFactory.test.js.map +1 -1
  104. package/dist/esm/EventSystem/Factories/index.js.map +1 -1
  105. package/dist/esm/EventSystem/Mocks/MockEventEntity.js.map +1 -1
  106. package/dist/esm/EventSystem/Mocks/index.js.map +1 -1
  107. package/dist/esm/EventSystem/index.js.map +1 -1
  108. package/dist/esm/EventSystem/types.js.map +1 -1
  109. package/dist/esm/LabelDrop/Factories/LabelDropFeatureFactory.js.map +1 -1
  110. package/dist/esm/LabelDrop/UseCases/SubmitLabelDropResultUC.js.map +1 -1
  111. package/dist/esm/LabelDrop/UseCases/SubmitLabelDropResultUC.test.js.map +1 -1
  112. package/dist/esm/LabelDrop/UseCases/index.js.map +1 -1
  113. package/dist/esm/Procedure/Adapters/index.js.map +1 -1
  114. package/dist/esm/Procedure/Adapters/procedureAdapter.js.map +1 -1
  115. package/dist/esm/Procedure/Adapters/procedureAdapter.test.js.map +1 -1
  116. package/dist/esm/Procedure/Adapters/procedureAuthoringAdapter.js.map +1 -1
  117. package/dist/esm/Procedure/Adapters/procedureAuthoringAdapter.test.js.map +1 -1
  118. package/dist/esm/Procedure/Adapters/procedureHintAdapter.js.map +1 -1
  119. package/dist/esm/Procedure/Adapters/procedureHintAdapter.test.js.map +1 -1
  120. package/dist/esm/Procedure/Adapters/procedureProgressAdapter.js.map +1 -1
  121. package/dist/esm/Procedure/Adapters/procedureProgressAdapter.test.js.map +1 -1
  122. package/dist/esm/Procedure/Adapters/procedureQuizResultAdapter.js.map +1 -1
  123. package/dist/esm/Procedure/Adapters/procedureQuizResultAdapter.test.js +3 -1
  124. package/dist/esm/Procedure/Adapters/procedureQuizResultAdapter.test.js.map +1 -1
  125. package/dist/esm/Procedure/Entities/HintRegistry.js.map +1 -1
  126. package/dist/esm/Procedure/Entities/HintRegistry.test.js.map +1 -1
  127. package/dist/esm/Procedure/Entities/ProcedureEntity.js.map +1 -1
  128. package/dist/esm/Procedure/Entities/ProcedureEntity.test.js +1 -12
  129. package/dist/esm/Procedure/Entities/ProcedureEntity.test.js.map +1 -1
  130. package/dist/esm/Procedure/Entities/index.js.map +1 -1
  131. package/dist/esm/Procedure/Factories/ProcedureFeatureFactory.js.map +1 -1
  132. package/dist/esm/Procedure/Factories/ProcedureFeatureFactory.test.js +5 -3
  133. package/dist/esm/Procedure/Factories/ProcedureFeatureFactory.test.js.map +1 -1
  134. package/dist/esm/Procedure/Factories/index.js.map +1 -1
  135. package/dist/esm/Procedure/Mocks/MockProcedureEntity.js.map +1 -1
  136. package/dist/esm/Procedure/Mocks/MockProcedurePM.js.map +1 -1
  137. package/dist/esm/Procedure/Mocks/index.js.map +1 -1
  138. package/dist/esm/Procedure/PM/ProcedurePM.js.map +1 -1
  139. package/dist/esm/Procedure/PM/ProcedurePM.test.js +2 -2
  140. package/dist/esm/Procedure/PM/ProcedurePM.test.js.map +1 -1
  141. package/dist/esm/Procedure/PM/index.js.map +1 -1
  142. package/dist/esm/Procedure/ProcedureEventSystem.integration.test.js +2 -2
  143. package/dist/esm/Procedure/ProcedureEventSystem.integration.test.js.map +1 -1
  144. package/dist/esm/Procedure/UCs/AddProcedureEventUC.js.map +1 -1
  145. package/dist/esm/Procedure/UCs/AddProcedureEventUC.test.js +3 -6
  146. package/dist/esm/Procedure/UCs/AddProcedureEventUC.test.js.map +1 -1
  147. package/dist/esm/Procedure/UCs/MoveProcedureEventDownUC.js.map +1 -1
  148. package/dist/esm/Procedure/UCs/MoveProcedureEventDownUC.test.js +2 -2
  149. package/dist/esm/Procedure/UCs/MoveProcedureEventDownUC.test.js.map +1 -1
  150. package/dist/esm/Procedure/UCs/MoveProcedureEventUpUC.js.map +1 -1
  151. package/dist/esm/Procedure/UCs/MoveProcedureEventUpUC.test.js +2 -2
  152. package/dist/esm/Procedure/UCs/MoveProcedureEventUpUC.test.js.map +1 -1
  153. package/dist/esm/Procedure/UCs/RecordProcedureEventUC.js.map +1 -1
  154. package/dist/esm/Procedure/UCs/RecordProcedureEventUC.test.js +2 -2
  155. package/dist/esm/Procedure/UCs/RecordProcedureEventUC.test.js.map +1 -1
  156. package/dist/esm/Procedure/UCs/RecordProcedureSessionUC.js.map +1 -1
  157. package/dist/esm/Procedure/UCs/RecordProcedureSessionUC.test.js +22 -4
  158. package/dist/esm/Procedure/UCs/RecordProcedureSessionUC.test.js.map +1 -1
  159. package/dist/esm/Procedure/UCs/RemoveProcedureEventUC.js.map +1 -1
  160. package/dist/esm/Procedure/UCs/RemoveProcedureEventUC.test.js +2 -2
  161. package/dist/esm/Procedure/UCs/RemoveProcedureEventUC.test.js.map +1 -1
  162. package/dist/esm/Procedure/UCs/ResetProcedureProgressUC.js.map +1 -1
  163. package/dist/esm/Procedure/UCs/ResetProcedureProgressUC.test.js +2 -2
  164. package/dist/esm/Procedure/UCs/ResetProcedureProgressUC.test.js.map +1 -1
  165. package/dist/esm/Procedure/UCs/SerializeProcedure.js.map +1 -1
  166. package/dist/esm/Procedure/UCs/SerializeProcedure.test.js +8 -3
  167. package/dist/esm/Procedure/UCs/SerializeProcedure.test.js.map +1 -1
  168. package/dist/esm/Procedure/UCs/SetProcedureIsQuizUC.js.map +1 -1
  169. package/dist/esm/Procedure/UCs/SetProcedureIsQuizUC.test.js +1 -1
  170. package/dist/esm/Procedure/UCs/SetProcedureIsQuizUC.test.js.map +1 -1
  171. package/dist/esm/Procedure/UCs/SetProcedureOrderMattersUC.js.map +1 -1
  172. package/dist/esm/Procedure/UCs/SetProcedureOrderMattersUC.test.js +1 -1
  173. package/dist/esm/Procedure/UCs/SetProcedureOrderMattersUC.test.js.map +1 -1
  174. package/dist/esm/Procedure/UCs/SetProcedureShowHintsUC.js.map +1 -1
  175. package/dist/esm/Procedure/UCs/SetProcedureShowHintsUC.test.js +1 -1
  176. package/dist/esm/Procedure/UCs/SetProcedureShowHintsUC.test.js.map +1 -1
  177. package/dist/esm/Procedure/UCs/SubmitProcedureQuizUC.js.map +1 -1
  178. package/dist/esm/Procedure/UCs/SubmitProcedureQuizUC.test.js +2 -2
  179. package/dist/esm/Procedure/UCs/SubmitProcedureQuizUC.test.js.map +1 -1
  180. package/dist/esm/Procedure/UCs/UpdateProcedureEventsUCHook.js.map +1 -1
  181. package/dist/esm/Procedure/UCs/UpdateProcedureEventsUCHook.test.js +1 -1
  182. package/dist/esm/Procedure/UCs/UpdateProcedureEventsUCHook.test.js.map +1 -1
  183. package/dist/esm/Procedure/UCs/index.js.map +1 -1
  184. package/dist/esm/Procedure/index.js.map +1 -1
  185. package/dist/esm/Procedure/types.js.map +1 -1
  186. package/dist/esm/RequestHandler/UC/SetThemeColorUC.test.js +9 -0
  187. package/dist/esm/RequestHandler/UC/SetThemeColorUC.test.js.map +1 -1
  188. package/dist/esm/ThemeColors/Entities/ThemeColors.js +24 -0
  189. package/dist/esm/ThemeColors/Entities/ThemeColors.js.map +1 -1
  190. package/dist/esm/ThemeColors/Entities/ThemeColors.test.js +20 -0
  191. package/dist/esm/ThemeColors/Entities/ThemeColors.test.js.map +1 -1
  192. package/dist/esm/TouchController/UC/UpdateTouchInoutBound.test.js.map +1 -1
  193. package/dist/esm/TouchController/UC/UpdateTouchInputBound.js.map +1 -1
  194. package/dist/esm/index.js.map +1 -1
  195. package/dist/types/Procedure/Entities/ProcedureEntity.d.ts.map +1 -1
  196. package/dist/types/Procedure/Mocks/MockProcedureEntity.d.ts.map +1 -1
  197. package/dist/types/Procedure/UCs/AddProcedureEventUC.d.ts.map +1 -1
  198. package/dist/types/Procedure/UCs/RecordProcedureSessionUC.d.ts.map +1 -1
  199. package/dist/types/Procedure/UCs/SetProcedureIsQuizUC.d.ts.map +1 -1
  200. package/dist/types/Procedure/UCs/SubmitProcedureQuizUC.d.ts.map +1 -1
  201. package/dist/types/Procedure/types.d.ts.map +1 -1
  202. package/dist/types/ThemeColors/Entities/ThemeColors.d.ts +12 -0
  203. package/dist/types/ThemeColors/Entities/ThemeColors.d.ts.map +1 -1
  204. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"RecordProcedureSessionUC.test.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/RecordProcedureSessionUC.test.ts"],"names":[],"mappings":";;AAAA,sCAKqB;AACrB,oEAAqE;AACrE,mDAA8D;AAC9D,oDAAgE;AAChE,gDAAwD;AACxD,iEAAkE;AAClE,+DAA4D;AAC5D,yEAGoC;AAEpC,MAAM,eAAe,GAAG;IACvB,OAAO,EAAE,CAAC;IACV,OAAO,EAAE;QACR,EAAE,IAAI,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE;QACvE,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE;KACrE;CACD,CAAC;AAEF,MAAM,mBAAoB,SAAQ,sBAAe;IAMhD,IAAI,iBAAiB;QAEpB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IAChC,CAAC;IAED,IAAI,iBAAiB,CAAC,EAAU;QAE/B,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,eAAe,EAAE,CAAC;IACxB,CAAC;IAaO,eAAe;QAEtB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,YAAY,SAAoB;QAE/B,KAAK,CAAC,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAhCpC,uBAAkB,GAAG,MAAM,CAAC;QAC5B,cAAS,GAAmB,EAAE,CAAC;QAavC,sBAAiB,GAAG,CAAC,QAAoB,EAAQ,EAAE;YAElD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC,CAAC;QAEF,yBAAoB,GAAG,CAAC,QAAoB,EAAQ,EAAE;YAErD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,KAAK,IAAI,CAAC;gBAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC;IAUF,CAAC;;AAlCe,wBAAI,GAAG,iBAAiB,AAApB,CAAqB;AAqC1C,MAAM,uBAAwB,SAAQ,yCAAmB;IAIxD,YAAY,SAAoB;QAE/B,KAAK,CAAC,SAAS,EAAE,yCAAmB,CAAC,IAAI,CAAC,CAAC;QAJ5C,aAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAKrB,CAAC;CACD;AAED,SAAS,WAAW;IAEnB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IACvC,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAExD,MAAM,YAAY,GAAG,IAAA,+BAAgB,EAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IACrE,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC;IAEhC,MAAM,eAAe,GAAG,IAAI,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC7D,eAAe,CAAC,iBAAiB,GAAG,WAAW,CAAC;IAChD,UAAU,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAE9C,MAAM,eAAe,GAAG,IAAA,qCAAmB,EAAC,WAAW,CAAC,CAAC;IAEzD,MAAM,eAAe,GAAG,IAAA,2BAAmB,EAAC,UAAU,CAAC,CAAC;IACxD,UAAU,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAE9C,MAAM,gBAAgB,GAAG,IAAA,4BAAoB,EAAC,UAAU,CAAC,CAAC;IAC1D,gBAAgB,CAAC,mBAAmB,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;IACtE,UAAU,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IAE/C,MAAM,YAAY,GAAG,IAAA,wBAAgB,EAAC,UAAU,CAAC,CAAC;IAClD,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACpC,UAAU,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAE3C,MAAM,uBAAuB,GAAG,IAAI,uBAAuB,CAAC,WAAW,CAAC,CAAC;IAEzE,MAAM,EAAE,GAAG,IAAA,uDAA4B,EAAC,WAAW,CAAC,CAAC;IAErD,OAAO;QACN,UAAU;QACV,YAAY;QACZ,eAAe;QACf,eAAe;QACf,eAAe;QACf,gBAAgB;QAChB,YAAY;QACZ,uBAAuB;QACvB,EAAE;KACF,CAAC;AACH,CAAC;AAED,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACtC,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QACzC,MAAM,CAAC,mDAAwB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACxE,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE,CAAC;QAC9C,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC9E,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE,CAAC;QAC9C,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACtD,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,YAAY,EAAE,GAAG,WAAW,EAAE,CAAC;QAC5D,YAAY,CAAC,WAAW,GAAG,KAAK,CAAC;QACjC,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QACnE,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE,CAAC;QAC/D,eAAe,CAAC,iBAAiB,GAAG,MAAM,CAAC;QAC3C,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACxD,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE,CAAC;QAC9C,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACxE,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE,CAAC;QAC9C,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACzD,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE,CAAC;QAC9C,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACtD,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE,CAAC;QAC/D,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC/D,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,uBAAuB,EAAE,GAAG,WAAW,EAAE,CAAC;QACvE,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,gBAAgB,GAAG,eAAe,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;QACtC,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACpE,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,uBAAuB,EAAE,GAAG,WAAW,EAAE,CAAC;QACvE,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,gBAAgB,GAAG,eAAe,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;QACtC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;QACtC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;QACrC,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC7C,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,uBAAuB,EAAE,GAAG,WAAW,EAAE,CAAC;QACvE,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,gBAAgB,GAAG,eAAe,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAC/B,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACpD,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,YAAY,EAAE,GAAG,WAAW,EAAE,CAAC;QAC5D,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,YAAY,CAAC,WAAW,GAAG,KAAK,CAAC;QACjC,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAChE,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE,CAAC;QAC/D,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,eAAe,CAAC,iBAAiB,GAAG,MAAM,CAAC;QAC3C,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACzD,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE,CAAC;QAC/D,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,eAAe,CAAC,iBAAiB,GAAG,WAAW,CAAC;QAChD,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACrE,MAAM,EAAE,EAAE,EAAE,gBAAgB,EAAE,GAAG,WAAW,EAAE,CAAC;QAC/C,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC/E,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,GAAG,WAAW,EAAE,CAAC;QAC7D,YAAY,CAAC,WAAW,GAAG,KAAK,CAAC;QACjC,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAChE,MAAM,EAAE,EAAE,EAAE,gBAAgB,EAAE,GAAG,WAAW,EAAE,CAAC;QAC/C,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,oBAAoB,CAChE,MAAM,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EACvC,gBAAgB,CAAC,gBAAgB,CACjC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC3E,MAAM,EAAE,EAAE,EAAE,gBAAgB,EAAE,GAAG,WAAW,EAAE,CAAC;QAC/C,MAAM,iBAAiB,GAAG;YACzB,IAAI,EAAE,WAAW;YACjB,oBAAoB,EAAE,CAAC;YACvB,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,wBAAwB,CAAC,EAAE;SAC7C,CAAC;QACF,gBAAgB,CAAC,mBAAmB;aAClC,mBAAmB,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,OAAO,EAAE;gBACR,EAAE,IAAI,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE;gBACvE,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE;aACrE;SACD,CAAC;aACD,mBAAmB,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,OAAO,EAAE;gBACR,EAAE,IAAI,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;gBACtE,iBAAiB;aACjB;SACD,CAAC,CAAC;QAEJ,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,EAAE,CAAC,aAAa,EAAE,CAAC;QAEnB,MAAM,WAAW,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,MAAM,gBAAgB,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAChD,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAC/C,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;QACpF,MAAM,EAAE,EAAE,EAAE,gBAAgB,EAAE,GAAG,WAAW,EAAE,CAAC;QAC/C,MAAM,aAAa,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9F,gBAAgB,CAAC,mBAAmB;aAClC,mBAAmB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC;aAC7D,mBAAmB,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;SACjF,CAAC,CAAC;QAEJ,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,EAAE,CAAC,aAAa,EAAE,CAAC;QAEnB,MAAM,WAAW,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAC5C,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAC3C,CAAC;QACF,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACrE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,GAAG,WAAW,EAAE,CAAC;QAC7D,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,YAAY,CAAC,WAAW,GAAG,KAAK,CAAC;QACjC,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACvE,MAAM,EAAE,EAAE,EAAE,eAAe,EAAE,gBAAgB,EAAE,GAAG,WAAW,EAAE,CAAC;QAChE,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,eAAe,CAAC,iBAAiB,GAAG,MAAM,CAAC;QAC3C,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC3D,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,WAAW,EAAE,CAAC;QAC3C,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QAClE,MAAM,EAAE,EAAE,EAAE,gBAAgB,EAAE,GAAG,WAAW,EAAE,CAAC;QAC/C,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gFAAgF,EAAE,GAAG,EAAE;QACzF,MAAM,EAAE,EAAE,EAAE,gBAAgB,EAAE,GAAG,WAAW,EAAE,CAAC;QAC/C,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,EAAE,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gFAAgF,EAAE,GAAG,EAAE;QACzF,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;QACvC,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAExD,MAAM,YAAY,GAAG,IAAA,+BAAgB,EAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QACrE,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC;QAEhC,MAAM,eAAe,GAAG,IAAI,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAC7D,eAAe,CAAC,iBAAiB,GAAG,WAAW,CAAC;QAChD,UAAU,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;QAE9C,MAAM,eAAe,GAAG,IAAA,qCAAmB,EAAC,WAAW,CAAC,CAAC;QAEzD,MAAM,eAAe,GAAG,IAAA,2BAAmB,EAAC,UAAU,CAAC,CAAC;QACxD,UAAU,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;QAE9C,mCAAmC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEzE,MAAM,EAAE,GAAG,IAAA,uDAA4B,EAAC,WAAW,CAAC,CAAC;QACrD,EAAE,CAAC,cAAc,EAAE,CAAC;QAEpB,MAAM,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACnC,OAAO,CAAC,WAAW,EAAE,CAAC;QACtB,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import {\r\n\tAppObject,\r\n\tAppObjectEntity,\r\n\tAppObjectRepo,\r\n\tmakeAppObjectRepo,\r\n} from \"@vived/core\";\r\nimport { makeBaseAppState } from \"../../BaseApp/Entity/BaseAppState\";\r\nimport { makeMockEventEntity } from \"../../EventSystem/Mocks\";\r\nimport { makeMockStateMachine } from \"../../StateMachine/Mocks\";\r\nimport { makeMockUndoRedo } from \"../../UndoRedo/Mocks\";\r\nimport { makeProcedureEntity } from \"../Entities/ProcedureEntity\";\r\nimport { AddProcedureEventUC } from \"./AddProcedureEventUC\";\r\nimport {\r\n\tmakeRecordProcedureSessionUC,\r\n\tRecordProcedureSessionUC,\r\n} from \"./RecordProcedureSessionUC\";\r\n\r\nconst defaultSnapshot = {\r\n\tversion: 2,\r\n\tsystems: [\r\n\t\t{ name: \"amtec\", serializationVersion: 1, state: { powerIsOn: false } },\r\n\t\t{ name: \"procedure\", serializationVersion: 1, state: { events: [] } },\r\n\t],\r\n};\r\n\r\nclass MockChallengeEntity extends AppObjectEntity\r\n{\r\n\tstatic readonly type = \"ChallengeEntity\";\r\n\tprivate _selectedChallenge = \"NONE\";\r\n\tprivate observers: (() => void)[] = [];\r\n\r\n\tget selectedChallenge(): string\r\n\t{\r\n\t\treturn this._selectedChallenge;\r\n\t}\r\n\r\n\tset selectedChallenge(id: string)\r\n\t{\r\n\t\tthis._selectedChallenge = id;\r\n\t\tthis.notifyObservers();\r\n\t}\r\n\r\n\taddChangeObserver = (observer: () => void): void =>\r\n\t{\r\n\t\tthis.observers.push(observer);\r\n\t};\r\n\r\n\tremoveChangeObserver = (observer: () => void): void =>\r\n\t{\r\n\t\tconst index = this.observers.indexOf(observer);\r\n\t\tif (index >= 0) this.observers.splice(index, 1);\r\n\t};\r\n\r\n\tprivate notifyObservers(): void\r\n\t{\r\n\t\tthis.observers.forEach((o) => o());\r\n\t}\r\n\r\n\tconstructor(appObject: AppObject)\r\n\t{\r\n\t\tsuper(appObject, MockChallengeEntity.type);\r\n\t}\r\n}\r\n\r\nclass MockAddProcedureEventUC extends AddProcedureEventUC\r\n{\r\n\taddEvent = jest.fn();\r\n\r\n\tconstructor(appObject: AppObject)\r\n\t{\r\n\t\tsuper(appObject, AddProcedureEventUC.type);\r\n\t}\r\n}\r\n\r\nfunction makeTestRig()\r\n{\r\n\tconst appObjects = makeAppObjectRepo();\r\n\tconst procedureAO = appObjects.getOrCreate(\"Procedure\");\r\n\r\n\tconst baseAppState = makeBaseAppState(appObjects.getOrCreate(\"App\"));\r\n\tbaseAppState.isAuthoring = true;\r\n\r\n\tconst challengeEntity = new MockChallengeEntity(procedureAO);\r\n\tchallengeEntity.selectedChallenge = \"PROCEDURE\";\r\n\tappObjects.registerSingleton(challengeEntity);\r\n\r\n\tconst procedureEntity = makeProcedureEntity(procedureAO);\r\n\r\n\tconst mockEventEntity = makeMockEventEntity(appObjects);\r\n\tappObjects.registerSingleton(mockEventEntity);\r\n\r\n\tconst mockStateMachine = makeMockStateMachine(appObjects);\r\n\tmockStateMachine.getSerializedStates.mockReturnValue(defaultSnapshot);\r\n\tappObjects.registerSingleton(mockStateMachine);\r\n\r\n\tconst mockUndoRedo = makeMockUndoRedo(appObjects);\r\n\tmockUndoRedo.clearStack = jest.fn();\r\n\tappObjects.registerSingleton(mockUndoRedo);\r\n\r\n\tconst mockAddProcedureEventUC = new MockAddProcedureEventUC(procedureAO);\r\n\r\n\tconst uc = makeRecordProcedureSessionUC(procedureAO);\r\n\r\n\treturn {\r\n\t\tappObjects,\r\n\t\tbaseAppState,\r\n\t\tchallengeEntity,\r\n\t\tprocedureEntity,\r\n\t\tmockEventEntity,\r\n\t\tmockStateMachine,\r\n\t\tmockUndoRedo,\r\n\t\tmockAddProcedureEventUC,\r\n\t\tuc,\r\n\t};\r\n}\r\n\r\ndescribe(\"RecordProcedureSessionUC\", () => {\r\n\tit(\"gets the UC from appObjects\", () => {\r\n\t\tconst { uc, appObjects } = makeTestRig();\r\n\t\texpect(RecordProcedureSessionUC.get(appObjects)).toEqual(uc);\r\n\t});\r\n\r\n\tit(\"starts recording and sets procedureEntity.isRecording to true\", () => {\r\n\t\tconst { uc, procedureEntity } = makeTestRig();\r\n\t\tuc.startRecording();\r\n\t\texpect(procedureEntity.isRecording).toEqual(true);\r\n\t});\r\n\r\n\tit(\"registers an emission listener on EventEntity when recording starts\", () => {\r\n\t\tconst { uc, mockEventEntity } = makeTestRig();\r\n\t\tuc.startRecording();\r\n\t\texpect(mockEventEntity.addEmissionListener).toHaveBeenCalled();\r\n\t});\r\n\r\n\tit(\"does not start recording when not authoring\", () => {\r\n\t\tconst { uc, procedureEntity, baseAppState } = makeTestRig();\r\n\t\tbaseAppState.isAuthoring = false;\r\n\t\tuc.startRecording();\r\n\t\texpect(procedureEntity.isRecording).toEqual(false);\r\n\t});\r\n\r\n\tit(\"does not start recording when challenge is not PROCEDURE\", () => {\r\n\t\tconst { uc, procedureEntity, challengeEntity } = makeTestRig();\r\n\t\tchallengeEntity.selectedChallenge = \"NONE\";\r\n\t\tuc.startRecording();\r\n\t\texpect(procedureEntity.isRecording).toEqual(false);\r\n\t});\r\n\r\n\tit(\"does not start recording if already recording\", () => {\r\n\t\tconst { uc, mockEventEntity } = makeTestRig();\r\n\t\tuc.startRecording();\r\n\t\tuc.startRecording();\r\n\t\texpect(mockEventEntity.addEmissionListener).toHaveBeenCalledTimes(1);\r\n\t});\r\n\r\n\tit(\"stops recording and sets procedureEntity.isRecording to false\", () => {\r\n\t\tconst { uc, procedureEntity } = makeTestRig();\r\n\t\tuc.startRecording();\r\n\t\tuc.stopRecording();\r\n\t\texpect(procedureEntity.isRecording).toEqual(false);\r\n\t});\r\n\r\n\tit(\"removes emission listener when recording stops\", () => {\r\n\t\tconst { uc, mockEventEntity } = makeTestRig();\r\n\t\tuc.startRecording();\r\n\t\tuc.stopRecording();\r\n\t\texpect(mockEventEntity.removeEmissionListener).toHaveBeenCalled();\r\n\t});\r\n\r\n\tit(\"does nothing when stopping if not recording\", () => {\r\n\t\tconst { uc, procedureEntity, mockEventEntity } = makeTestRig();\r\n\t\tuc.stopRecording();\r\n\t\texpect(procedureEntity.isRecording).toEqual(false);\r\n\t\texpect(mockEventEntity.removeEmissionListener).not.toHaveBeenCalled();\r\n\t});\r\n\r\n\tit(\"adds emitted events to the procedure while recording\", () => {\r\n\t\tconst { uc, mockEventEntity, mockAddProcedureEventUC } = makeTestRig();\r\n\t\tuc.startRecording();\r\n\t\tconst emissionCallback = mockEventEntity.addEmissionListener.mock.calls[0][0];\r\n\t\temissionCallback(\"master-on-pressed\");\r\n\t\texpect(mockAddProcedureEventUC.addEvent).toHaveBeenCalledWith(\"master-on-pressed\");\r\n\t});\r\n\r\n\tit(\"adds multiple events including duplicates while recording\", () => {\r\n\t\tconst { uc, mockEventEntity, mockAddProcedureEventUC } = makeTestRig();\r\n\t\tuc.startRecording();\r\n\t\tconst emissionCallback = mockEventEntity.addEmissionListener.mock.calls[0][0];\r\n\t\temissionCallback(\"master-on-pressed\");\r\n\t\temissionCallback(\"master-on-pressed\");\r\n\t\temissionCallback(\"mode-switch-auto\");\r\n\t\texpect(mockAddProcedureEventUC.addEvent).toHaveBeenCalledTimes(3);\r\n\t});\r\n\r\n\tit(\"does not add events after stopping\", () => {\r\n\t\tconst { uc, mockEventEntity, mockAddProcedureEventUC } = makeTestRig();\r\n\t\tuc.startRecording();\r\n\t\tuc.stopRecording();\r\n\t\tconst emissionCallback = mockEventEntity.addEmissionListener.mock.calls[0][0];\r\n\t\temissionCallback(\"test-event\");\r\n\t\texpect(mockAddProcedureEventUC.addEvent).not.toHaveBeenCalled();\r\n\t});\r\n\r\n\tit(\"auto-stops when isAuthoring becomes false\", () => {\r\n\t\tconst { uc, procedureEntity, baseAppState } = makeTestRig();\r\n\t\tuc.startRecording();\r\n\t\tbaseAppState.isAuthoring = false;\r\n\t\texpect(procedureEntity.isRecording).toEqual(false);\r\n\t});\r\n\r\n\tit(\"auto-stops when challenge changes away from PROCEDURE\", () => {\r\n\t\tconst { uc, procedureEntity, challengeEntity } = makeTestRig();\r\n\t\tuc.startRecording();\r\n\t\tchallengeEntity.selectedChallenge = \"NONE\";\r\n\t\texpect(procedureEntity.isRecording).toEqual(false);\r\n\t});\r\n\r\n\tit(\"does not stop when challenge remains PROCEDURE\", () => {\r\n\t\tconst { uc, procedureEntity, challengeEntity } = makeTestRig();\r\n\t\tuc.startRecording();\r\n\t\tchallengeEntity.selectedChallenge = \"PROCEDURE\";\r\n\t\texpect(procedureEntity.isRecording).toEqual(true);\r\n\t});\r\n\r\n\tit(\"snapshot - captures a state snapshot when recording starts\", () => {\r\n\t\tconst { uc, mockStateMachine } = makeTestRig();\r\n\t\tuc.startRecording();\r\n\t\texpect(mockStateMachine.getSerializedStates).toHaveBeenCalledTimes(1);\r\n\t});\r\n\r\n\tit(\"snapshot - does not capture a snapshot when guards prevent recording\", () => {\r\n\t\tconst { uc, baseAppState, mockStateMachine } = makeTestRig();\r\n\t\tbaseAppState.isAuthoring = false;\r\n\t\tuc.startRecording();\r\n\t\texpect(mockStateMachine.getSerializedStates).not.toHaveBeenCalled();\r\n\t});\r\n\r\n\tit(\"snapshot - restores the snapshot when recording stops\", () => {\r\n\t\tconst { uc, mockStateMachine } = makeTestRig();\r\n\t\tuc.startRecording();\r\n\t\tuc.stopRecording();\r\n\t\texpect(mockStateMachine.setSerializedStates).toHaveBeenCalledWith(\r\n\t\t\texpect.objectContaining({ version: 2 }),\r\n\t\t\tmockStateMachine.restoreDurationS\r\n\t\t);\r\n\t});\r\n\r\n\tit(\"snapshot - preserves the current procedure system when restoring\", () => {\r\n\t\tconst { uc, mockStateMachine } = makeTestRig();\r\n\t\tconst recordedProcedure = {\r\n\t\t\tname: \"procedure\",\r\n\t\t\tserializationVersion: 1,\r\n\t\t\tstate: { events: [\"power-switch-turned-on\"] },\r\n\t\t};\r\n\t\tmockStateMachine.getSerializedStates\r\n\t\t\t.mockReturnValueOnce({\r\n\t\t\t\tversion: 2,\r\n\t\t\t\tsystems: [\r\n\t\t\t\t\t{ name: \"amtec\", serializationVersion: 1, state: { powerIsOn: false } },\r\n\t\t\t\t\t{ name: \"procedure\", serializationVersion: 1, state: { events: [] } },\r\n\t\t\t\t],\r\n\t\t\t})\r\n\t\t\t.mockReturnValueOnce({\r\n\t\t\t\tversion: 2,\r\n\t\t\t\tsystems: [\r\n\t\t\t\t\t{ name: \"amtec\", serializationVersion: 1, state: { powerIsOn: true } },\r\n\t\t\t\t\trecordedProcedure,\r\n\t\t\t\t],\r\n\t\t\t});\r\n\r\n\t\tuc.startRecording();\r\n\t\tuc.stopRecording();\r\n\r\n\t\tconst mergedState = mockStateMachine.setSerializedStates.mock.calls[0][0];\r\n\t\tconst procedureInMerge = mergedState.systems.find(\r\n\t\t\t(s: { name: string }) => s.name === \"procedure\"\r\n\t\t);\r\n\t\texpect(procedureInMerge).toEqual(recordedProcedure);\r\n\t});\r\n\r\n\tit(\"snapshot - restores equipment state from the snapshot (not current state)\", () => {\r\n\t\tconst { uc, mockStateMachine } = makeTestRig();\r\n\t\tconst snapshotAmtec = { name: \"amtec\", serializationVersion: 1, state: { powerIsOn: false } };\r\n\t\tmockStateMachine.getSerializedStates\r\n\t\t\t.mockReturnValueOnce({ version: 2, systems: [snapshotAmtec] })\r\n\t\t\t.mockReturnValueOnce({\r\n\t\t\t\tversion: 2,\r\n\t\t\t\tsystems: [{ name: \"amtec\", serializationVersion: 1, state: { powerIsOn: true } }],\r\n\t\t\t});\r\n\r\n\t\tuc.startRecording();\r\n\t\tuc.stopRecording();\r\n\r\n\t\tconst mergedState = mockStateMachine.setSerializedStates.mock.calls[0][0];\r\n\t\tconst amtecInMerge = mergedState.systems.find(\r\n\t\t\t(s: { name: string }) => s.name === \"amtec\"\r\n\t\t);\r\n\t\texpect(amtecInMerge).toEqual(snapshotAmtec);\r\n\t});\r\n\r\n\tit(\"snapshot - restores on auto-stop when authoring mode exits\", () => {\r\n\t\tconst { uc, baseAppState, mockStateMachine } = makeTestRig();\r\n\t\tuc.startRecording();\r\n\t\tbaseAppState.isAuthoring = false;\r\n\t\texpect(mockStateMachine.setSerializedStates).toHaveBeenCalled();\r\n\t});\r\n\r\n\tit(\"snapshot - restores on auto-stop when challenge type changes\", () => {\r\n\t\tconst { uc, challengeEntity, mockStateMachine } = makeTestRig();\r\n\t\tuc.startRecording();\r\n\t\tchallengeEntity.selectedChallenge = \"NONE\";\r\n\t\texpect(mockStateMachine.setSerializedStates).toHaveBeenCalled();\r\n\t});\r\n\r\n\tit(\"snapshot - clears the undo stack after restoring\", () => {\r\n\t\tconst { uc, mockUndoRedo } = makeTestRig();\r\n\t\tuc.startRecording();\r\n\t\tuc.stopRecording();\r\n\t\texpect(mockUndoRedo.clearStack).toHaveBeenCalled();\r\n\t});\r\n\r\n\tit(\"snapshot - does not restore if no snapshot was captured\", () => {\r\n\t\tconst { uc, mockStateMachine } = makeTestRig();\r\n\t\tuc.stopRecording();\r\n\t\texpect(mockStateMachine.setSerializedStates).not.toHaveBeenCalled();\r\n\t});\r\n\r\n\tit(\"snapshot - does not capture snapshot a second time on duplicate startRecording\", () => {\r\n\t\tconst { uc, mockStateMachine } = makeTestRig();\r\n\t\tuc.startRecording();\r\n\t\tuc.startRecording();\r\n\t\texpect(mockStateMachine.getSerializedStates).toHaveBeenCalledTimes(1);\r\n\t});\r\n\r\n\tit(\"snapshot - warns and still allows recording when StateMachineEntity is missing\", () => {\r\n\t\tconst appObjects = makeAppObjectRepo();\r\n\t\tconst procedureAO = appObjects.getOrCreate(\"Procedure\");\r\n\r\n\t\tconst baseAppState = makeBaseAppState(appObjects.getOrCreate(\"App\"));\r\n\t\tbaseAppState.isAuthoring = true;\r\n\r\n\t\tconst challengeEntity = new MockChallengeEntity(procedureAO);\r\n\t\tchallengeEntity.selectedChallenge = \"PROCEDURE\";\r\n\t\tappObjects.registerSingleton(challengeEntity);\r\n\r\n\t\tconst procedureEntity = makeProcedureEntity(procedureAO);\r\n\r\n\t\tconst mockEventEntity = makeMockEventEntity(appObjects);\r\n\t\tappObjects.registerSingleton(mockEventEntity);\r\n\r\n\t\t// No StateMachineEntity registered\r\n\t\tconst warnSpy = jest.spyOn(console, \"warn\").mockImplementation(() => {});\r\n\r\n\t\tconst uc = makeRecordProcedureSessionUC(procedureAO);\r\n\t\tuc.startRecording();\r\n\r\n\t\texpect(warnSpy).toHaveBeenCalled();\r\n\t\twarnSpy.mockRestore();\r\n\t\texpect(procedureEntity.isRecording).toEqual(true);\r\n\t});\r\n});\r\n"]}
1
+ {"version":3,"file":"RecordProcedureSessionUC.test.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/RecordProcedureSessionUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AppObject,\n AppObjectEntity,\n AppObjectRepo,\n makeAppObjectRepo,\n} from \"@vived/core\";\nimport { makeBaseAppState } from \"../../BaseApp/Entity/BaseAppState\";\nimport { makeMockEventEntity } from \"../../EventSystem/Mocks\";\nimport { makeMockStateMachine } from \"../../StateMachine/Mocks\";\nimport { makeMockUndoRedo } from \"../../UndoRedo/Mocks\";\nimport { makeProcedureEntity } from \"../Entities/ProcedureEntity\";\nimport { AddProcedureEventUC } from \"./AddProcedureEventUC\";\nimport {\n makeRecordProcedureSessionUC,\n RecordProcedureSessionUC,\n} from \"./RecordProcedureSessionUC\";\n\nconst defaultSnapshot = {\n version: 2,\n systems: [\n { name: \"amtec\", serializationVersion: 1, state: { powerIsOn: false } },\n { name: \"procedure\", serializationVersion: 1, state: { events: [] } },\n ],\n};\n\nclass MockChallengeEntity extends AppObjectEntity {\n static readonly type = \"ChallengeEntity\";\n private _selectedChallenge = \"NONE\";\n private observers: (() => void)[] = [];\n\n get selectedChallenge(): string {\n return this._selectedChallenge;\n }\n\n set selectedChallenge(id: string) {\n this._selectedChallenge = id;\n this.notifyObservers();\n }\n\n addChangeObserver = (observer: () => void): void => {\n this.observers.push(observer);\n };\n\n removeChangeObserver = (observer: () => void): void => {\n const index = this.observers.indexOf(observer);\n if (index >= 0) this.observers.splice(index, 1);\n };\n\n private notifyObservers(): void {\n this.observers.forEach((o) => o());\n }\n\n constructor(appObject: AppObject) {\n super(appObject, MockChallengeEntity.type);\n }\n}\n\nclass MockAddProcedureEventUC extends AddProcedureEventUC {\n addEvent = jest.fn();\n\n constructor(appObject: AppObject) {\n super(appObject, AddProcedureEventUC.type);\n }\n}\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const procedureAO = appObjects.getOrCreate(\"Procedure\");\n\n const baseAppState = makeBaseAppState(appObjects.getOrCreate(\"App\"));\n baseAppState.isAuthoring = true;\n\n const challengeEntity = new MockChallengeEntity(procedureAO);\n challengeEntity.selectedChallenge = \"PROCEDURE\";\n appObjects.registerSingleton(challengeEntity);\n\n const procedureEntity = makeProcedureEntity(procedureAO);\n\n const mockEventEntity = makeMockEventEntity(appObjects);\n appObjects.registerSingleton(mockEventEntity);\n\n const mockStateMachine = makeMockStateMachine(appObjects);\n mockStateMachine.getSerializedStates.mockReturnValue(defaultSnapshot);\n appObjects.registerSingleton(mockStateMachine);\n\n const mockUndoRedo = makeMockUndoRedo(appObjects);\n mockUndoRedo.clearStack = jest.fn();\n appObjects.registerSingleton(mockUndoRedo);\n\n const mockAddProcedureEventUC = new MockAddProcedureEventUC(procedureAO);\n\n const uc = makeRecordProcedureSessionUC(procedureAO);\n\n return {\n appObjects,\n baseAppState,\n challengeEntity,\n procedureEntity,\n mockEventEntity,\n mockStateMachine,\n mockUndoRedo,\n mockAddProcedureEventUC,\n uc,\n };\n}\n\ndescribe(\"RecordProcedureSessionUC\", () => {\n it(\"gets the UC from appObjects\", () => {\n const { uc, appObjects } = makeTestRig();\n expect(RecordProcedureSessionUC.get(appObjects)).toEqual(uc);\n });\n\n it(\"starts recording and sets procedureEntity.isRecording to true\", () => {\n const { uc, procedureEntity } = makeTestRig();\n uc.startRecording();\n expect(procedureEntity.isRecording).toEqual(true);\n });\n\n it(\"registers an emission listener on EventEntity when recording starts\", () => {\n const { uc, mockEventEntity } = makeTestRig();\n uc.startRecording();\n expect(mockEventEntity.addEmissionListener).toHaveBeenCalled();\n });\n\n it(\"does not start recording when not authoring\", () => {\n const { uc, procedureEntity, baseAppState } = makeTestRig();\n baseAppState.isAuthoring = false;\n uc.startRecording();\n expect(procedureEntity.isRecording).toEqual(false);\n });\n\n it(\"does not start recording when challenge is not PROCEDURE\", () => {\n const { uc, procedureEntity, challengeEntity } = makeTestRig();\n challengeEntity.selectedChallenge = \"NONE\";\n uc.startRecording();\n expect(procedureEntity.isRecording).toEqual(false);\n });\n\n it(\"does not start recording if already recording\", () => {\n const { uc, mockEventEntity } = makeTestRig();\n uc.startRecording();\n uc.startRecording();\n expect(mockEventEntity.addEmissionListener).toHaveBeenCalledTimes(1);\n });\n\n it(\"stops recording and sets procedureEntity.isRecording to false\", () => {\n const { uc, procedureEntity } = makeTestRig();\n uc.startRecording();\n uc.stopRecording();\n expect(procedureEntity.isRecording).toEqual(false);\n });\n\n it(\"removes emission listener when recording stops\", () => {\n const { uc, mockEventEntity } = makeTestRig();\n uc.startRecording();\n uc.stopRecording();\n expect(mockEventEntity.removeEmissionListener).toHaveBeenCalled();\n });\n\n it(\"does nothing when stopping if not recording\", () => {\n const { uc, procedureEntity, mockEventEntity } = makeTestRig();\n uc.stopRecording();\n expect(procedureEntity.isRecording).toEqual(false);\n expect(mockEventEntity.removeEmissionListener).not.toHaveBeenCalled();\n });\n\n it(\"adds emitted events to the procedure while recording\", () => {\n const { uc, mockEventEntity, mockAddProcedureEventUC } = makeTestRig();\n uc.startRecording();\n const emissionCallback =\n mockEventEntity.addEmissionListener.mock.calls[0][0];\n emissionCallback(\"master-on-pressed\");\n expect(mockAddProcedureEventUC.addEvent).toHaveBeenCalledWith(\n \"master-on-pressed\",\n );\n });\n\n it(\"adds multiple events including duplicates while recording\", () => {\n const { uc, mockEventEntity, mockAddProcedureEventUC } = makeTestRig();\n uc.startRecording();\n const emissionCallback =\n mockEventEntity.addEmissionListener.mock.calls[0][0];\n emissionCallback(\"master-on-pressed\");\n emissionCallback(\"master-on-pressed\");\n emissionCallback(\"mode-switch-auto\");\n expect(mockAddProcedureEventUC.addEvent).toHaveBeenCalledTimes(3);\n });\n\n it(\"does not add events after stopping\", () => {\n const { uc, mockEventEntity, mockAddProcedureEventUC } = makeTestRig();\n uc.startRecording();\n uc.stopRecording();\n const emissionCallback =\n mockEventEntity.addEmissionListener.mock.calls[0][0];\n emissionCallback(\"test-event\");\n expect(mockAddProcedureEventUC.addEvent).not.toHaveBeenCalled();\n });\n\n it(\"auto-stops when isAuthoring becomes false\", () => {\n const { uc, procedureEntity, baseAppState } = makeTestRig();\n uc.startRecording();\n baseAppState.isAuthoring = false;\n expect(procedureEntity.isRecording).toEqual(false);\n });\n\n it(\"auto-stops when challenge changes away from PROCEDURE\", () => {\n const { uc, procedureEntity, challengeEntity } = makeTestRig();\n uc.startRecording();\n challengeEntity.selectedChallenge = \"NONE\";\n expect(procedureEntity.isRecording).toEqual(false);\n });\n\n it(\"does not stop when challenge remains PROCEDURE\", () => {\n const { uc, procedureEntity, challengeEntity } = makeTestRig();\n uc.startRecording();\n challengeEntity.selectedChallenge = \"PROCEDURE\";\n expect(procedureEntity.isRecording).toEqual(true);\n });\n\n it(\"snapshot - captures a state snapshot when recording starts\", () => {\n const { uc, mockStateMachine } = makeTestRig();\n uc.startRecording();\n expect(mockStateMachine.getSerializedStates).toHaveBeenCalledTimes(1);\n });\n\n it(\"snapshot - does not capture a snapshot when guards prevent recording\", () => {\n const { uc, baseAppState, mockStateMachine } = makeTestRig();\n baseAppState.isAuthoring = false;\n uc.startRecording();\n expect(mockStateMachine.getSerializedStates).not.toHaveBeenCalled();\n });\n\n it(\"snapshot - restores the snapshot when recording stops\", () => {\n const { uc, mockStateMachine } = makeTestRig();\n uc.startRecording();\n uc.stopRecording();\n expect(mockStateMachine.setSerializedStates).toHaveBeenCalledWith(\n expect.objectContaining({ version: 2 }),\n mockStateMachine.restoreDurationS,\n );\n });\n\n it(\"snapshot - preserves the current procedure system when restoring\", () => {\n const { uc, mockStateMachine } = makeTestRig();\n const recordedProcedure = {\n name: \"procedure\",\n serializationVersion: 1,\n state: { events: [\"power-switch-turned-on\"] },\n };\n mockStateMachine.getSerializedStates\n .mockReturnValueOnce({\n version: 2,\n systems: [\n {\n name: \"amtec\",\n serializationVersion: 1,\n state: { powerIsOn: false },\n },\n { name: \"procedure\", serializationVersion: 1, state: { events: [] } },\n ],\n })\n .mockReturnValueOnce({\n version: 2,\n systems: [\n {\n name: \"amtec\",\n serializationVersion: 1,\n state: { powerIsOn: true },\n },\n recordedProcedure,\n ],\n });\n\n uc.startRecording();\n uc.stopRecording();\n\n const mergedState = mockStateMachine.setSerializedStates.mock.calls[0][0];\n const procedureInMerge = mergedState.systems.find(\n (s: { name: string }) => s.name === \"procedure\",\n );\n expect(procedureInMerge).toEqual(recordedProcedure);\n });\n\n it(\"snapshot - restores equipment state from the snapshot (not current state)\", () => {\n const { uc, mockStateMachine } = makeTestRig();\n const snapshotAmtec = {\n name: \"amtec\",\n serializationVersion: 1,\n state: { powerIsOn: false },\n };\n mockStateMachine.getSerializedStates\n .mockReturnValueOnce({ version: 2, systems: [snapshotAmtec] })\n .mockReturnValueOnce({\n version: 2,\n systems: [\n {\n name: \"amtec\",\n serializationVersion: 1,\n state: { powerIsOn: true },\n },\n ],\n });\n\n uc.startRecording();\n uc.stopRecording();\n\n const mergedState = mockStateMachine.setSerializedStates.mock.calls[0][0];\n const amtecInMerge = mergedState.systems.find(\n (s: { name: string }) => s.name === \"amtec\",\n );\n expect(amtecInMerge).toEqual(snapshotAmtec);\n });\n\n it(\"snapshot - restores on auto-stop when authoring mode exits\", () => {\n const { uc, baseAppState, mockStateMachine } = makeTestRig();\n uc.startRecording();\n baseAppState.isAuthoring = false;\n expect(mockStateMachine.setSerializedStates).toHaveBeenCalled();\n });\n\n it(\"snapshot - restores on auto-stop when challenge type changes\", () => {\n const { uc, challengeEntity, mockStateMachine } = makeTestRig();\n uc.startRecording();\n challengeEntity.selectedChallenge = \"NONE\";\n expect(mockStateMachine.setSerializedStates).toHaveBeenCalled();\n });\n\n it(\"snapshot - clears the undo stack after restoring\", () => {\n const { uc, mockUndoRedo } = makeTestRig();\n uc.startRecording();\n uc.stopRecording();\n expect(mockUndoRedo.clearStack).toHaveBeenCalled();\n });\n\n it(\"snapshot - does not restore if no snapshot was captured\", () => {\n const { uc, mockStateMachine } = makeTestRig();\n uc.stopRecording();\n expect(mockStateMachine.setSerializedStates).not.toHaveBeenCalled();\n });\n\n it(\"snapshot - does not capture snapshot a second time on duplicate startRecording\", () => {\n const { uc, mockStateMachine } = makeTestRig();\n uc.startRecording();\n uc.startRecording();\n expect(mockStateMachine.getSerializedStates).toHaveBeenCalledTimes(1);\n });\n\n it(\"snapshot - warns and still allows recording when StateMachineEntity is missing\", () => {\n const appObjects = makeAppObjectRepo();\n const procedureAO = appObjects.getOrCreate(\"Procedure\");\n\n const baseAppState = makeBaseAppState(appObjects.getOrCreate(\"App\"));\n baseAppState.isAuthoring = true;\n\n const challengeEntity = new MockChallengeEntity(procedureAO);\n challengeEntity.selectedChallenge = \"PROCEDURE\";\n appObjects.registerSingleton(challengeEntity);\n\n const procedureEntity = makeProcedureEntity(procedureAO);\n\n const mockEventEntity = makeMockEventEntity(appObjects);\n appObjects.registerSingleton(mockEventEntity);\n\n // No StateMachineEntity registered\n const warnSpy = jest.spyOn(console, \"warn\").mockImplementation(() => {});\n\n const uc = makeRecordProcedureSessionUC(procedureAO);\n uc.startRecording();\n\n expect(warnSpy).toHaveBeenCalled();\n warnSpy.mockRestore();\n expect(procedureEntity.isRecording).toEqual(true);\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"RemoveProcedureEventUC.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/RemoveProcedureEventUC.ts"],"names":[],"mappings":";;;AAgBA,gEAIC;AApBD,sCAAoE;AACpE,iEAA8D;AAE9D,MAAsB,sBAAuB,SAAQ,kBAAW;;AAAhE,wDAWC;AAViB,2BAAI,GAAG,wBAAwB,CAAC;AAIzC,0BAAG,GAAG,CACX,UAAyB,EACW,EAAE,CACtC,UAAU;KACP,WAAW,CAAC,WAAW,CAAC;KACxB,YAAY,CAAyB,sBAAsB,CAAC,IAAI,CAAC,CAAC;AAGzE,SAAgB,0BAA0B,CACxC,SAAoB;IAEpB,OAAO,IAAI,yBAAyB,CAAC,SAAS,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,yBAA0B,SAAQ,sBAAsB;IAC5D,IAAY,eAAe;QACzB,OAAO,iCAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,WAAW,CAAC,OAAe;QACzB,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectUC, AppObjectRepo } from \"@vived/core\";\r\nimport { ProcedureEntity } from \"../Entities/ProcedureEntity\";\r\n\r\nexport abstract class RemoveProcedureEventUC extends AppObjectUC {\r\n static readonly type = \"RemoveProcedureEventUC\";\r\n\r\n abstract removeEvent(eventId: string): void;\r\n\r\n static get = (\r\n appObjects: AppObjectRepo,\r\n ): RemoveProcedureEventUC | undefined =>\r\n appObjects\r\n .getOrCreate(\"Procedure\")\r\n .getComponent<RemoveProcedureEventUC>(RemoveProcedureEventUC.type);\r\n}\r\n\r\nexport function makeRemoveProcedureEventUC(\r\n appObject: AppObject,\r\n): RemoveProcedureEventUC {\r\n return new RemoveProcedureEventUCImp(appObject);\r\n}\r\n\r\nclass RemoveProcedureEventUCImp extends RemoveProcedureEventUC {\r\n private get procedureEntity(): ProcedureEntity | undefined {\r\n return ProcedureEntity.get(this.appObjects);\r\n }\r\n\r\n removeEvent(eventId: string): void {\r\n if (!eventId || eventId.trim() === \"\") {\r\n this.warn(\"Cannot remove empty event ID from procedure\");\r\n return;\r\n }\r\n\r\n const entity = this.procedureEntity;\r\n if (!entity) {\r\n this.warn(\"ProcedureEntity not found - cannot remove event\");\r\n return;\r\n }\r\n\r\n entity.removeEventId(eventId.trim());\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, RemoveProcedureEventUC.type);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"RemoveProcedureEventUC.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/RemoveProcedureEventUC.ts"],"names":[],"mappings":";;;AAgBA,gEAIC;AApBD,sCAAoE;AACpE,iEAA8D;AAE9D,MAAsB,sBAAuB,SAAQ,kBAAW;;AAAhE,wDAWC;AAViB,2BAAI,GAAG,wBAAwB,CAAC;AAIzC,0BAAG,GAAG,CACX,UAAyB,EACW,EAAE,CACtC,UAAU;KACP,WAAW,CAAC,WAAW,CAAC;KACxB,YAAY,CAAyB,sBAAsB,CAAC,IAAI,CAAC,CAAC;AAGzE,SAAgB,0BAA0B,CACxC,SAAoB;IAEpB,OAAO,IAAI,yBAAyB,CAAC,SAAS,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,yBAA0B,SAAQ,sBAAsB;IAC5D,IAAY,eAAe;QACzB,OAAO,iCAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,WAAW,CAAC,OAAe;QACzB,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectUC, AppObjectRepo } from \"@vived/core\";\nimport { ProcedureEntity } from \"../Entities/ProcedureEntity\";\n\nexport abstract class RemoveProcedureEventUC extends AppObjectUC {\n static readonly type = \"RemoveProcedureEventUC\";\n\n abstract removeEvent(eventId: string): void;\n\n static get = (\n appObjects: AppObjectRepo,\n ): RemoveProcedureEventUC | undefined =>\n appObjects\n .getOrCreate(\"Procedure\")\n .getComponent<RemoveProcedureEventUC>(RemoveProcedureEventUC.type);\n}\n\nexport function makeRemoveProcedureEventUC(\n appObject: AppObject,\n): RemoveProcedureEventUC {\n return new RemoveProcedureEventUCImp(appObject);\n}\n\nclass RemoveProcedureEventUCImp extends RemoveProcedureEventUC {\n private get procedureEntity(): ProcedureEntity | undefined {\n return ProcedureEntity.get(this.appObjects);\n }\n\n removeEvent(eventId: string): void {\n if (!eventId || eventId.trim() === \"\") {\n this.warn(\"Cannot remove empty event ID from procedure\");\n return;\n }\n\n const entity = this.procedureEntity;\n if (!entity) {\n this.warn(\"ProcedureEntity not found - cannot remove event\");\n return;\n }\n\n entity.removeEventId(eventId.trim());\n }\n\n constructor(appObject: AppObject) {\n super(appObject, RemoveProcedureEventUC.type);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"RemoveProcedureEventUC.test.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/RemoveProcedureEventUC.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAChD,iEAAmF;AACnF,qEAA8F;AAE9F,SAAS,WAAW;IACnB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IACvC,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,eAAe,GAAG,IAAA,qCAAmB,EAAC,SAAS,CAAC,CAAC;IACvD,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACtC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,EAAE,GAAG,IAAA,mDAA0B,EAAC,SAAS,CAAC,CAAC;IACjD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;AACvD,CAAC;AAED,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QACjD,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QACzC,MAAM,CAAC,+CAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACvD,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC9C,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC1B,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC9C,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAC9B,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACxD,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAC1D,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAErC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACnB,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAEtB,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QAClD,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;QACvC,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,EAAE,GAAG,IAAA,mDAA0B,EAAC,SAAS,CAAC,CAAC;QACjD,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAErC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAE1B,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { ProcedureEntity, makeProcedureEntity } from \"../Entities/ProcedureEntity\";\r\nimport { RemoveProcedureEventUC, makeRemoveProcedureEventUC } from \"./RemoveProcedureEventUC\";\r\n\r\nfunction makeTestRig() {\r\n\tconst appObjects = makeAppObjectRepo();\r\n\tconst appObject = appObjects.getOrCreate(\"Procedure\");\r\n\tconst procedureEntity = makeProcedureEntity(appObject);\r\n\tprocedureEntity.addEventId(\"event_a\");\r\n\tprocedureEntity.addEventId(\"event_b\");\r\n\tconst uc = makeRemoveProcedureEventUC(appObject);\r\n\treturn { appObjects, appObject, procedureEntity, uc };\r\n}\r\n\r\ndescribe(\"RemoveProcedureEventUC\", () => {\r\n\tit(\"can be retrieved via static get method\", () => {\r\n\t\tconst { appObjects, uc } = makeTestRig();\r\n\t\texpect(RemoveProcedureEventUC.get(appObjects)).toBe(uc);\r\n\t});\r\n\r\n\tit(\"removes an existing event ID from the entity\", () => {\r\n\t\tconst { procedureEntity, uc } = makeTestRig();\r\n\t\tuc.removeEvent(\"event_a\");\r\n\t\texpect(procedureEntity.eventIds).toEqual([\"event_b\"]);\r\n\t});\r\n\r\n\tit(\"trims whitespace before removing\", () => {\r\n\t\tconst { procedureEntity, uc } = makeTestRig();\r\n\t\tuc.removeEvent(\" event_a \");\r\n\t\texpect(procedureEntity.eventIds).toEqual([\"event_b\"]);\r\n\t});\r\n\r\n\tit(\"warns and does not remove for empty event IDs\", () => {\r\n\t\tconst { procedureEntity, uc, appObjects } = makeTestRig();\r\n\t\tappObjects.submitWarning = jest.fn();\r\n\r\n\t\tuc.removeEvent(\"\");\r\n\t\tuc.removeEvent(\" \");\r\n\r\n\t\texpect(procedureEntity.eventIds).toEqual([\"event_a\", \"event_b\"]);\r\n\t\texpect(appObjects.submitWarning).toHaveBeenCalled();\r\n\t});\r\n\r\n\tit(\"warns when ProcedureEntity is not found\", () => {\r\n\t\tconst appObjects = makeAppObjectRepo();\r\n\t\tconst appObject = appObjects.getOrCreate(\"Procedure\");\r\n\t\tconst uc = makeRemoveProcedureEventUC(appObject);\r\n\t\tappObjects.submitWarning = jest.fn();\r\n\r\n\t\tuc.removeEvent(\"event_a\");\r\n\r\n\t\texpect(appObjects.submitWarning).toHaveBeenCalled();\r\n\t});\r\n});\r\n"]}
1
+ {"version":3,"file":"RemoveProcedureEventUC.test.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/RemoveProcedureEventUC.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAChD,iEAGqC;AACrC,qEAGkC;AAElC,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IACvC,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,eAAe,GAAG,IAAA,qCAAmB,EAAC,SAAS,CAAC,CAAC;IACvD,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACtC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,EAAE,GAAG,IAAA,mDAA0B,EAAC,SAAS,CAAC,CAAC;IACjD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;AACxD,CAAC;AAED,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QACzC,MAAM,CAAC,+CAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC9C,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC1B,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC9C,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAC9B,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAC1D,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAErC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACnB,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAEtB,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;QACvC,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,EAAE,GAAG,IAAA,mDAA0B,EAAC,SAAS,CAAC,CAAC;QACjD,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAErC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAE1B,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport {\n ProcedureEntity,\n makeProcedureEntity,\n} from \"../Entities/ProcedureEntity\";\nimport {\n RemoveProcedureEventUC,\n makeRemoveProcedureEventUC,\n} from \"./RemoveProcedureEventUC\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const appObject = appObjects.getOrCreate(\"Procedure\");\n const procedureEntity = makeProcedureEntity(appObject);\n procedureEntity.addEventId(\"event_a\");\n procedureEntity.addEventId(\"event_b\");\n const uc = makeRemoveProcedureEventUC(appObject);\n return { appObjects, appObject, procedureEntity, uc };\n}\n\ndescribe(\"RemoveProcedureEventUC\", () => {\n it(\"can be retrieved via static get method\", () => {\n const { appObjects, uc } = makeTestRig();\n expect(RemoveProcedureEventUC.get(appObjects)).toBe(uc);\n });\n\n it(\"removes an existing event ID from the entity\", () => {\n const { procedureEntity, uc } = makeTestRig();\n uc.removeEvent(\"event_a\");\n expect(procedureEntity.eventIds).toEqual([\"event_b\"]);\n });\n\n it(\"trims whitespace before removing\", () => {\n const { procedureEntity, uc } = makeTestRig();\n uc.removeEvent(\" event_a \");\n expect(procedureEntity.eventIds).toEqual([\"event_b\"]);\n });\n\n it(\"warns and does not remove for empty event IDs\", () => {\n const { procedureEntity, uc, appObjects } = makeTestRig();\n appObjects.submitWarning = jest.fn();\n\n uc.removeEvent(\"\");\n uc.removeEvent(\" \");\n\n expect(procedureEntity.eventIds).toEqual([\"event_a\", \"event_b\"]);\n expect(appObjects.submitWarning).toHaveBeenCalled();\n });\n\n it(\"warns when ProcedureEntity is not found\", () => {\n const appObjects = makeAppObjectRepo();\n const appObject = appObjects.getOrCreate(\"Procedure\");\n const uc = makeRemoveProcedureEventUC(appObject);\n appObjects.submitWarning = jest.fn();\n\n uc.removeEvent(\"event_a\");\n\n expect(appObjects.submitWarning).toHaveBeenCalled();\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ResetProcedureProgressUC.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/ResetProcedureProgressUC.ts"],"names":[],"mappings":";;;AAiBA,oEAIC;AArBD,sCAAoE;AACpE,iEAA8D;AAC9D,mDAAgD;AAEhD,MAAsB,wBAAyB,SAAQ,kBAAW;;AAAlE,4DAWC;AAViB,6BAAI,GAAG,0BAA0B,CAAC;AAI3C,4BAAG,GAAG,CACX,UAAyB,EACa,EAAE,CACxC,UAAU;KACP,WAAW,CAAC,WAAW,CAAC;KACxB,YAAY,CAA2B,wBAAwB,CAAC,IAAI,CAAC,CAAC;AAG7E,SAAgB,4BAA4B,CAC1C,SAAoB;IAEpB,OAAO,IAAI,2BAA2B,CAAC,SAAS,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,2BAA4B,SAAQ,wBAAwB;IAChE,IAAY,eAAe;QACzB,OAAO,iCAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,IAAY,WAAW;QACrB,OAAO,yBAAW,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED,aAAa;QACX,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,CAAC;QAEf,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,IAAI,WAAW,EAAE,CAAC;YAChB,WAAW,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectUC, AppObjectRepo } from \"@vived/core\";\r\nimport { ProcedureEntity } from \"../Entities/ProcedureEntity\";\r\nimport { EventEntity } from \"../../EventSystem\";\r\n\r\nexport abstract class ResetProcedureProgressUC extends AppObjectUC {\r\n static readonly type = \"ResetProcedureProgressUC\";\r\n\r\n abstract resetProgress(): void;\r\n\r\n static get = (\r\n appObjects: AppObjectRepo,\r\n ): ResetProcedureProgressUC | undefined =>\r\n appObjects\r\n .getOrCreate(\"Procedure\")\r\n .getComponent<ResetProcedureProgressUC>(ResetProcedureProgressUC.type);\r\n}\r\n\r\nexport function makeResetProcedureProgressUC(\r\n appObject: AppObject,\r\n): ResetProcedureProgressUC {\r\n return new ResetProcedureProgressUCImp(appObject);\r\n}\r\n\r\nclass ResetProcedureProgressUCImp extends ResetProcedureProgressUC {\r\n private get procedureEntity(): ProcedureEntity | undefined {\r\n return ProcedureEntity.get(this.appObjects);\r\n }\r\n\r\n private get eventEntity(): EventEntity | undefined {\r\n return EventEntity.get(this.appObjects);\r\n }\r\n\r\n resetProgress(): void {\r\n const entity = this.procedureEntity;\r\n if (!entity) {\r\n this.warn(\"ProcedureEntity not found - cannot reset progress\");\r\n return;\r\n }\r\n\r\n entity.reset();\r\n\r\n const eventEntity = this.eventEntity;\r\n if (eventEntity) {\r\n eventEntity.reset();\r\n }\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, ResetProcedureProgressUC.type);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ResetProcedureProgressUC.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/ResetProcedureProgressUC.ts"],"names":[],"mappings":";;;AAiBA,oEAIC;AArBD,sCAAoE;AACpE,iEAA8D;AAC9D,mDAAgD;AAEhD,MAAsB,wBAAyB,SAAQ,kBAAW;;AAAlE,4DAWC;AAViB,6BAAI,GAAG,0BAA0B,CAAC;AAI3C,4BAAG,GAAG,CACX,UAAyB,EACa,EAAE,CACxC,UAAU;KACP,WAAW,CAAC,WAAW,CAAC;KACxB,YAAY,CAA2B,wBAAwB,CAAC,IAAI,CAAC,CAAC;AAG7E,SAAgB,4BAA4B,CAC1C,SAAoB;IAEpB,OAAO,IAAI,2BAA2B,CAAC,SAAS,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,2BAA4B,SAAQ,wBAAwB;IAChE,IAAY,eAAe;QACzB,OAAO,iCAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,IAAY,WAAW;QACrB,OAAO,yBAAW,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED,aAAa;QACX,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,CAAC;QAEf,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,IAAI,WAAW,EAAE,CAAC;YAChB,WAAW,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectUC, AppObjectRepo } from \"@vived/core\";\nimport { ProcedureEntity } from \"../Entities/ProcedureEntity\";\nimport { EventEntity } from \"../../EventSystem\";\n\nexport abstract class ResetProcedureProgressUC extends AppObjectUC {\n static readonly type = \"ResetProcedureProgressUC\";\n\n abstract resetProgress(): void;\n\n static get = (\n appObjects: AppObjectRepo,\n ): ResetProcedureProgressUC | undefined =>\n appObjects\n .getOrCreate(\"Procedure\")\n .getComponent<ResetProcedureProgressUC>(ResetProcedureProgressUC.type);\n}\n\nexport function makeResetProcedureProgressUC(\n appObject: AppObject,\n): ResetProcedureProgressUC {\n return new ResetProcedureProgressUCImp(appObject);\n}\n\nclass ResetProcedureProgressUCImp extends ResetProcedureProgressUC {\n private get procedureEntity(): ProcedureEntity | undefined {\n return ProcedureEntity.get(this.appObjects);\n }\n\n private get eventEntity(): EventEntity | undefined {\n return EventEntity.get(this.appObjects);\n }\n\n resetProgress(): void {\n const entity = this.procedureEntity;\n if (!entity) {\n this.warn(\"ProcedureEntity not found - cannot reset progress\");\n return;\n }\n\n entity.reset();\n\n const eventEntity = this.eventEntity;\n if (eventEntity) {\n eventEntity.reset();\n }\n }\n\n constructor(appObject: AppObject) {\n super(appObject, ResetProcedureProgressUC.type);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ResetProcedureProgressUC.test.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/ResetProcedureProgressUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObjectRepo, makeAppObjectRepo } from \"@vived/core\";\r\nimport {\r\n ResetProcedureProgressUC,\r\n makeResetProcedureProgressUC,\r\n} from \"./ResetProcedureProgressUC\";\r\nimport { ProcedureEntity, makeProcedureEntity } from \"../Entities/ProcedureEntity\";\r\nimport { EventEntity, makeEventEntity } from \"../../EventSystem/Entities/EventEntity\";\r\n\r\ndescribe(\"ResetProcedureProgressUC\", () => {\r\n let appObjects: AppObjectRepo;\r\n let procedureEntity: ProcedureEntity;\r\n let eventEntity: EventEntity;\r\n let resetUC: ResetProcedureProgressUC;\r\n\r\n beforeEach(() => {\r\n appObjects = makeAppObjectRepo();\r\n const appObject = appObjects.getOrCreate(\"Procedure\");\r\n\r\n procedureEntity = makeProcedureEntity(appObject);\r\n eventEntity = makeEventEntity(appObjects.getOrCreate(\"EventSystem\"));\r\n\r\n resetUC = makeResetProcedureProgressUC(appObject);\r\n });\r\n\r\n it(\"resets ProcedureEntity when resetting progress\", () => {\r\n procedureEntity.addEventId(\"event1\");\r\n procedureEntity.recordUserEvent(\"event1\");\r\n\r\n resetUC.resetProgress();\r\n\r\n expect(procedureEntity.userEventLog).toEqual([]);\r\n });\r\n\r\n it(\"resets EventEntity when resetting progress\", () => {\r\n eventEntity.register(\"event1\", \"Event 1\");\r\n eventEntity.emit(\"event1\");\r\n\r\n expect(eventEntity.getLastEmittedId()).toBe(\"event1\");\r\n\r\n resetUC.resetProgress();\r\n\r\n expect(eventEntity.getLastEmittedId()).toBeNull();\r\n expect(eventEntity.getEmittedEvents()).toEqual([]);\r\n });\r\n\r\n it(\"handles missing EventEntity gracefully\", () => {\r\n const freshAppObjects = makeAppObjectRepo();\r\n const freshAppObject = freshAppObjects.getOrCreate(\"Procedure\");\r\n makeProcedureEntity(freshAppObject);\r\n const freshUC = makeResetProcedureProgressUC(freshAppObject);\r\n\r\n expect(() => freshUC.resetProgress()).not.toThrow();\r\n });\r\n\r\n it(\"warns when ProcedureEntity is not found\", () => {\r\n const freshAppObjects = makeAppObjectRepo();\r\n const freshAppObject = freshAppObjects.getOrCreate(\"Procedure\");\r\n const freshUC = makeResetProcedureProgressUC(freshAppObject);\r\n const warnSpy = jest.spyOn(freshUC, \"warn\");\r\n\r\n freshUC.resetProgress();\r\n\r\n expect(warnSpy).toHaveBeenCalledWith(\r\n \"ProcedureEntity not found - cannot reset progress\",\r\n );\r\n });\r\n\r\n it(\"can be retrieved via static get method\", () => {\r\n const retrieved = ResetProcedureProgressUC.get(appObjects);\r\n expect(retrieved).toBe(resetUC);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"ResetProcedureProgressUC.test.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/ResetProcedureProgressUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObjectRepo, makeAppObjectRepo } from \"@vived/core\";\nimport {\n ResetProcedureProgressUC,\n makeResetProcedureProgressUC,\n} from \"./ResetProcedureProgressUC\";\nimport {\n ProcedureEntity,\n makeProcedureEntity,\n} from \"../Entities/ProcedureEntity\";\nimport {\n EventEntity,\n makeEventEntity,\n} from \"../../EventSystem/Entities/EventEntity\";\n\ndescribe(\"ResetProcedureProgressUC\", () => {\n let appObjects: AppObjectRepo;\n let procedureEntity: ProcedureEntity;\n let eventEntity: EventEntity;\n let resetUC: ResetProcedureProgressUC;\n\n beforeEach(() => {\n appObjects = makeAppObjectRepo();\n const appObject = appObjects.getOrCreate(\"Procedure\");\n\n procedureEntity = makeProcedureEntity(appObject);\n eventEntity = makeEventEntity(appObjects.getOrCreate(\"EventSystem\"));\n\n resetUC = makeResetProcedureProgressUC(appObject);\n });\n\n it(\"resets ProcedureEntity when resetting progress\", () => {\n procedureEntity.addEventId(\"event1\");\n procedureEntity.recordUserEvent(\"event1\");\n\n resetUC.resetProgress();\n\n expect(procedureEntity.userEventLog).toEqual([]);\n });\n\n it(\"resets EventEntity when resetting progress\", () => {\n eventEntity.register(\"event1\", \"Event 1\");\n eventEntity.emit(\"event1\");\n\n expect(eventEntity.getLastEmittedId()).toBe(\"event1\");\n\n resetUC.resetProgress();\n\n expect(eventEntity.getLastEmittedId()).toBeNull();\n expect(eventEntity.getEmittedEvents()).toEqual([]);\n });\n\n it(\"handles missing EventEntity gracefully\", () => {\n const freshAppObjects = makeAppObjectRepo();\n const freshAppObject = freshAppObjects.getOrCreate(\"Procedure\");\n makeProcedureEntity(freshAppObject);\n const freshUC = makeResetProcedureProgressUC(freshAppObject);\n\n expect(() => freshUC.resetProgress()).not.toThrow();\n });\n\n it(\"warns when ProcedureEntity is not found\", () => {\n const freshAppObjects = makeAppObjectRepo();\n const freshAppObject = freshAppObjects.getOrCreate(\"Procedure\");\n const freshUC = makeResetProcedureProgressUC(freshAppObject);\n const warnSpy = jest.spyOn(freshUC, \"warn\");\n\n freshUC.resetProgress();\n\n expect(warnSpy).toHaveBeenCalledWith(\n \"ProcedureEntity not found - cannot reset progress\",\n );\n });\n\n it(\"can be retrieved via static get method\", () => {\n const retrieved = ResetProcedureProgressUC.get(appObjects);\n expect(retrieved).toBe(resetUC);\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SerializeProcedure.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/SerializeProcedure.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n AppObject,\r\n AppObjectUC,\r\n AppObjectRepo,\r\n getSingletonComponent,\r\n} from \"@vived/core\";\r\nimport { StateMachineEntity } from \"../../StateMachine\";\r\nimport { SerializedSystem } from \"../../StateMachine/Entities/StateMachineEntity\";\r\nimport { ProcedureEntity } from \"../Entities/ProcedureEntity\";\r\nimport { SerializeProcedureStateV1, PROCEDURE_SYSTEM_NAME } from \"../types\";\r\n\r\nexport abstract class SerializeProcedure\r\n extends AppObjectUC\r\n implements SerializedSystem\r\n{\r\n static readonly type = \"SerializeProcedure\";\r\n\r\n readonly name = PROCEDURE_SYSTEM_NAME;\r\n readonly serializationVersion = 1;\r\n\r\n abstract getSystemState(): object | undefined;\r\n abstract applySystemState(\r\n state: object,\r\n version: number,\r\n transitionDuration: number,\r\n ): void;\r\n abstract applyDefaultState(transitionDuration: number): void;\r\n\r\n static get = (appObjects: AppObjectRepo): SerializeProcedure | undefined =>\r\n getSingletonComponent(SerializeProcedure.type, appObjects);\r\n}\r\n\r\nexport function makeSerializeProcedure(\r\n appObject: AppObject,\r\n): SerializeProcedure {\r\n return new SerializeProcedureImp(appObject);\r\n}\r\n\r\nclass SerializeProcedureImp extends SerializeProcedure {\r\n private get procedureEntity(): ProcedureEntity | undefined {\r\n return ProcedureEntity.get(this.appObjects);\r\n }\r\n\r\n private get stateMachineEntity(): StateMachineEntity | undefined {\r\n return StateMachineEntity.get(this.appObjects);\r\n }\r\n\r\n getSystemState(): object | undefined {\r\n const entity = this.procedureEntity;\r\n if (!entity) {\r\n this.warn(\"ProcedureEntity not found - cannot get system state\");\r\n return undefined;\r\n }\r\n\r\n try {\r\n const state: SerializeProcedureStateV1 = {\r\n eventIds: entity.eventIds,\r\n orderMatters: entity.orderMatters,\r\n showHints: entity.showHints,\r\n isQuiz: entity.isQuiz,\r\n };\r\n return state;\r\n } catch (error) {\r\n this.warn(`Error getting procedure state: ${error}`);\r\n return undefined;\r\n }\r\n }\r\n\r\n applySystemState(\r\n state: object,\r\n version: number,\r\n transitionDuration: number,\r\n ): void {\r\n const entity = this.procedureEntity;\r\n if (!entity) {\r\n this.warn(\"ProcedureEntity not found - cannot apply system state\");\r\n return;\r\n }\r\n\r\n try {\r\n if (version !== 1) {\r\n this.warn(\r\n `Unsupported serialization version ${version}, falling back to default state`,\r\n );\r\n this.applyDefaultState(transitionDuration);\r\n return;\r\n }\r\n\r\n const procedureData = state as SerializeProcedureStateV1;\r\n if (!this.isValidV1Data(procedureData)) {\r\n this.warn(\r\n \"Invalid procedure data format, falling back to default state\",\r\n );\r\n this.applyDefaultState(transitionDuration);\r\n return;\r\n }\r\n\r\n entity.clearEventIds();\r\n procedureData.eventIds.forEach((eventId) => entity.addEventId(eventId));\r\n entity.setOrderMatters(procedureData.orderMatters);\r\n entity.setShowHints(procedureData.showHints);\r\n entity.setIsQuiz(procedureData.isQuiz);\r\n\r\n entity.reset();\r\n } catch (error) {\r\n this.warn(\r\n `Error applying procedure state: ${error}, falling back to default state`,\r\n );\r\n this.applyDefaultState(transitionDuration);\r\n }\r\n }\r\n\r\n applyDefaultState(_transitionDuration: number): void {\r\n const entity = this.procedureEntity;\r\n if (!entity) {\r\n this.warn(\"ProcedureEntity not found - cannot apply default state\");\r\n return;\r\n }\r\n\r\n try {\r\n entity.clearEventIds();\r\n entity.setOrderMatters(true);\r\n entity.setShowHints(true);\r\n entity.setIsQuiz(false);\r\n entity.reset();\r\n } catch (error) {\r\n this.warn(`Error applying default procedure state: ${error}`);\r\n }\r\n }\r\n\r\n private isValidV1Data(data: any): data is SerializeProcedureStateV1 {\r\n return (\r\n data &&\r\n typeof data === \"object\" &&\r\n Array.isArray(data.eventIds) &&\r\n data.eventIds.every((id: any) => typeof id === \"string\") &&\r\n typeof data.orderMatters === \"boolean\" &&\r\n typeof data.showHints === \"boolean\" &&\r\n typeof data.isQuiz === \"boolean\"\r\n );\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, SerializeProcedure.type);\r\n\r\n this.appObjects.registerSingleton(this);\r\n\r\n const stateMachine = this.stateMachineEntity;\r\n if (stateMachine) {\r\n stateMachine.registerSerializedSystem(this);\r\n } else {\r\n this.warn(\r\n \"StateMachineEntity not found - procedure state will not persist\",\r\n );\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"SerializeProcedure.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/SerializeProcedure.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AppObject,\n AppObjectUC,\n AppObjectRepo,\n getSingletonComponent,\n} from \"@vived/core\";\nimport { StateMachineEntity } from \"../../StateMachine\";\nimport { SerializedSystem } from \"../../StateMachine/Entities/StateMachineEntity\";\nimport { ProcedureEntity } from \"../Entities/ProcedureEntity\";\nimport { SerializeProcedureStateV1, PROCEDURE_SYSTEM_NAME } from \"../types\";\n\nexport abstract class SerializeProcedure\n extends AppObjectUC\n implements SerializedSystem\n{\n static readonly type = \"SerializeProcedure\";\n\n readonly name = PROCEDURE_SYSTEM_NAME;\n readonly serializationVersion = 1;\n\n abstract getSystemState(): object | undefined;\n abstract applySystemState(\n state: object,\n version: number,\n transitionDuration: number,\n ): void;\n abstract applyDefaultState(transitionDuration: number): void;\n\n static get = (appObjects: AppObjectRepo): SerializeProcedure | undefined =>\n getSingletonComponent(SerializeProcedure.type, appObjects);\n}\n\nexport function makeSerializeProcedure(\n appObject: AppObject,\n): SerializeProcedure {\n return new SerializeProcedureImp(appObject);\n}\n\nclass SerializeProcedureImp extends SerializeProcedure {\n private get procedureEntity(): ProcedureEntity | undefined {\n return ProcedureEntity.get(this.appObjects);\n }\n\n private get stateMachineEntity(): StateMachineEntity | undefined {\n return StateMachineEntity.get(this.appObjects);\n }\n\n getSystemState(): object | undefined {\n const entity = this.procedureEntity;\n if (!entity) {\n this.warn(\"ProcedureEntity not found - cannot get system state\");\n return undefined;\n }\n\n try {\n const state: SerializeProcedureStateV1 = {\n eventIds: entity.eventIds,\n orderMatters: entity.orderMatters,\n showHints: entity.showHints,\n isQuiz: entity.isQuiz,\n };\n return state;\n } catch (error) {\n this.warn(`Error getting procedure state: ${error}`);\n return undefined;\n }\n }\n\n applySystemState(\n state: object,\n version: number,\n transitionDuration: number,\n ): void {\n const entity = this.procedureEntity;\n if (!entity) {\n this.warn(\"ProcedureEntity not found - cannot apply system state\");\n return;\n }\n\n try {\n if (version !== 1) {\n this.warn(\n `Unsupported serialization version ${version}, falling back to default state`,\n );\n this.applyDefaultState(transitionDuration);\n return;\n }\n\n const procedureData = state as SerializeProcedureStateV1;\n if (!this.isValidV1Data(procedureData)) {\n this.warn(\n \"Invalid procedure data format, falling back to default state\",\n );\n this.applyDefaultState(transitionDuration);\n return;\n }\n\n entity.clearEventIds();\n procedureData.eventIds.forEach((eventId) => entity.addEventId(eventId));\n entity.setOrderMatters(procedureData.orderMatters);\n entity.setShowHints(procedureData.showHints);\n entity.setIsQuiz(procedureData.isQuiz);\n\n entity.reset();\n } catch (error) {\n this.warn(\n `Error applying procedure state: ${error}, falling back to default state`,\n );\n this.applyDefaultState(transitionDuration);\n }\n }\n\n applyDefaultState(_transitionDuration: number): void {\n const entity = this.procedureEntity;\n if (!entity) {\n this.warn(\"ProcedureEntity not found - cannot apply default state\");\n return;\n }\n\n try {\n entity.clearEventIds();\n entity.setOrderMatters(true);\n entity.setShowHints(true);\n entity.setIsQuiz(false);\n entity.reset();\n } catch (error) {\n this.warn(`Error applying default procedure state: ${error}`);\n }\n }\n\n private isValidV1Data(data: any): data is SerializeProcedureStateV1 {\n return (\n data &&\n typeof data === \"object\" &&\n Array.isArray(data.eventIds) &&\n data.eventIds.every((id: any) => typeof id === \"string\") &&\n typeof data.orderMatters === \"boolean\" &&\n typeof data.showHints === \"boolean\" &&\n typeof data.isQuiz === \"boolean\"\n );\n }\n\n constructor(appObject: AppObject) {\n super(appObject, SerializeProcedure.type);\n\n this.appObjects.registerSingleton(this);\n\n const stateMachine = this.stateMachineEntity;\n if (stateMachine) {\n stateMachine.registerSerializedSystem(this);\n } else {\n this.warn(\n \"StateMachineEntity not found - procedure state will not persist\",\n );\n }\n }\n}\n"]}
@@ -67,7 +67,12 @@ describe("SerializeProcedure", () => {
67
67
  const { procedureEntity, uc } = makeTestRig();
68
68
  procedureEntity.addEventId("old_event");
69
69
  const consoleSpy = jest.spyOn(console, "warn").mockImplementation(() => { });
70
- uc.applySystemState({ eventIds: ["new_event"], orderMatters: false, showHints: false, isQuiz: false }, 99, 0);
70
+ uc.applySystemState({
71
+ eventIds: ["new_event"],
72
+ orderMatters: false,
73
+ showHints: false,
74
+ isQuiz: false,
75
+ }, 99, 0);
71
76
  expect(procedureEntity.eventIds).toEqual([]);
72
77
  expect(procedureEntity.orderMatters).toBe(true);
73
78
  consoleSpy.mockRestore();
@@ -1 +1 @@
1
- {"version":3,"file":"SerializeProcedure.test.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/SerializeProcedure.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { makeStateMachineEntity } from \"../../StateMachine/Entities/StateMachineEntity\";\r\nimport { ProcedureEntity, makeProcedureEntity } from \"../Entities/ProcedureEntity\";\r\nimport { SerializeProcedure, makeSerializeProcedure } from \"./SerializeProcedure\";\r\n\r\nfunction makeTestRig() {\r\n\tconst appObjects = makeAppObjectRepo();\r\n\tconst appObject = appObjects.getOrCreate(\"Procedure\");\r\n\tconst stateMachine = makeStateMachineEntity(appObjects.getOrCreate(\"StateMachine\"));\r\n\tconst procedureEntity = makeProcedureEntity(appObject);\r\n\tconst uc = makeSerializeProcedure(appObject);\r\n\treturn { appObjects, appObject, procedureEntity, stateMachine, uc };\r\n}\r\n\r\ndescribe(\"SerializeProcedure\", () => {\r\n\tit(\"can be retrieved via static get method\", () => {\r\n\t\tconst { appObjects, uc } = makeTestRig();\r\n\t\texpect(SerializeProcedure.get(appObjects)).toBe(uc);\r\n\t});\r\n\r\n\tit(\"registers itself with the StateMachineEntity\", () => {\r\n\t\tconst { uc } = makeTestRig();\r\n\t\texpect(uc.name).toBe(\"procedure\");\r\n\t});\r\n\r\n\tit(\"has the correct name and serialization version\", () => {\r\n\t\tconst { uc } = makeTestRig();\r\n\t\texpect(uc.name).toBe(\"procedure\");\r\n\t\texpect(uc.serializationVersion).toBe(1);\r\n\t});\r\n\r\n\tit(\"getSystemState returns correct V1 shape\", () => {\r\n\t\tconst { procedureEntity, uc } = makeTestRig();\r\n\t\tprocedureEntity.addEventId(\"event_a\");\r\n\t\tprocedureEntity.addEventId(\"event_b\");\r\n\t\tprocedureEntity.setOrderMatters(false);\r\n\t\tprocedureEntity.setShowHints(false);\r\n\t\tprocedureEntity.setIsQuiz(true);\r\n\r\n\t\tconst state = uc.getSystemState();\r\n\r\n\t\texpect(state).toEqual({\r\n\t\t\teventIds: [\"event_a\", \"event_b\"],\r\n\t\t\torderMatters: false,\r\n\t\t\tshowHints: false,\r\n\t\t\tisQuiz: true,\r\n\t\t});\r\n\t});\r\n\r\n\tit(\"getSystemState returns undefined when ProcedureEntity is not found\", () => {\r\n\t\tconst appObjects = makeAppObjectRepo();\r\n\t\tmakeStateMachineEntity(appObjects.getOrCreate(\"StateMachine\"));\r\n\t\tconst uc = makeSerializeProcedure(appObjects.getOrCreate(\"Procedure\"));\r\n\t\tconst consoleSpy = jest.spyOn(console, \"warn\").mockImplementation(() => {});\r\n\r\n\t\texpect(uc.getSystemState()).toBeUndefined();\r\n\t\tconsoleSpy.mockRestore();\r\n\t});\r\n\r\n\tit(\"applySystemState restores entity from valid V1 data\", () => {\r\n\t\tconst { procedureEntity, uc } = makeTestRig();\r\n\t\tconst state = {\r\n\t\t\teventIds: [\"ev1\", \"ev2\"],\r\n\t\t\torderMatters: false,\r\n\t\t\tshowHints: false,\r\n\t\t\tisQuiz: true,\r\n\t\t};\r\n\r\n\t\tuc.applySystemState(state, 1, 0);\r\n\r\n\t\texpect(procedureEntity.eventIds).toEqual([\"ev1\", \"ev2\"]);\r\n\t\texpect(procedureEntity.orderMatters).toBe(false);\r\n\t\texpect(procedureEntity.showHints).toBe(false);\r\n\t\texpect(procedureEntity.isQuiz).toBe(true);\r\n\t});\r\n\r\n\tit(\"applySystemState falls back to default for unsupported version\", () => {\r\n\t\tconst { procedureEntity, uc } = makeTestRig();\r\n\t\tprocedureEntity.addEventId(\"old_event\");\r\n\t\tconst consoleSpy = jest.spyOn(console, \"warn\").mockImplementation(() => {});\r\n\r\n\t\tuc.applySystemState({ eventIds: [\"new_event\"], orderMatters: false, showHints: false, isQuiz: false }, 99, 0);\r\n\r\n\t\texpect(procedureEntity.eventIds).toEqual([]);\r\n\t\texpect(procedureEntity.orderMatters).toBe(true);\r\n\t\tconsoleSpy.mockRestore();\r\n\t});\r\n\r\n\tit(\"applySystemState falls back to default for invalid data\", () => {\r\n\t\tconst { procedureEntity, uc } = makeTestRig();\r\n\t\tprocedureEntity.addEventId(\"old_event\");\r\n\t\tconst consoleSpy = jest.spyOn(console, \"warn\").mockImplementation(() => {});\r\n\r\n\t\tuc.applySystemState({ notValid: true }, 1, 0);\r\n\r\n\t\texpect(procedureEntity.eventIds).toEqual([]);\r\n\t\tconsoleSpy.mockRestore();\r\n\t});\r\n\r\n\tit(\"applyDefaultState resets entity to initial configuration\", () => {\r\n\t\tconst { procedureEntity, uc } = makeTestRig();\r\n\t\tprocedureEntity.addEventId(\"event_a\");\r\n\t\tprocedureEntity.setOrderMatters(false);\r\n\t\tprocedureEntity.setShowHints(false);\r\n\t\tprocedureEntity.setIsQuiz(true);\r\n\r\n\t\tuc.applyDefaultState(0);\r\n\r\n\t\texpect(procedureEntity.eventIds).toEqual([]);\r\n\t\texpect(procedureEntity.orderMatters).toBe(true);\r\n\t\texpect(procedureEntity.showHints).toBe(true);\r\n\t\texpect(procedureEntity.isQuiz).toBe(false);\r\n\t});\r\n});\r\n"]}
1
+ {"version":3,"file":"SerializeProcedure.test.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/SerializeProcedure.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport { makeStateMachineEntity } from \"../../StateMachine/Entities/StateMachineEntity\";\nimport {\n ProcedureEntity,\n makeProcedureEntity,\n} from \"../Entities/ProcedureEntity\";\nimport {\n SerializeProcedure,\n makeSerializeProcedure,\n} from \"./SerializeProcedure\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const appObject = appObjects.getOrCreate(\"Procedure\");\n const stateMachine = makeStateMachineEntity(\n appObjects.getOrCreate(\"StateMachine\"),\n );\n const procedureEntity = makeProcedureEntity(appObject);\n const uc = makeSerializeProcedure(appObject);\n return { appObjects, appObject, procedureEntity, stateMachine, uc };\n}\n\ndescribe(\"SerializeProcedure\", () => {\n it(\"can be retrieved via static get method\", () => {\n const { appObjects, uc } = makeTestRig();\n expect(SerializeProcedure.get(appObjects)).toBe(uc);\n });\n\n it(\"registers itself with the StateMachineEntity\", () => {\n const { uc } = makeTestRig();\n expect(uc.name).toBe(\"procedure\");\n });\n\n it(\"has the correct name and serialization version\", () => {\n const { uc } = makeTestRig();\n expect(uc.name).toBe(\"procedure\");\n expect(uc.serializationVersion).toBe(1);\n });\n\n it(\"getSystemState returns correct V1 shape\", () => {\n const { procedureEntity, uc } = makeTestRig();\n procedureEntity.addEventId(\"event_a\");\n procedureEntity.addEventId(\"event_b\");\n procedureEntity.setOrderMatters(false);\n procedureEntity.setShowHints(false);\n procedureEntity.setIsQuiz(true);\n\n const state = uc.getSystemState();\n\n expect(state).toEqual({\n eventIds: [\"event_a\", \"event_b\"],\n orderMatters: false,\n showHints: false,\n isQuiz: true,\n });\n });\n\n it(\"getSystemState returns undefined when ProcedureEntity is not found\", () => {\n const appObjects = makeAppObjectRepo();\n makeStateMachineEntity(appObjects.getOrCreate(\"StateMachine\"));\n const uc = makeSerializeProcedure(appObjects.getOrCreate(\"Procedure\"));\n const consoleSpy = jest.spyOn(console, \"warn\").mockImplementation(() => {});\n\n expect(uc.getSystemState()).toBeUndefined();\n consoleSpy.mockRestore();\n });\n\n it(\"applySystemState restores entity from valid V1 data\", () => {\n const { procedureEntity, uc } = makeTestRig();\n const state = {\n eventIds: [\"ev1\", \"ev2\"],\n orderMatters: false,\n showHints: false,\n isQuiz: true,\n };\n\n uc.applySystemState(state, 1, 0);\n\n expect(procedureEntity.eventIds).toEqual([\"ev1\", \"ev2\"]);\n expect(procedureEntity.orderMatters).toBe(false);\n expect(procedureEntity.showHints).toBe(false);\n expect(procedureEntity.isQuiz).toBe(true);\n });\n\n it(\"applySystemState falls back to default for unsupported version\", () => {\n const { procedureEntity, uc } = makeTestRig();\n procedureEntity.addEventId(\"old_event\");\n const consoleSpy = jest.spyOn(console, \"warn\").mockImplementation(() => {});\n\n uc.applySystemState(\n {\n eventIds: [\"new_event\"],\n orderMatters: false,\n showHints: false,\n isQuiz: false,\n },\n 99,\n 0,\n );\n\n expect(procedureEntity.eventIds).toEqual([]);\n expect(procedureEntity.orderMatters).toBe(true);\n consoleSpy.mockRestore();\n });\n\n it(\"applySystemState falls back to default for invalid data\", () => {\n const { procedureEntity, uc } = makeTestRig();\n procedureEntity.addEventId(\"old_event\");\n const consoleSpy = jest.spyOn(console, \"warn\").mockImplementation(() => {});\n\n uc.applySystemState({ notValid: true }, 1, 0);\n\n expect(procedureEntity.eventIds).toEqual([]);\n consoleSpy.mockRestore();\n });\n\n it(\"applyDefaultState resets entity to initial configuration\", () => {\n const { procedureEntity, uc } = makeTestRig();\n procedureEntity.addEventId(\"event_a\");\n procedureEntity.setOrderMatters(false);\n procedureEntity.setShowHints(false);\n procedureEntity.setIsQuiz(true);\n\n uc.applyDefaultState(0);\n\n expect(procedureEntity.eventIds).toEqual([]);\n expect(procedureEntity.orderMatters).toBe(true);\n expect(procedureEntity.showHints).toBe(true);\n expect(procedureEntity.isQuiz).toBe(false);\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SetProcedureIsQuizUC.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/SetProcedureIsQuizUC.ts"],"names":[],"mappings":";;;AAgBA,4DAIC;AApBD,sCAAoE;AACpE,iEAA8D;AAE9D,MAAsB,oBAAqB,SAAQ,kBAAW;;AAA9D,oDAWC;AAViB,yBAAI,GAAG,sBAAsB,CAAC;AAIvC,wBAAG,GAAG,CACX,UAAyB,EACS,EAAE,CACpC,UAAU;KACP,WAAW,CAAC,WAAW,CAAC;KACxB,YAAY,CAAuB,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAGrE,SAAgB,wBAAwB,CACtC,SAAoB;IAEpB,OAAO,IAAI,uBAAuB,CAAC,SAAS,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,uBAAwB,SAAQ,oBAAoB;IACxD,IAAY,eAAe;QACzB,OAAO,iCAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,SAAS,CAAC,MAAe;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectUC, AppObjectRepo } from \"@vived/core\";\r\nimport { ProcedureEntity } from \"../Entities/ProcedureEntity\";\r\n\r\nexport abstract class SetProcedureIsQuizUC extends AppObjectUC {\r\n static readonly type = \"SetProcedureIsQuizUC\";\r\n\r\n abstract setIsQuiz(isQuiz: boolean): void;\r\n\r\n static get = (\r\n appObjects: AppObjectRepo,\r\n ): SetProcedureIsQuizUC | undefined =>\r\n appObjects\r\n .getOrCreate(\"Procedure\")\r\n .getComponent<SetProcedureIsQuizUC>(SetProcedureIsQuizUC.type);\r\n}\r\n\r\nexport function makeSetProcedureIsQuizUC(\r\n appObject: AppObject,\r\n): SetProcedureIsQuizUC {\r\n return new SetProcedureIsQuizUCImp(appObject);\r\n}\r\n\r\nclass SetProcedureIsQuizUCImp extends SetProcedureIsQuizUC {\r\n private get procedureEntity(): ProcedureEntity | undefined {\r\n return ProcedureEntity.get(this.appObjects);\r\n }\r\n\r\n setIsQuiz(isQuiz: boolean): void {\r\n const entity = this.procedureEntity;\r\n if (!entity) {\r\n this.warn(\"ProcedureEntity not found - cannot set isQuiz\");\r\n return;\r\n }\r\n\r\n entity.setIsQuiz(isQuiz);\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, SetProcedureIsQuizUC.type);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"SetProcedureIsQuizUC.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/SetProcedureIsQuizUC.ts"],"names":[],"mappings":";;;AAcA,4DAIC;AAlBD,sCAAoE;AACpE,iEAA8D;AAE9D,MAAsB,oBAAqB,SAAQ,kBAAW;;AAA9D,oDASC;AARiB,yBAAI,GAAG,sBAAsB,CAAC;AAIvC,wBAAG,GAAG,CAAC,UAAyB,EAAoC,EAAE,CAC3E,UAAU;KACP,WAAW,CAAC,WAAW,CAAC;KACxB,YAAY,CAAuB,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAGrE,SAAgB,wBAAwB,CACtC,SAAoB;IAEpB,OAAO,IAAI,uBAAuB,CAAC,SAAS,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,uBAAwB,SAAQ,oBAAoB;IACxD,IAAY,eAAe;QACzB,OAAO,iCAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,SAAS,CAAC,MAAe;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;YAC3D,OAAO;QACT,CAAC;QAED,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectUC, AppObjectRepo } from \"@vived/core\";\nimport { ProcedureEntity } from \"../Entities/ProcedureEntity\";\n\nexport abstract class SetProcedureIsQuizUC extends AppObjectUC {\n static readonly type = \"SetProcedureIsQuizUC\";\n\n abstract setIsQuiz(isQuiz: boolean): void;\n\n static get = (appObjects: AppObjectRepo): SetProcedureIsQuizUC | undefined =>\n appObjects\n .getOrCreate(\"Procedure\")\n .getComponent<SetProcedureIsQuizUC>(SetProcedureIsQuizUC.type);\n}\n\nexport function makeSetProcedureIsQuizUC(\n appObject: AppObject,\n): SetProcedureIsQuizUC {\n return new SetProcedureIsQuizUCImp(appObject);\n}\n\nclass SetProcedureIsQuizUCImp extends SetProcedureIsQuizUC {\n private get procedureEntity(): ProcedureEntity | undefined {\n return ProcedureEntity.get(this.appObjects);\n }\n\n setIsQuiz(isQuiz: boolean): void {\n const entity = this.procedureEntity;\n if (!entity) {\n this.warn(\"ProcedureEntity not found - cannot set isQuiz\");\n return;\n }\n\n entity.setIsQuiz(isQuiz);\n }\n\n constructor(appObject: AppObject) {\n super(appObject, SetProcedureIsQuizUC.type);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SetProcedureIsQuizUC.test.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/SetProcedureIsQuizUC.test.ts"],"names":[],"mappings":";;AAAA,sCAA+D;AAC/D,iEAAmF;AACnF,iEAGgC;AAEhC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAI,UAAyB,CAAC;IAC9B,IAAI,eAAgC,CAAC;IACrC,IAAI,WAAiC,CAAC;IAEtC,UAAU,CAAC,GAAG,EAAE;QACd,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;QACjC,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAEtD,eAAe,GAAG,IAAA,qCAAmB,EAAC,SAAS,CAAC,CAAC;QACjD,WAAW,GAAG,IAAA,+CAAwB,EAAC,SAAS,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAC9C,MAAM,SAAS,GAAG,2CAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvD,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,CACtC,2CAAoB,CAAC,IAAI,CAC1B,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEL,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QACxC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE3C,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAE5B,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE1C,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC;QAE5C,WAAW,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC;QAErC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEL,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QAClD,MAAM,kBAAkB,GAAG,IAAA,wBAAiB,GAAE,CAAC;QAC/C,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,IAAA,+CAAwB,EAAC,iBAAiB,CAAC,CAAC;QAE/D,kBAAkB,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAE7C,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAE3B,MAAM,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { AppObjectRepo, makeAppObjectRepo } from \"@vived/core\";\r\nimport { ProcedureEntity, makeProcedureEntity } from \"../Entities/ProcedureEntity\";\r\nimport {\r\n SetProcedureIsQuizUC,\r\n makeSetProcedureIsQuizUC,\r\n} from \"./SetProcedureIsQuizUC\";\r\n\r\ndescribe(\"SetProcedureIsQuizUC\", () => {\r\n let appObjects: AppObjectRepo;\r\n let procedureEntity: ProcedureEntity;\r\n let setIsQuizUC: SetProcedureIsQuizUC;\r\n\r\n beforeEach(() => {\r\n appObjects = makeAppObjectRepo();\r\n const appObject = appObjects.getOrCreate(\"Procedure\");\r\n\r\n procedureEntity = makeProcedureEntity(appObject);\r\n setIsQuizUC = makeSetProcedureIsQuizUC(appObject);\r\n });\r\n\r\n it(\"can be retrieved via static get method\", () => {\r\n const retrieved = SetProcedureIsQuizUC.get(appObjects);\r\n expect(retrieved).toBe(setIsQuizUC);\r\n });\r\n\r\n it(\"registers itself on the AppObject\", () => {\r\n const appObject = appObjects.getOrCreate(\"Procedure\");\r\n const retrieved = appObject.getComponent<SetProcedureIsQuizUC>(\r\n SetProcedureIsQuizUC.type,\r\n );\r\n expect(retrieved).toBe(setIsQuizUC);\r\n });\r\n\r\n it(\"successfully sets isQuiz to true\", () => {\r\n expect(procedureEntity.isQuiz).toBe(false);\r\n\r\n setIsQuizUC.setIsQuiz(true);\r\n\r\n expect(procedureEntity.isQuiz).toBe(true);\r\n });\r\n\r\n it(\"successfully sets isQuiz to false\", () => {\r\n setIsQuizUC.setIsQuiz(true);\r\n expect(procedureEntity.isQuiz).toBe(true);\r\n\r\n setIsQuizUC.setIsQuiz(false);\r\n expect(procedureEntity.isQuiz).toBe(false);\r\n });\r\n\r\n it(\"triggers state update when property changes\", () => {\r\n const initialState = procedureEntity.isQuiz;\r\n\r\n setIsQuizUC.setIsQuiz(!initialState);\r\n\r\n expect(procedureEntity.isQuiz).toBe(!initialState);\r\n });\r\n\r\n it(\"handles missing ProcedureEntity gracefully\", () => {\r\n const isolatedAppObjects = makeAppObjectRepo();\r\n const isolatedAppObject = isolatedAppObjects.getOrCreate(\"Isolated\");\r\n const isolatedUC = makeSetProcedureIsQuizUC(isolatedAppObject);\r\n\r\n isolatedAppObjects.submitWarning = jest.fn();\r\n\r\n isolatedUC.setIsQuiz(true);\r\n\r\n expect(isolatedAppObjects.submitWarning).toHaveBeenCalled();\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"SetProcedureIsQuizUC.test.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/SetProcedureIsQuizUC.test.ts"],"names":[],"mappings":";;AAAA,sCAA+D;AAC/D,iEAGqC;AACrC,iEAGgC;AAEhC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAI,UAAyB,CAAC;IAC9B,IAAI,eAAgC,CAAC;IACrC,IAAI,WAAiC,CAAC;IAEtC,UAAU,CAAC,GAAG,EAAE;QACd,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;QACjC,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAEtD,eAAe,GAAG,IAAA,qCAAmB,EAAC,SAAS,CAAC,CAAC;QACjD,WAAW,GAAG,IAAA,+CAAwB,EAAC,SAAS,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,SAAS,GAAG,2CAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvD,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,CACtC,2CAAoB,CAAC,IAAI,CAC1B,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE3C,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAE5B,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE1C,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC;QAE5C,WAAW,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC;QAErC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,kBAAkB,GAAG,IAAA,wBAAiB,GAAE,CAAC;QAC/C,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,IAAA,+CAAwB,EAAC,iBAAiB,CAAC,CAAC;QAE/D,kBAAkB,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAE7C,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAE3B,MAAM,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { AppObjectRepo, makeAppObjectRepo } from \"@vived/core\";\nimport {\n ProcedureEntity,\n makeProcedureEntity,\n} from \"../Entities/ProcedureEntity\";\nimport {\n SetProcedureIsQuizUC,\n makeSetProcedureIsQuizUC,\n} from \"./SetProcedureIsQuizUC\";\n\ndescribe(\"SetProcedureIsQuizUC\", () => {\n let appObjects: AppObjectRepo;\n let procedureEntity: ProcedureEntity;\n let setIsQuizUC: SetProcedureIsQuizUC;\n\n beforeEach(() => {\n appObjects = makeAppObjectRepo();\n const appObject = appObjects.getOrCreate(\"Procedure\");\n\n procedureEntity = makeProcedureEntity(appObject);\n setIsQuizUC = makeSetProcedureIsQuizUC(appObject);\n });\n\n it(\"can be retrieved via static get method\", () => {\n const retrieved = SetProcedureIsQuizUC.get(appObjects);\n expect(retrieved).toBe(setIsQuizUC);\n });\n\n it(\"registers itself on the AppObject\", () => {\n const appObject = appObjects.getOrCreate(\"Procedure\");\n const retrieved = appObject.getComponent<SetProcedureIsQuizUC>(\n SetProcedureIsQuizUC.type,\n );\n expect(retrieved).toBe(setIsQuizUC);\n });\n\n it(\"successfully sets isQuiz to true\", () => {\n expect(procedureEntity.isQuiz).toBe(false);\n\n setIsQuizUC.setIsQuiz(true);\n\n expect(procedureEntity.isQuiz).toBe(true);\n });\n\n it(\"successfully sets isQuiz to false\", () => {\n setIsQuizUC.setIsQuiz(true);\n expect(procedureEntity.isQuiz).toBe(true);\n\n setIsQuizUC.setIsQuiz(false);\n expect(procedureEntity.isQuiz).toBe(false);\n });\n\n it(\"triggers state update when property changes\", () => {\n const initialState = procedureEntity.isQuiz;\n\n setIsQuizUC.setIsQuiz(!initialState);\n\n expect(procedureEntity.isQuiz).toBe(!initialState);\n });\n\n it(\"handles missing ProcedureEntity gracefully\", () => {\n const isolatedAppObjects = makeAppObjectRepo();\n const isolatedAppObject = isolatedAppObjects.getOrCreate(\"Isolated\");\n const isolatedUC = makeSetProcedureIsQuizUC(isolatedAppObject);\n\n isolatedAppObjects.submitWarning = jest.fn();\n\n isolatedUC.setIsQuiz(true);\n\n expect(isolatedAppObjects.submitWarning).toHaveBeenCalled();\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SetProcedureOrderMattersUC.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/SetProcedureOrderMattersUC.ts"],"names":[],"mappings":";;;AAkBA,wEAIC;AAtBD,sCAAoE;AACpE,iEAA8D;AAE9D,MAAsB,0BAA2B,SAAQ,kBAAW;;AAApE,gEAaC;AAZiB,+BAAI,GAAG,4BAA4B,CAAC;AAI7C,8BAAG,GAAG,CACX,UAAyB,EACe,EAAE,CAC1C,UAAU;KACP,WAAW,CAAC,WAAW,CAAC;KACxB,YAAY,CACX,0BAA0B,CAAC,IAAI,CAChC,CAAC;AAGR,SAAgB,8BAA8B,CAC5C,SAAoB;IAEpB,OAAO,IAAI,6BAA6B,CAAC,SAAS,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,6BAA8B,SAAQ,0BAA0B;IACpE,IAAY,eAAe;QACzB,OAAO,iCAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,eAAe,CAAC,YAAqB;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;YACjE,OAAO;QACT,CAAC;QAED,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,0BAA0B,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectUC, AppObjectRepo } from \"@vived/core\";\r\nimport { ProcedureEntity } from \"../Entities/ProcedureEntity\";\r\n\r\nexport abstract class SetProcedureOrderMattersUC extends AppObjectUC {\r\n static readonly type = \"SetProcedureOrderMattersUC\";\r\n\r\n abstract setOrderMatters(orderMatters: boolean): void;\r\n\r\n static get = (\r\n appObjects: AppObjectRepo,\r\n ): SetProcedureOrderMattersUC | undefined =>\r\n appObjects\r\n .getOrCreate(\"Procedure\")\r\n .getComponent<SetProcedureOrderMattersUC>(\r\n SetProcedureOrderMattersUC.type,\r\n );\r\n}\r\n\r\nexport function makeSetProcedureOrderMattersUC(\r\n appObject: AppObject,\r\n): SetProcedureOrderMattersUC {\r\n return new SetProcedureOrderMattersUCImp(appObject);\r\n}\r\n\r\nclass SetProcedureOrderMattersUCImp extends SetProcedureOrderMattersUC {\r\n private get procedureEntity(): ProcedureEntity | undefined {\r\n return ProcedureEntity.get(this.appObjects);\r\n }\r\n\r\n setOrderMatters(orderMatters: boolean): void {\r\n const entity = this.procedureEntity;\r\n if (!entity) {\r\n this.warn(\"ProcedureEntity not found - cannot set orderMatters\");\r\n return;\r\n }\r\n\r\n entity.setOrderMatters(orderMatters);\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, SetProcedureOrderMattersUC.type);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"SetProcedureOrderMattersUC.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/SetProcedureOrderMattersUC.ts"],"names":[],"mappings":";;;AAkBA,wEAIC;AAtBD,sCAAoE;AACpE,iEAA8D;AAE9D,MAAsB,0BAA2B,SAAQ,kBAAW;;AAApE,gEAaC;AAZiB,+BAAI,GAAG,4BAA4B,CAAC;AAI7C,8BAAG,GAAG,CACX,UAAyB,EACe,EAAE,CAC1C,UAAU;KACP,WAAW,CAAC,WAAW,CAAC;KACxB,YAAY,CACX,0BAA0B,CAAC,IAAI,CAChC,CAAC;AAGR,SAAgB,8BAA8B,CAC5C,SAAoB;IAEpB,OAAO,IAAI,6BAA6B,CAAC,SAAS,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,6BAA8B,SAAQ,0BAA0B;IACpE,IAAY,eAAe;QACzB,OAAO,iCAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,eAAe,CAAC,YAAqB;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;YACjE,OAAO;QACT,CAAC;QAED,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,0BAA0B,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectUC, AppObjectRepo } from \"@vived/core\";\nimport { ProcedureEntity } from \"../Entities/ProcedureEntity\";\n\nexport abstract class SetProcedureOrderMattersUC extends AppObjectUC {\n static readonly type = \"SetProcedureOrderMattersUC\";\n\n abstract setOrderMatters(orderMatters: boolean): void;\n\n static get = (\n appObjects: AppObjectRepo,\n ): SetProcedureOrderMattersUC | undefined =>\n appObjects\n .getOrCreate(\"Procedure\")\n .getComponent<SetProcedureOrderMattersUC>(\n SetProcedureOrderMattersUC.type,\n );\n}\n\nexport function makeSetProcedureOrderMattersUC(\n appObject: AppObject,\n): SetProcedureOrderMattersUC {\n return new SetProcedureOrderMattersUCImp(appObject);\n}\n\nclass SetProcedureOrderMattersUCImp extends SetProcedureOrderMattersUC {\n private get procedureEntity(): ProcedureEntity | undefined {\n return ProcedureEntity.get(this.appObjects);\n }\n\n setOrderMatters(orderMatters: boolean): void {\n const entity = this.procedureEntity;\n if (!entity) {\n this.warn(\"ProcedureEntity not found - cannot set orderMatters\");\n return;\n }\n\n entity.setOrderMatters(orderMatters);\n }\n\n constructor(appObject: AppObject) {\n super(appObject, SetProcedureOrderMattersUC.type);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SetProcedureOrderMattersUC.test.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/SetProcedureOrderMattersUC.test.ts"],"names":[],"mappings":";;AAAA,sCAA+D;AAC/D,iEAAmF;AACnF,6EAGsC;AAEtC,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,IAAI,UAAyB,CAAC;IAC9B,IAAI,eAAgC,CAAC;IACrC,IAAI,iBAA6C,CAAC;IAElD,UAAU,CAAC,GAAG,EAAE;QACd,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;QACjC,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAEtD,eAAe,GAAG,IAAA,qCAAmB,EAAC,SAAS,CAAC,CAAC;QACjD,iBAAiB,GAAG,IAAA,2DAA8B,EAAC,SAAS,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAC9C,MAAM,SAAS,GAAG,uDAA0B,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC7D,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,CACtC,uDAA0B,CAAC,IAAI,CAChC,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEL,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhD,iBAAiB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAEzC,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,iBAAiB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEjD,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,YAAY,GAAG,eAAe,CAAC,YAAY,CAAC;QAElD,iBAAiB,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,CAAC;QAEjD,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEL,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QAClD,MAAM,kBAAkB,GAAG,IAAA,wBAAiB,GAAE,CAAC;QAC/C,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,IAAA,2DAA8B,EAAC,iBAAiB,CAAC,CAAC;QAErE,kBAAkB,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAE7C,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAElC,MAAM,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { AppObjectRepo, makeAppObjectRepo } from \"@vived/core\";\r\nimport { ProcedureEntity, makeProcedureEntity } from \"../Entities/ProcedureEntity\";\r\nimport {\r\n SetProcedureOrderMattersUC,\r\n makeSetProcedureOrderMattersUC,\r\n} from \"./SetProcedureOrderMattersUC\";\r\n\r\ndescribe(\"SetProcedureOrderMattersUC\", () => {\r\n let appObjects: AppObjectRepo;\r\n let procedureEntity: ProcedureEntity;\r\n let setOrderMattersUC: SetProcedureOrderMattersUC;\r\n\r\n beforeEach(() => {\r\n appObjects = makeAppObjectRepo();\r\n const appObject = appObjects.getOrCreate(\"Procedure\");\r\n\r\n procedureEntity = makeProcedureEntity(appObject);\r\n setOrderMattersUC = makeSetProcedureOrderMattersUC(appObject);\r\n });\r\n\r\n it(\"can be retrieved via static get method\", () => {\r\n const retrieved = SetProcedureOrderMattersUC.get(appObjects);\r\n expect(retrieved).toBe(setOrderMattersUC);\r\n });\r\n\r\n it(\"registers itself on the AppObject\", () => {\r\n const appObject = appObjects.getOrCreate(\"Procedure\");\r\n const retrieved = appObject.getComponent<SetProcedureOrderMattersUC>(\r\n SetProcedureOrderMattersUC.type,\r\n );\r\n expect(retrieved).toBe(setOrderMattersUC);\r\n });\r\n\r\n it(\"successfully sets orderMatters to false\", () => {\r\n expect(procedureEntity.orderMatters).toBe(true);\r\n\r\n setOrderMattersUC.setOrderMatters(false);\r\n\r\n expect(procedureEntity.orderMatters).toBe(false);\r\n });\r\n\r\n it(\"successfully sets orderMatters to true\", () => {\r\n setOrderMattersUC.setOrderMatters(false);\r\n expect(procedureEntity.orderMatters).toBe(false);\r\n\r\n setOrderMattersUC.setOrderMatters(true);\r\n expect(procedureEntity.orderMatters).toBe(true);\r\n });\r\n\r\n it(\"triggers state update when property changes\", () => {\r\n const initialState = procedureEntity.orderMatters;\r\n\r\n setOrderMattersUC.setOrderMatters(!initialState);\r\n\r\n expect(procedureEntity.orderMatters).toBe(!initialState);\r\n });\r\n\r\n it(\"handles missing ProcedureEntity gracefully\", () => {\r\n const isolatedAppObjects = makeAppObjectRepo();\r\n const isolatedAppObject = isolatedAppObjects.getOrCreate(\"Isolated\");\r\n const isolatedUC = makeSetProcedureOrderMattersUC(isolatedAppObject);\r\n\r\n isolatedAppObjects.submitWarning = jest.fn();\r\n\r\n isolatedUC.setOrderMatters(false);\r\n\r\n expect(isolatedAppObjects.submitWarning).toHaveBeenCalled();\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"SetProcedureOrderMattersUC.test.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/SetProcedureOrderMattersUC.test.ts"],"names":[],"mappings":";;AAAA,sCAA+D;AAC/D,iEAGqC;AACrC,6EAGsC;AAEtC,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,IAAI,UAAyB,CAAC;IAC9B,IAAI,eAAgC,CAAC;IACrC,IAAI,iBAA6C,CAAC;IAElD,UAAU,CAAC,GAAG,EAAE;QACd,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;QACjC,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAEtD,eAAe,GAAG,IAAA,qCAAmB,EAAC,SAAS,CAAC,CAAC;QACjD,iBAAiB,GAAG,IAAA,2DAA8B,EAAC,SAAS,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,SAAS,GAAG,uDAA0B,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC7D,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,CACtC,uDAA0B,CAAC,IAAI,CAChC,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhD,iBAAiB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAEzC,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,iBAAiB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEjD,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,YAAY,GAAG,eAAe,CAAC,YAAY,CAAC;QAElD,iBAAiB,CAAC,eAAe,CAAC,CAAC,YAAY,CAAC,CAAC;QAEjD,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,kBAAkB,GAAG,IAAA,wBAAiB,GAAE,CAAC;QAC/C,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,IAAA,2DAA8B,EAAC,iBAAiB,CAAC,CAAC;QAErE,kBAAkB,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAE7C,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAElC,MAAM,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { AppObjectRepo, makeAppObjectRepo } from \"@vived/core\";\nimport {\n ProcedureEntity,\n makeProcedureEntity,\n} from \"../Entities/ProcedureEntity\";\nimport {\n SetProcedureOrderMattersUC,\n makeSetProcedureOrderMattersUC,\n} from \"./SetProcedureOrderMattersUC\";\n\ndescribe(\"SetProcedureOrderMattersUC\", () => {\n let appObjects: AppObjectRepo;\n let procedureEntity: ProcedureEntity;\n let setOrderMattersUC: SetProcedureOrderMattersUC;\n\n beforeEach(() => {\n appObjects = makeAppObjectRepo();\n const appObject = appObjects.getOrCreate(\"Procedure\");\n\n procedureEntity = makeProcedureEntity(appObject);\n setOrderMattersUC = makeSetProcedureOrderMattersUC(appObject);\n });\n\n it(\"can be retrieved via static get method\", () => {\n const retrieved = SetProcedureOrderMattersUC.get(appObjects);\n expect(retrieved).toBe(setOrderMattersUC);\n });\n\n it(\"registers itself on the AppObject\", () => {\n const appObject = appObjects.getOrCreate(\"Procedure\");\n const retrieved = appObject.getComponent<SetProcedureOrderMattersUC>(\n SetProcedureOrderMattersUC.type,\n );\n expect(retrieved).toBe(setOrderMattersUC);\n });\n\n it(\"successfully sets orderMatters to false\", () => {\n expect(procedureEntity.orderMatters).toBe(true);\n\n setOrderMattersUC.setOrderMatters(false);\n\n expect(procedureEntity.orderMatters).toBe(false);\n });\n\n it(\"successfully sets orderMatters to true\", () => {\n setOrderMattersUC.setOrderMatters(false);\n expect(procedureEntity.orderMatters).toBe(false);\n\n setOrderMattersUC.setOrderMatters(true);\n expect(procedureEntity.orderMatters).toBe(true);\n });\n\n it(\"triggers state update when property changes\", () => {\n const initialState = procedureEntity.orderMatters;\n\n setOrderMattersUC.setOrderMatters(!initialState);\n\n expect(procedureEntity.orderMatters).toBe(!initialState);\n });\n\n it(\"handles missing ProcedureEntity gracefully\", () => {\n const isolatedAppObjects = makeAppObjectRepo();\n const isolatedAppObject = isolatedAppObjects.getOrCreate(\"Isolated\");\n const isolatedUC = makeSetProcedureOrderMattersUC(isolatedAppObject);\n\n isolatedAppObjects.submitWarning = jest.fn();\n\n isolatedUC.setOrderMatters(false);\n\n expect(isolatedAppObjects.submitWarning).toHaveBeenCalled();\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SetProcedureShowHintsUC.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/SetProcedureShowHintsUC.ts"],"names":[],"mappings":";;;AAgBA,kEAIC;AApBD,sCAAoE;AACpE,iEAA8D;AAE9D,MAAsB,uBAAwB,SAAQ,kBAAW;;AAAjE,0DAWC;AAViB,4BAAI,GAAG,yBAAyB,CAAC;AAI1C,2BAAG,GAAG,CACX,UAAyB,EACY,EAAE,CACvC,UAAU;KACP,WAAW,CAAC,WAAW,CAAC;KACxB,YAAY,CAA0B,uBAAuB,CAAC,IAAI,CAAC,CAAC;AAG3E,SAAgB,2BAA2B,CACzC,SAAoB;IAEpB,OAAO,IAAI,0BAA0B,CAAC,SAAS,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,0BAA2B,SAAQ,uBAAuB;IAC9D,IAAY,eAAe;QACzB,OAAO,iCAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,YAAY,CAAC,SAAkB;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectUC, AppObjectRepo } from \"@vived/core\";\r\nimport { ProcedureEntity } from \"../Entities/ProcedureEntity\";\r\n\r\nexport abstract class SetProcedureShowHintsUC extends AppObjectUC {\r\n static readonly type = \"SetProcedureShowHintsUC\";\r\n\r\n abstract setShowHints(showHints: boolean): void;\r\n\r\n static get = (\r\n appObjects: AppObjectRepo,\r\n ): SetProcedureShowHintsUC | undefined =>\r\n appObjects\r\n .getOrCreate(\"Procedure\")\r\n .getComponent<SetProcedureShowHintsUC>(SetProcedureShowHintsUC.type);\r\n}\r\n\r\nexport function makeSetProcedureShowHintsUC(\r\n appObject: AppObject,\r\n): SetProcedureShowHintsUC {\r\n return new SetProcedureShowHintsUCImp(appObject);\r\n}\r\n\r\nclass SetProcedureShowHintsUCImp extends SetProcedureShowHintsUC {\r\n private get procedureEntity(): ProcedureEntity | undefined {\r\n return ProcedureEntity.get(this.appObjects);\r\n }\r\n\r\n setShowHints(showHints: boolean): void {\r\n const entity = this.procedureEntity;\r\n if (!entity) {\r\n this.warn(\"ProcedureEntity not found - cannot set showHints\");\r\n return;\r\n }\r\n\r\n entity.setShowHints(showHints);\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, SetProcedureShowHintsUC.type);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"SetProcedureShowHintsUC.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/SetProcedureShowHintsUC.ts"],"names":[],"mappings":";;;AAgBA,kEAIC;AApBD,sCAAoE;AACpE,iEAA8D;AAE9D,MAAsB,uBAAwB,SAAQ,kBAAW;;AAAjE,0DAWC;AAViB,4BAAI,GAAG,yBAAyB,CAAC;AAI1C,2BAAG,GAAG,CACX,UAAyB,EACY,EAAE,CACvC,UAAU;KACP,WAAW,CAAC,WAAW,CAAC;KACxB,YAAY,CAA0B,uBAAuB,CAAC,IAAI,CAAC,CAAC;AAG3E,SAAgB,2BAA2B,CACzC,SAAoB;IAEpB,OAAO,IAAI,0BAA0B,CAAC,SAAS,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,0BAA2B,SAAQ,uBAAuB;IAC9D,IAAY,eAAe;QACzB,OAAO,iCAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,YAAY,CAAC,SAAkB;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectUC, AppObjectRepo } from \"@vived/core\";\nimport { ProcedureEntity } from \"../Entities/ProcedureEntity\";\n\nexport abstract class SetProcedureShowHintsUC extends AppObjectUC {\n static readonly type = \"SetProcedureShowHintsUC\";\n\n abstract setShowHints(showHints: boolean): void;\n\n static get = (\n appObjects: AppObjectRepo,\n ): SetProcedureShowHintsUC | undefined =>\n appObjects\n .getOrCreate(\"Procedure\")\n .getComponent<SetProcedureShowHintsUC>(SetProcedureShowHintsUC.type);\n}\n\nexport function makeSetProcedureShowHintsUC(\n appObject: AppObject,\n): SetProcedureShowHintsUC {\n return new SetProcedureShowHintsUCImp(appObject);\n}\n\nclass SetProcedureShowHintsUCImp extends SetProcedureShowHintsUC {\n private get procedureEntity(): ProcedureEntity | undefined {\n return ProcedureEntity.get(this.appObjects);\n }\n\n setShowHints(showHints: boolean): void {\n const entity = this.procedureEntity;\n if (!entity) {\n this.warn(\"ProcedureEntity not found - cannot set showHints\");\n return;\n }\n\n entity.setShowHints(showHints);\n }\n\n constructor(appObject: AppObject) {\n super(appObject, SetProcedureShowHintsUC.type);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SetProcedureShowHintsUC.test.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/SetProcedureShowHintsUC.test.ts"],"names":[],"mappings":";;AAAA,sCAA+D;AAC/D,iEAAmF;AACnF,uEAGmC;AAEnC,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,IAAI,UAAyB,CAAC;IAC9B,IAAI,eAAgC,CAAC;IACrC,IAAI,cAAuC,CAAC;IAE5C,UAAU,CAAC,GAAG,EAAE;QACd,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;QACjC,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAEtD,eAAe,GAAG,IAAA,qCAAmB,EAAC,SAAS,CAAC,CAAC;QACjD,cAAc,GAAG,IAAA,qDAA2B,EAAC,SAAS,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAC9C,MAAM,SAAS,GAAG,iDAAuB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,CACtC,iDAAuB,CAAC,IAAI,CAC7B,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEL,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7C,cAAc,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAEnC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,cAAc,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE9C,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC;QAE/C,cAAc,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC;QAE3C,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEL,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QAClD,MAAM,kBAAkB,GAAG,IAAA,wBAAiB,GAAE,CAAC;QAC/C,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,IAAA,qDAA2B,EAAC,iBAAiB,CAAC,CAAC;QAElE,kBAAkB,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAE7C,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAE/B,MAAM,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC","sourcesContent":["import { AppObjectRepo, makeAppObjectRepo } from \"@vived/core\";\r\nimport { ProcedureEntity, makeProcedureEntity } from \"../Entities/ProcedureEntity\";\r\nimport {\r\n SetProcedureShowHintsUC,\r\n makeSetProcedureShowHintsUC,\r\n} from \"./SetProcedureShowHintsUC\";\r\n\r\ndescribe(\"SetProcedureShowHintsUC\", () => {\r\n let appObjects: AppObjectRepo;\r\n let procedureEntity: ProcedureEntity;\r\n let setShowHintsUC: SetProcedureShowHintsUC;\r\n\r\n beforeEach(() => {\r\n appObjects = makeAppObjectRepo();\r\n const appObject = appObjects.getOrCreate(\"Procedure\");\r\n\r\n procedureEntity = makeProcedureEntity(appObject);\r\n setShowHintsUC = makeSetProcedureShowHintsUC(appObject);\r\n });\r\n\r\n it(\"can be retrieved via static get method\", () => {\r\n const retrieved = SetProcedureShowHintsUC.get(appObjects);\r\n expect(retrieved).toBe(setShowHintsUC);\r\n });\r\n\r\n it(\"registers itself on the AppObject\", () => {\r\n const appObject = appObjects.getOrCreate(\"Procedure\");\r\n const retrieved = appObject.getComponent<SetProcedureShowHintsUC>(\r\n SetProcedureShowHintsUC.type,\r\n );\r\n expect(retrieved).toBe(setShowHintsUC);\r\n });\r\n\r\n it(\"successfully sets showHints to false\", () => {\r\n expect(procedureEntity.showHints).toBe(true);\r\n\r\n setShowHintsUC.setShowHints(false);\r\n\r\n expect(procedureEntity.showHints).toBe(false);\r\n });\r\n\r\n it(\"successfully sets showHints to true\", () => {\r\n setShowHintsUC.setShowHints(false);\r\n expect(procedureEntity.showHints).toBe(false);\r\n\r\n setShowHintsUC.setShowHints(true);\r\n expect(procedureEntity.showHints).toBe(true);\r\n });\r\n\r\n it(\"triggers state update when property changes\", () => {\r\n const initialState = procedureEntity.showHints;\r\n\r\n setShowHintsUC.setShowHints(!initialState);\r\n\r\n expect(procedureEntity.showHints).toBe(!initialState);\r\n });\r\n\r\n it(\"handles missing ProcedureEntity gracefully\", () => {\r\n const isolatedAppObjects = makeAppObjectRepo();\r\n const isolatedAppObject = isolatedAppObjects.getOrCreate(\"Isolated\");\r\n const isolatedUC = makeSetProcedureShowHintsUC(isolatedAppObject);\r\n\r\n isolatedAppObjects.submitWarning = jest.fn();\r\n\r\n isolatedUC.setShowHints(false);\r\n\r\n expect(isolatedAppObjects.submitWarning).toHaveBeenCalled();\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"SetProcedureShowHintsUC.test.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/SetProcedureShowHintsUC.test.ts"],"names":[],"mappings":";;AAAA,sCAA+D;AAC/D,iEAGqC;AACrC,uEAGmC;AAEnC,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,IAAI,UAAyB,CAAC;IAC9B,IAAI,eAAgC,CAAC;IACrC,IAAI,cAAuC,CAAC;IAE5C,UAAU,CAAC,GAAG,EAAE;QACd,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;QACjC,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAEtD,eAAe,GAAG,IAAA,qCAAmB,EAAC,SAAS,CAAC,CAAC;QACjD,cAAc,GAAG,IAAA,qDAA2B,EAAC,SAAS,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,SAAS,GAAG,iDAAuB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,CACtC,iDAAuB,CAAC,IAAI,CAC7B,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7C,cAAc,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAEnC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,cAAc,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE9C,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC;QAE/C,cAAc,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC;QAE3C,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,kBAAkB,GAAG,IAAA,wBAAiB,GAAE,CAAC;QAC/C,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,IAAA,qDAA2B,EAAC,iBAAiB,CAAC,CAAC;QAElE,kBAAkB,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAE7C,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAE/B,MAAM,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { AppObjectRepo, makeAppObjectRepo } from \"@vived/core\";\nimport {\n ProcedureEntity,\n makeProcedureEntity,\n} from \"../Entities/ProcedureEntity\";\nimport {\n SetProcedureShowHintsUC,\n makeSetProcedureShowHintsUC,\n} from \"./SetProcedureShowHintsUC\";\n\ndescribe(\"SetProcedureShowHintsUC\", () => {\n let appObjects: AppObjectRepo;\n let procedureEntity: ProcedureEntity;\n let setShowHintsUC: SetProcedureShowHintsUC;\n\n beforeEach(() => {\n appObjects = makeAppObjectRepo();\n const appObject = appObjects.getOrCreate(\"Procedure\");\n\n procedureEntity = makeProcedureEntity(appObject);\n setShowHintsUC = makeSetProcedureShowHintsUC(appObject);\n });\n\n it(\"can be retrieved via static get method\", () => {\n const retrieved = SetProcedureShowHintsUC.get(appObjects);\n expect(retrieved).toBe(setShowHintsUC);\n });\n\n it(\"registers itself on the AppObject\", () => {\n const appObject = appObjects.getOrCreate(\"Procedure\");\n const retrieved = appObject.getComponent<SetProcedureShowHintsUC>(\n SetProcedureShowHintsUC.type,\n );\n expect(retrieved).toBe(setShowHintsUC);\n });\n\n it(\"successfully sets showHints to false\", () => {\n expect(procedureEntity.showHints).toBe(true);\n\n setShowHintsUC.setShowHints(false);\n\n expect(procedureEntity.showHints).toBe(false);\n });\n\n it(\"successfully sets showHints to true\", () => {\n setShowHintsUC.setShowHints(false);\n expect(procedureEntity.showHints).toBe(false);\n\n setShowHintsUC.setShowHints(true);\n expect(procedureEntity.showHints).toBe(true);\n });\n\n it(\"triggers state update when property changes\", () => {\n const initialState = procedureEntity.showHints;\n\n setShowHintsUC.setShowHints(!initialState);\n\n expect(procedureEntity.showHints).toBe(!initialState);\n });\n\n it(\"handles missing ProcedureEntity gracefully\", () => {\n const isolatedAppObjects = makeAppObjectRepo();\n const isolatedAppObject = isolatedAppObjects.getOrCreate(\"Isolated\");\n const isolatedUC = makeSetProcedureShowHintsUC(isolatedAppObject);\n\n isolatedAppObjects.submitWarning = jest.fn();\n\n isolatedUC.setShowHints(false);\n\n expect(isolatedAppObjects.submitWarning).toHaveBeenCalled();\n });\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SubmitProcedureQuizUC.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/SubmitProcedureQuizUC.ts"],"names":[],"mappings":";;;AAkBA,8DAIC;AAtBD,sCAAoE;AACpE,2CAA6C;AAC7C,iDAAqD;AACrD,iEAA8D;AAE9D,MAAsB,qBAAsB,SAAQ,kBAAW;;AAA/D,sDAWC;AAViB,0BAAI,GAAG,uBAAuB,CAAC;AAIxC,yBAAG,GAAG,CACX,UAAyB,EACU,EAAE,CACrC,UAAU;KACP,WAAW,CAAC,WAAW,CAAC;KACxB,YAAY,CAAwB,qBAAqB,CAAC,IAAI,CAAC,CAAC;AAGvE,SAAgB,yBAAyB,CACvC,SAAoB;IAEpB,OAAO,IAAI,wBAAwB,CAAC,SAAS,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,wBAAyB,SAAQ,qBAAqB;IAC1D,IAAY,eAAe;QACzB,OAAO,iCAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,IAAY,YAAY;QACtB,OAAO,sBAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM;QACJ,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,MAAM,CAAC,MAAM,EAAE,CAAC;QAEhB,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CACP,sFAAsF,CACvF,CAAC;YACF,OAAO;QACT,CAAC;QAED,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;QAE3B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,UAAU,IAAI,CAAC,CAAC;QAC5C,IAAA,8BAAiB,EACf;YACE,KAAK;YACL,QAAQ,EAAE,GAAG;YACb,WAAW,EAAE,OAAO,CAAC,SAAS;SAC/B,EACD,IAAI,CAAC,UAAU,CAChB,CAAC;IACJ,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectUC, AppObjectRepo } from \"@vived/core\";\r\nimport { BaseAppState } from \"../../BaseApp\";\r\nimport { submitScoreResult } from \"../../Dispatcher\";\r\nimport { ProcedureEntity } from \"../Entities/ProcedureEntity\";\r\n\r\nexport abstract class SubmitProcedureQuizUC extends AppObjectUC {\r\n static readonly type = \"SubmitProcedureQuizUC\";\r\n\r\n abstract submit(): void;\r\n\r\n static get = (\r\n appObjects: AppObjectRepo,\r\n ): SubmitProcedureQuizUC | undefined =>\r\n appObjects\r\n .getOrCreate(\"Procedure\")\r\n .getComponent<SubmitProcedureQuizUC>(SubmitProcedureQuizUC.type);\r\n}\r\n\r\nexport function makeSubmitProcedureQuizUC(\r\n appObject: AppObject,\r\n): SubmitProcedureQuizUC {\r\n return new SubmitProcedureQuizUCImp(appObject);\r\n}\r\n\r\nclass SubmitProcedureQuizUCImp extends SubmitProcedureQuizUC {\r\n private get procedureEntity(): ProcedureEntity | undefined {\r\n return ProcedureEntity.get(this.appObjects);\r\n }\r\n\r\n private get baseAppState(): BaseAppState | undefined {\r\n return BaseAppState.get(this.appObjects);\r\n }\r\n\r\n submit(): void {\r\n const entity = this.procedureEntity;\r\n if (!entity) {\r\n this.warn(\"ProcedureEntity not found - cannot submit quiz\");\r\n return;\r\n }\r\n\r\n if (!entity.isQuiz) {\r\n this.warn(\"Cannot submit - not in quiz mode\");\r\n return;\r\n }\r\n\r\n entity.submit();\r\n\r\n const baseApp = this.baseAppState;\r\n if (!baseApp) {\r\n this.warn(\r\n \"BaseAppState not found - quiz submitted locally but score cannot be reported to host\",\r\n );\r\n return;\r\n }\r\n\r\n baseApp.isReviewing = true;\r\n\r\n const score = entity.score?.percentage ?? 0;\r\n submitScoreResult(\r\n {\r\n score,\r\n maxScore: 100,\r\n description: baseApp.slideText,\r\n },\r\n this.appObjects,\r\n );\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, SubmitProcedureQuizUC.type);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"SubmitProcedureQuizUC.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/SubmitProcedureQuizUC.ts"],"names":[],"mappings":";;;AAgBA,8DAIC;AApBD,sCAAoE;AACpE,2CAA6C;AAC7C,iDAAqD;AACrD,iEAA8D;AAE9D,MAAsB,qBAAsB,SAAQ,kBAAW;;AAA/D,sDASC;AARiB,0BAAI,GAAG,uBAAuB,CAAC;AAIxC,yBAAG,GAAG,CAAC,UAAyB,EAAqC,EAAE,CAC5E,UAAU;KACP,WAAW,CAAC,WAAW,CAAC;KACxB,YAAY,CAAwB,qBAAqB,CAAC,IAAI,CAAC,CAAC;AAGvE,SAAgB,yBAAyB,CACvC,SAAoB;IAEpB,OAAO,IAAI,wBAAwB,CAAC,SAAS,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,wBAAyB,SAAQ,qBAAqB;IAC1D,IAAY,eAAe;QACzB,OAAO,iCAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,IAAY,YAAY;QACtB,OAAO,sBAAY,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM;QACJ,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,MAAM,CAAC,MAAM,EAAE,CAAC;QAEhB,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CACP,sFAAsF,CACvF,CAAC;YACF,OAAO;QACT,CAAC;QAED,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;QAE3B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,UAAU,IAAI,CAAC,CAAC;QAC5C,IAAA,8BAAiB,EACf;YACE,KAAK;YACL,QAAQ,EAAE,GAAG;YACb,WAAW,EAAE,OAAO,CAAC,SAAS;SAC/B,EACD,IAAI,CAAC,UAAU,CAChB,CAAC;IACJ,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectUC, AppObjectRepo } from \"@vived/core\";\nimport { BaseAppState } from \"../../BaseApp\";\nimport { submitScoreResult } from \"../../Dispatcher\";\nimport { ProcedureEntity } from \"../Entities/ProcedureEntity\";\n\nexport abstract class SubmitProcedureQuizUC extends AppObjectUC {\n static readonly type = \"SubmitProcedureQuizUC\";\n\n abstract submit(): void;\n\n static get = (appObjects: AppObjectRepo): SubmitProcedureQuizUC | undefined =>\n appObjects\n .getOrCreate(\"Procedure\")\n .getComponent<SubmitProcedureQuizUC>(SubmitProcedureQuizUC.type);\n}\n\nexport function makeSubmitProcedureQuizUC(\n appObject: AppObject,\n): SubmitProcedureQuizUC {\n return new SubmitProcedureQuizUCImp(appObject);\n}\n\nclass SubmitProcedureQuizUCImp extends SubmitProcedureQuizUC {\n private get procedureEntity(): ProcedureEntity | undefined {\n return ProcedureEntity.get(this.appObjects);\n }\n\n private get baseAppState(): BaseAppState | undefined {\n return BaseAppState.get(this.appObjects);\n }\n\n submit(): void {\n const entity = this.procedureEntity;\n if (!entity) {\n this.warn(\"ProcedureEntity not found - cannot submit quiz\");\n return;\n }\n\n if (!entity.isQuiz) {\n this.warn(\"Cannot submit - not in quiz mode\");\n return;\n }\n\n entity.submit();\n\n const baseApp = this.baseAppState;\n if (!baseApp) {\n this.warn(\n \"BaseAppState not found - quiz submitted locally but score cannot be reported to host\",\n );\n return;\n }\n\n baseApp.isReviewing = true;\n\n const score = entity.score?.percentage ?? 0;\n submitScoreResult(\n {\n score,\n maxScore: 100,\n description: baseApp.slideText,\n },\n this.appObjects,\n );\n }\n\n constructor(appObject: AppObject) {\n super(appObject, SubmitProcedureQuizUC.type);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SubmitProcedureQuizUC.test.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/SubmitProcedureQuizUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n AppObject,\r\n AppObjectRepo,\r\n makeAppObjectRepo,\r\n} from \"@vived/core\";\r\nimport { BaseAppState, makeBaseAppState } from \"../../BaseApp\";\r\nimport { SubmitResultResultUC } from \"../../Dispatcher\";\r\nimport { ProcedureEntity, makeProcedureEntity } from \"../Entities/ProcedureEntity\";\r\nimport {\r\n SubmitProcedureQuizUC,\r\n makeSubmitProcedureQuizUC,\r\n} from \"./SubmitProcedureQuizUC\";\r\n\r\nclass MockSubmitResultUC extends SubmitResultResultUC {\r\n submitHitResult = jest.fn();\r\n submitProgressResult = jest.fn();\r\n submitMultiHitResult = jest.fn();\r\n submitQualityResult = jest.fn();\r\n submitScoreResult = jest.fn();\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, SubmitResultResultUC.type);\r\n }\r\n}\r\n\r\ndescribe(\"SubmitProcedureQuizUC\", () => {\r\n let appObjects: AppObjectRepo;\r\n let procedureEntity: ProcedureEntity;\r\n let submitQuizUC: SubmitProcedureQuizUC;\r\n let baseAppState: BaseAppState;\r\n\r\n beforeEach(() => {\r\n jest.restoreAllMocks();\r\n\r\n appObjects = makeAppObjectRepo();\r\n const appObject = appObjects.getOrCreate(\"Procedure\");\r\n\r\n procedureEntity = makeProcedureEntity(appObject);\r\n submitQuizUC = makeSubmitProcedureQuizUC(appObject);\r\n\r\n baseAppState = makeBaseAppState(appObject);\r\n appObjects.registerSingleton(baseAppState);\r\n baseAppState.slideText = \"Procedure challenge description\";\r\n });\r\n\r\n const createSubmitResultMock = (\r\n targetAppObjects: AppObjectRepo,\r\n ): MockSubmitResultUC => {\r\n const mockSubmitResult = new MockSubmitResultUC(\r\n targetAppObjects.getOrCreate(\"Dispatcher\"),\r\n );\r\n targetAppObjects.registerSingleton(mockSubmitResult);\r\n return mockSubmitResult;\r\n };\r\n\r\n it(\"can be retrieved via static get method\", () => {\r\n const retrieved = SubmitProcedureQuizUC.get(appObjects);\r\n expect(retrieved).toBe(submitQuizUC);\r\n });\r\n\r\n it(\"submits score result to host and enters review mode\", () => {\r\n const mockSubmitResult = createSubmitResultMock(appObjects);\r\n\r\n procedureEntity.setIsQuiz(true);\r\n procedureEntity.addEventId(\"event-1\");\r\n procedureEntity.addEventId(\"event-2\");\r\n procedureEntity.recordUserEvent(\"event-1\");\r\n\r\n submitQuizUC.submit();\r\n\r\n expect(mockSubmitResult.submitScoreResult).toHaveBeenCalledWith({\r\n score: 50,\r\n maxScore: 100,\r\n description: \"Procedure challenge description\",\r\n });\r\n expect(baseAppState.isReviewing).toBe(true);\r\n });\r\n\r\n it(\"warns and does not submit score when not in quiz mode\", () => {\r\n const warningSpy = jest.fn();\r\n appObjects.submitWarning = warningSpy;\r\n const mockSubmitResult = createSubmitResultMock(appObjects);\r\n\r\n submitQuizUC.submit();\r\n\r\n expect(mockSubmitResult.submitScoreResult).not.toHaveBeenCalled();\r\n expect(warningSpy).toHaveBeenCalledWith(\r\n \"Procedure/SubmitProcedureQuizUC\",\r\n \"Cannot submit - not in quiz mode\",\r\n );\r\n });\r\n\r\n it(\"warns and does not submit score when ProcedureEntity is missing\", () => {\r\n const isolatedAppObjects = makeAppObjectRepo();\r\n const isolatedAppObject = isolatedAppObjects.getOrCreate(\"Procedure\");\r\n const isolatedUC = makeSubmitProcedureQuizUC(isolatedAppObject);\r\n const warningSpy = jest.fn();\r\n isolatedAppObjects.submitWarning = warningSpy;\r\n\r\n isolatedUC.submit();\r\n\r\n expect(warningSpy).toHaveBeenCalledWith(\r\n \"Procedure/SubmitProcedureQuizUC\",\r\n \"ProcedureEntity not found - cannot submit quiz\",\r\n );\r\n });\r\n\r\n it(\"warns and does not submit score when BaseAppState is missing\", () => {\r\n const noBaseAppObjects = makeAppObjectRepo();\r\n const appObject = noBaseAppObjects.getOrCreate(\"Procedure\");\r\n const entity = makeProcedureEntity(appObject);\r\n const uc = makeSubmitProcedureQuizUC(appObject);\r\n const warningSpy = jest.fn();\r\n noBaseAppObjects.submitWarning = warningSpy;\r\n\r\n const mockSubmitResult = createSubmitResultMock(noBaseAppObjects);\r\n\r\n entity.setIsQuiz(true);\r\n entity.addEventId(\"event-1\");\r\n entity.recordUserEvent(\"event-1\");\r\n\r\n uc.submit();\r\n\r\n expect(mockSubmitResult.submitScoreResult).not.toHaveBeenCalled();\r\n expect(warningSpy).toHaveBeenCalledWith(\r\n \"Procedure/SubmitProcedureQuizUC\",\r\n \"BaseAppState not found - quiz submitted locally but score cannot be reported to host\",\r\n );\r\n expect(entity.isSubmitted).toBe(true);\r\n });\r\n\r\n it(\"submits locally and warns when SubmitResultResultUC is missing\", () => {\r\n const warningSpy = jest.fn();\r\n appObjects.submitWarning = warningSpy;\r\n\r\n procedureEntity.setIsQuiz(true);\r\n procedureEntity.addEventId(\"event-1\");\r\n procedureEntity.recordUserEvent(\"event-1\");\r\n\r\n submitQuizUC.submit();\r\n\r\n expect(procedureEntity.isSubmitted).toBe(true);\r\n expect(procedureEntity.score?.percentage).toBe(100);\r\n expect(warningSpy).toHaveBeenCalledWith(\r\n \"submitScoreResult\",\r\n \"Can't find SubmitResultResultUC\",\r\n );\r\n expect(baseAppState.isReviewing).toBe(true);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"SubmitProcedureQuizUC.test.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/SubmitProcedureQuizUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectRepo, makeAppObjectRepo } from \"@vived/core\";\nimport { BaseAppState, makeBaseAppState } from \"../../BaseApp\";\nimport { SubmitResultResultUC } from \"../../Dispatcher\";\nimport {\n ProcedureEntity,\n makeProcedureEntity,\n} from \"../Entities/ProcedureEntity\";\nimport {\n SubmitProcedureQuizUC,\n makeSubmitProcedureQuizUC,\n} from \"./SubmitProcedureQuizUC\";\n\nclass MockSubmitResultUC extends SubmitResultResultUC {\n submitHitResult = jest.fn();\n submitProgressResult = jest.fn();\n submitMultiHitResult = jest.fn();\n submitQualityResult = jest.fn();\n submitScoreResult = jest.fn();\n\n constructor(appObject: AppObject) {\n super(appObject, SubmitResultResultUC.type);\n }\n}\n\ndescribe(\"SubmitProcedureQuizUC\", () => {\n let appObjects: AppObjectRepo;\n let procedureEntity: ProcedureEntity;\n let submitQuizUC: SubmitProcedureQuizUC;\n let baseAppState: BaseAppState;\n\n beforeEach(() => {\n jest.restoreAllMocks();\n\n appObjects = makeAppObjectRepo();\n const appObject = appObjects.getOrCreate(\"Procedure\");\n\n procedureEntity = makeProcedureEntity(appObject);\n submitQuizUC = makeSubmitProcedureQuizUC(appObject);\n\n baseAppState = makeBaseAppState(appObject);\n appObjects.registerSingleton(baseAppState);\n baseAppState.slideText = \"Procedure challenge description\";\n });\n\n const createSubmitResultMock = (\n targetAppObjects: AppObjectRepo,\n ): MockSubmitResultUC => {\n const mockSubmitResult = new MockSubmitResultUC(\n targetAppObjects.getOrCreate(\"Dispatcher\"),\n );\n targetAppObjects.registerSingleton(mockSubmitResult);\n return mockSubmitResult;\n };\n\n it(\"can be retrieved via static get method\", () => {\n const retrieved = SubmitProcedureQuizUC.get(appObjects);\n expect(retrieved).toBe(submitQuizUC);\n });\n\n it(\"submits score result to host and enters review mode\", () => {\n const mockSubmitResult = createSubmitResultMock(appObjects);\n\n procedureEntity.setIsQuiz(true);\n procedureEntity.addEventId(\"event-1\");\n procedureEntity.addEventId(\"event-2\");\n procedureEntity.recordUserEvent(\"event-1\");\n\n submitQuizUC.submit();\n\n expect(mockSubmitResult.submitScoreResult).toHaveBeenCalledWith({\n score: 50,\n maxScore: 100,\n description: \"Procedure challenge description\",\n });\n expect(baseAppState.isReviewing).toBe(true);\n });\n\n it(\"warns and does not submit score when not in quiz mode\", () => {\n const warningSpy = jest.fn();\n appObjects.submitWarning = warningSpy;\n const mockSubmitResult = createSubmitResultMock(appObjects);\n\n submitQuizUC.submit();\n\n expect(mockSubmitResult.submitScoreResult).not.toHaveBeenCalled();\n expect(warningSpy).toHaveBeenCalledWith(\n \"Procedure/SubmitProcedureQuizUC\",\n \"Cannot submit - not in quiz mode\",\n );\n });\n\n it(\"warns and does not submit score when ProcedureEntity is missing\", () => {\n const isolatedAppObjects = makeAppObjectRepo();\n const isolatedAppObject = isolatedAppObjects.getOrCreate(\"Procedure\");\n const isolatedUC = makeSubmitProcedureQuizUC(isolatedAppObject);\n const warningSpy = jest.fn();\n isolatedAppObjects.submitWarning = warningSpy;\n\n isolatedUC.submit();\n\n expect(warningSpy).toHaveBeenCalledWith(\n \"Procedure/SubmitProcedureQuizUC\",\n \"ProcedureEntity not found - cannot submit quiz\",\n );\n });\n\n it(\"warns and does not submit score when BaseAppState is missing\", () => {\n const noBaseAppObjects = makeAppObjectRepo();\n const appObject = noBaseAppObjects.getOrCreate(\"Procedure\");\n const entity = makeProcedureEntity(appObject);\n const uc = makeSubmitProcedureQuizUC(appObject);\n const warningSpy = jest.fn();\n noBaseAppObjects.submitWarning = warningSpy;\n\n const mockSubmitResult = createSubmitResultMock(noBaseAppObjects);\n\n entity.setIsQuiz(true);\n entity.addEventId(\"event-1\");\n entity.recordUserEvent(\"event-1\");\n\n uc.submit();\n\n expect(mockSubmitResult.submitScoreResult).not.toHaveBeenCalled();\n expect(warningSpy).toHaveBeenCalledWith(\n \"Procedure/SubmitProcedureQuizUC\",\n \"BaseAppState not found - quiz submitted locally but score cannot be reported to host\",\n );\n expect(entity.isSubmitted).toBe(true);\n });\n\n it(\"submits locally and warns when SubmitResultResultUC is missing\", () => {\n const warningSpy = jest.fn();\n appObjects.submitWarning = warningSpy;\n\n procedureEntity.setIsQuiz(true);\n procedureEntity.addEventId(\"event-1\");\n procedureEntity.recordUserEvent(\"event-1\");\n\n submitQuizUC.submit();\n\n expect(procedureEntity.isSubmitted).toBe(true);\n expect(procedureEntity.score?.percentage).toBe(100);\n expect(warningSpy).toHaveBeenCalledWith(\n \"submitScoreResult\",\n \"Can't find SubmitResultResultUC\",\n );\n expect(baseAppState.isReviewing).toBe(true);\n });\n});\n"]}