@vived/app 5.0.5 → 5.0.7

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 (368) hide show
  1. package/dist/cjs/Babylon/Mocks/MockSceneRayPickUC.js +3 -1
  2. package/dist/cjs/Babylon/Mocks/MockSceneRayPickUC.js.map +1 -1
  3. package/dist/cjs/Babylon/UC/SceneRayPickUC.test.js +1 -0
  4. package/dist/cjs/Babylon/UC/SceneRayPickUC.test.js.map +1 -1
  5. package/dist/cjs/BaseApp/UC/EditSlideTextUC.test.js +8 -6
  6. package/dist/cjs/BaseApp/UC/EditSlideTextUC.test.js.map +1 -1
  7. package/dist/cjs/BaseApp/UC/UndoRedoEditSlideText.test.js +10 -6
  8. package/dist/cjs/BaseApp/UC/UndoRedoEditSlideText.test.js.map +1 -1
  9. package/dist/cjs/BaseApp/UC/UpdateContentSizeUC.test.js +8 -6
  10. package/dist/cjs/BaseApp/UC/UpdateContentSizeUC.test.js.map +1 -1
  11. package/dist/cjs/Callouts/Entities/CalloutEntity.js +1 -0
  12. package/dist/cjs/Callouts/Entities/CalloutEntity.js.map +1 -1
  13. package/dist/cjs/Callouts/Entities/CalloutEntity.test.js +1 -1
  14. package/dist/cjs/Callouts/Entities/CalloutEntity.test.js.map +1 -1
  15. package/dist/cjs/Callouts/UC/CreateCalloutUndoRedo.test.js +7 -4
  16. package/dist/cjs/Callouts/UC/CreateCalloutUndoRedo.test.js.map +1 -1
  17. package/dist/cjs/Callouts/UC/DeleteAllCalloutsUC.test.js +7 -4
  18. package/dist/cjs/Callouts/UC/DeleteAllCalloutsUC.test.js.map +1 -1
  19. package/dist/cjs/Callouts/UC/DeleteAllCalloutsUndoRedo.test.js +13 -7
  20. package/dist/cjs/Callouts/UC/DeleteAllCalloutsUndoRedo.test.js.map +1 -1
  21. package/dist/cjs/Callouts/UC/DeleteCallout.test.js +5 -2
  22. package/dist/cjs/Callouts/UC/DeleteCallout.test.js.map +1 -1
  23. package/dist/cjs/Callouts/UC/DeleteCalloutUndoRedo.test.js +9 -7
  24. package/dist/cjs/Callouts/UC/DeleteCalloutUndoRedo.test.js.map +1 -1
  25. package/dist/cjs/Callouts/UC/SetCalloutSizeUC.test.js +7 -5
  26. package/dist/cjs/Callouts/UC/SetCalloutSizeUC.test.js.map +1 -1
  27. package/dist/cjs/Callouts/UC/SetCalloutSizeUndoRedo.test.js +10 -6
  28. package/dist/cjs/Callouts/UC/SetCalloutSizeUndoRedo.test.js.map +1 -1
  29. package/dist/cjs/Callouts/UC/TryAddCallout.test.js +5 -4
  30. package/dist/cjs/Callouts/UC/TryAddCallout.test.js.map +1 -1
  31. package/dist/cjs/Callouts/UC/TryPanLabelUC.test.js +3 -2
  32. package/dist/cjs/Callouts/UC/TryPanLabelUC.test.js.map +1 -1
  33. package/dist/cjs/Challenge/UCs/SetChallengeUC.test.js +11 -9
  34. package/dist/cjs/Challenge/UCs/SetChallengeUC.test.js.map +1 -1
  35. package/dist/cjs/ChannelModel/UC/ClearAllColorOverlayUndoRedo.test.js +13 -7
  36. package/dist/cjs/ChannelModel/UC/ClearAllColorOverlayUndoRedo.test.js.map +1 -1
  37. package/dist/cjs/ChannelModel/UC/ClearModelObjectOverlaysUC.test.js +7 -4
  38. package/dist/cjs/ChannelModel/UC/ClearModelObjectOverlaysUC.test.js.map +1 -1
  39. package/dist/cjs/ChannelModel/UC/SelectChannelModelUC.test.js +5 -2
  40. package/dist/cjs/ChannelModel/UC/SelectChannelModelUC.test.js.map +1 -1
  41. package/dist/cjs/ChannelModel/UC/StickAllChannelModelObjectsUC.test.js +10 -8
  42. package/dist/cjs/ChannelModel/UC/StickAllChannelModelObjectsUC.test.js.map +1 -1
  43. package/dist/cjs/ChannelModel/UC/UnhideAllAppObjectsUndoRedo.test.js +9 -7
  44. package/dist/cjs/ChannelModel/UC/UnhideAllAppObjectsUndoRedo.test.js.map +1 -1
  45. package/dist/cjs/ChannelModel/UC/UnhideAllChannelModelObjectsUC.test.js +7 -5
  46. package/dist/cjs/ChannelModel/UC/UnhideAllChannelModelObjectsUC.test.js.map +1 -1
  47. package/dist/cjs/Dispatcher/Mocks/MockDispatchStateChange.js +3 -3
  48. package/dist/cjs/Dispatcher/Mocks/MockDispatchStateChange.js.map +1 -1
  49. package/dist/cjs/Environment/UCs/SetEnvironmentIntensityUC.test.js +11 -9
  50. package/dist/cjs/Environment/UCs/SetEnvironmentIntensityUC.test.js.map +1 -1
  51. package/dist/cjs/Environment/UCs/SetTexturalEnvironmentUC.test.js +9 -7
  52. package/dist/cjs/Environment/UCs/SetTexturalEnvironmentUC.test.js.map +1 -1
  53. package/dist/cjs/Hideable/UCs/HideUC.test.js +10 -8
  54. package/dist/cjs/Hideable/UCs/HideUC.test.js.map +1 -1
  55. package/dist/cjs/Hideable/UCs/TryHideWithPickUC.test.js +7 -6
  56. package/dist/cjs/Hideable/UCs/TryHideWithPickUC.test.js.map +1 -1
  57. package/dist/cjs/HoverLabel/UseCases/TryShowHoverLabel.test.js +12 -11
  58. package/dist/cjs/HoverLabel/UseCases/TryShowHoverLabel.test.js.map +1 -1
  59. package/dist/cjs/Label/UC/ClearCustomLabelUC.test.js +9 -4
  60. package/dist/cjs/Label/UC/ClearCustomLabelUC.test.js.map +1 -1
  61. package/dist/cjs/Label/UC/ClearCustomLabelUndoRedo.test.js +10 -6
  62. package/dist/cjs/Label/UC/ClearCustomLabelUndoRedo.test.js.map +1 -1
  63. package/dist/cjs/Label/UC/SetCustomLabelUC.test.js +9 -4
  64. package/dist/cjs/Label/UC/SetCustomLabelUC.test.js.map +1 -1
  65. package/dist/cjs/Label/UC/SetCustomLabelUndoRedo.test.js +10 -6
  66. package/dist/cjs/Label/UC/SetCustomLabelUndoRedo.test.js.map +1 -1
  67. package/dist/cjs/LabelDrop/UseCases/DeleteAllLabelDropUC.test.js +9 -7
  68. package/dist/cjs/LabelDrop/UseCases/DeleteAllLabelDropUC.test.js.map +1 -1
  69. package/dist/cjs/LabelDrop/UseCases/DeleteLabelDropUC.test.js +9 -7
  70. package/dist/cjs/LabelDrop/UseCases/DeleteLabelDropUC.test.js.map +1 -1
  71. package/dist/cjs/LabelDrop/UseCases/DragLabelDropUC.test.js +8 -6
  72. package/dist/cjs/LabelDrop/UseCases/DragLabelDropUC.test.js.map +1 -1
  73. package/dist/cjs/LabelDrop/UseCases/DragLabelDropWorldUC.test.js +17 -17
  74. package/dist/cjs/LabelDrop/UseCases/DragLabelDropWorldUC.test.js.map +1 -1
  75. package/dist/cjs/LabelDrop/UseCases/EditLabelDropUC.test.js +20 -18
  76. package/dist/cjs/LabelDrop/UseCases/EditLabelDropUC.test.js.map +1 -1
  77. package/dist/cjs/LabelDrop/UseCases/ToggleLabelDropTargetUC.test.js +4 -2
  78. package/dist/cjs/LabelDrop/UseCases/ToggleLabelDropTargetUC.test.js.map +1 -1
  79. package/dist/cjs/Landmarks/UseCases/AddLandmarkUndoRedo.test.js +10 -5
  80. package/dist/cjs/Landmarks/UseCases/AddLandmarkUndoRedo.test.js.map +1 -1
  81. package/dist/cjs/Landmarks/UseCases/DeleteAllLandmarksUC.test.js +5 -3
  82. package/dist/cjs/Landmarks/UseCases/DeleteAllLandmarksUC.test.js.map +1 -1
  83. package/dist/cjs/Landmarks/UseCases/DeleteAllLandmarksUndoRedo.test.js +11 -6
  84. package/dist/cjs/Landmarks/UseCases/DeleteAllLandmarksUndoRedo.test.js.map +1 -1
  85. package/dist/cjs/Landmarks/UseCases/DeleteLandmarkUC.test.js +10 -5
  86. package/dist/cjs/Landmarks/UseCases/DeleteLandmarkUC.test.js.map +1 -1
  87. package/dist/cjs/Landmarks/UseCases/DeleteLandmarkUndoRedo.test.js +10 -5
  88. package/dist/cjs/Landmarks/UseCases/DeleteLandmarkUndoRedo.test.js.map +1 -1
  89. package/dist/cjs/Landmarks/UseCases/SetLandmarkSizeUC.test.js +7 -5
  90. package/dist/cjs/Landmarks/UseCases/SetLandmarkSizeUC.test.js.map +1 -1
  91. package/dist/cjs/Landmarks/UseCases/SetLandmarkSizeUndoRedo.test.js +10 -6
  92. package/dist/cjs/Landmarks/UseCases/SetLandmarkSizeUndoRedo.test.js.map +1 -1
  93. package/dist/cjs/Landmarks/UseCases/TryAddNewLandmarkUC.test.js +29 -15
  94. package/dist/cjs/Landmarks/UseCases/TryAddNewLandmarkUC.test.js.map +1 -1
  95. package/dist/cjs/Landmarks/UseCases/TryPreviewLandmarkUC.test.js +4 -3
  96. package/dist/cjs/Landmarks/UseCases/TryPreviewLandmarkUC.test.js.map +1 -1
  97. package/dist/cjs/ObjectPick/UseCases/AddCorrectObjectIdUC.test.js +10 -8
  98. package/dist/cjs/ObjectPick/UseCases/AddCorrectObjectIdUC.test.js.map +1 -1
  99. package/dist/cjs/ObjectPick/UseCases/ClearCorrectObjectIdsUC.test.js +10 -8
  100. package/dist/cjs/ObjectPick/UseCases/ClearCorrectObjectIdsUC.test.js.map +1 -1
  101. package/dist/cjs/ObjectPick/UseCases/RemoveCorrectObjectIdUC.test.js +10 -8
  102. package/dist/cjs/ObjectPick/UseCases/RemoveCorrectObjectIdUC.test.js.map +1 -1
  103. package/dist/cjs/ObjectPick/UseCases/TrySelectObjectPickUC.test.js +18 -15
  104. package/dist/cjs/ObjectPick/UseCases/TrySelectObjectPickUC.test.js.map +1 -1
  105. package/dist/cjs/ObjectPick/UseCases/TrySubmitObjectPickUC.test.js +3 -1
  106. package/dist/cjs/ObjectPick/UseCases/TrySubmitObjectPickUC.test.js.map +1 -1
  107. package/dist/cjs/OverlayColor/UC/SetOverlayColorUC.test.js +9 -4
  108. package/dist/cjs/OverlayColor/UC/SetOverlayColorUC.test.js.map +1 -1
  109. package/dist/cjs/OverlayColor/UC/SetOverlayColorUndoRedo.test.js +10 -6
  110. package/dist/cjs/OverlayColor/UC/SetOverlayColorUndoRedo.test.js.map +1 -1
  111. package/dist/cjs/Question/UC/AddAnswerUndoRedo.test.js +16 -6
  112. package/dist/cjs/Question/UC/AddAnswerUndoRedo.test.js.map +1 -1
  113. package/dist/cjs/Question/UC/AddQuestionAnswerUC.test.js +14 -5
  114. package/dist/cjs/Question/UC/AddQuestionAnswerUC.test.js.map +1 -1
  115. package/dist/cjs/Question/UC/DeleteAnswerUndoRedo.test.js +17 -6
  116. package/dist/cjs/Question/UC/DeleteAnswerUndoRedo.test.js.map +1 -1
  117. package/dist/cjs/Question/UC/DeleteQuestionAnswerUC.test.js +9 -6
  118. package/dist/cjs/Question/UC/DeleteQuestionAnswerUC.test.js.map +1 -1
  119. package/dist/cjs/Question/UC/SetAnswerFeedbackUC.test.js +9 -6
  120. package/dist/cjs/Question/UC/SetAnswerFeedbackUC.test.js.map +1 -1
  121. package/dist/cjs/Question/UC/SetAnswerFeedbackUndoRedo.test.js +10 -6
  122. package/dist/cjs/Question/UC/SetAnswerFeedbackUndoRedo.test.js.map +1 -1
  123. package/dist/cjs/Question/UC/SetAnswerTextUC.test.js +9 -6
  124. package/dist/cjs/Question/UC/SetAnswerTextUC.test.js.map +1 -1
  125. package/dist/cjs/Question/UC/SetAnswerTextUndoRedo.test.js +10 -6
  126. package/dist/cjs/Question/UC/SetAnswerTextUndoRedo.test.js.map +1 -1
  127. package/dist/cjs/Question/UC/ToggleIsCorrectUndoRedo.test.js +10 -6
  128. package/dist/cjs/Question/UC/ToggleIsCorrectUndoRedo.test.js.map +1 -1
  129. package/dist/cjs/Question/UC/ToggleQuestionAnswerIsCorrect.test.js +7 -4
  130. package/dist/cjs/Question/UC/ToggleQuestionAnswerIsCorrect.test.js.map +1 -1
  131. package/dist/cjs/RequestHandler/UC/SetAppStateUC.test.js +2 -0
  132. package/dist/cjs/RequestHandler/UC/SetAppStateUC.test.js.map +1 -1
  133. package/dist/cjs/SceneRoot/UC/BumpSceneRootScaleAboutPixelPoint.test.js +7 -4
  134. package/dist/cjs/SceneRoot/UC/BumpSceneRootScaleAboutPixelPoint.test.js.map +1 -1
  135. package/dist/cjs/SceneRoot/UC/DragScaleSceneRoot.test.js +9 -6
  136. package/dist/cjs/SceneRoot/UC/DragScaleSceneRoot.test.js.map +1 -1
  137. package/dist/cjs/SceneRoot/UC/OrbitSceneRoot.test.js +16 -7
  138. package/dist/cjs/SceneRoot/UC/OrbitSceneRoot.test.js.map +1 -1
  139. package/dist/cjs/SceneRoot/UC/PanSceneRoot.test.js +9 -6
  140. package/dist/cjs/SceneRoot/UC/PanSceneRoot.test.js.map +1 -1
  141. package/dist/cjs/SceneRoot/UC/PinchSceneRoot.test.js +9 -6
  142. package/dist/cjs/SceneRoot/UC/PinchSceneRoot.test.js.map +1 -1
  143. package/dist/cjs/Selection/UC/HoverAppObjectUC.test.js +3 -3
  144. package/dist/cjs/Selection/UC/HoverAppObjectUC.test.js.map +1 -1
  145. package/dist/cjs/Selection/UC/PressAppObjectUC.test.js +3 -3
  146. package/dist/cjs/Selection/UC/PressAppObjectUC.test.js.map +1 -1
  147. package/dist/cjs/Selection/UC/SelectAppObjectUC.test.js +3 -3
  148. package/dist/cjs/Selection/UC/SelectAppObjectUC.test.js.map +1 -1
  149. package/dist/cjs/Stick/UCs/MoveTransformWithStickUC.test.js +9 -7
  150. package/dist/cjs/Stick/UCs/MoveTransformWithStickUC.test.js.map +1 -1
  151. package/dist/cjs/Stick/UCs/PanTransformWithStickUC.test.js +13 -11
  152. package/dist/cjs/Stick/UCs/PanTransformWithStickUC.test.js.map +1 -1
  153. package/dist/cjs/Stick/UCs/StickUC.test.js +9 -7
  154. package/dist/cjs/Stick/UCs/StickUC.test.js.map +1 -1
  155. package/dist/cjs/Stick/UCs/TryStickAppObjectUC.test.js +7 -6
  156. package/dist/cjs/Stick/UCs/TryStickAppObjectUC.test.js.map +1 -1
  157. package/dist/cjs/Transform3D/UC/BumpTransformScaleAboutPixelPoint.test.js +5 -3
  158. package/dist/cjs/Transform3D/UC/BumpTransformScaleAboutPixelPoint.test.js.map +1 -1
  159. package/dist/cjs/Transform3D/UC/MoveTransformUC.test.js +21 -11
  160. package/dist/cjs/Transform3D/UC/MoveTransformUC.test.js.map +1 -1
  161. package/dist/cjs/Transform3D/UC/MoveTransformUndoRedo.test.js +10 -6
  162. package/dist/cjs/Transform3D/UC/MoveTransformUndoRedo.test.js.map +1 -1
  163. package/dist/cjs/Transform3D/UC/PanTransformUC.test.js +13 -11
  164. package/dist/cjs/Transform3D/UC/PanTransformUC.test.js.map +1 -1
  165. package/dist/cjs/Transform3D/UC/PinchTransform.test.js +7 -5
  166. package/dist/cjs/Transform3D/UC/PinchTransform.test.js.map +1 -1
  167. package/dist/cjs/Transform3D/UC/RayPanScaleTransform.test.js +9 -7
  168. package/dist/cjs/Transform3D/UC/RayPanScaleTransform.test.js.map +1 -1
  169. package/dist/cjs/Transform3D/UC/ScaleTransform.test.js +22 -18
  170. package/dist/cjs/Transform3D/UC/ScaleTransform.test.js.map +1 -1
  171. package/dist/cjs/Transform3D/UC/StylusMoveTransformUC.test.js +11 -6
  172. package/dist/cjs/Transform3D/UC/StylusMoveTransformUC.test.js.map +1 -1
  173. package/dist/cjs/Transform3D/UC/TryMoveTransformUC.test.js +3 -1
  174. package/dist/cjs/Transform3D/UC/TryMoveTransformUC.test.js.map +1 -1
  175. package/dist/cjs/Transform3D/UC/TryPanTransformUC.test.js +25 -24
  176. package/dist/cjs/Transform3D/UC/TryPanTransformUC.test.js.map +1 -1
  177. package/dist/cjs/Transparency/UCs/MakeTransparentUC.test.js +10 -8
  178. package/dist/cjs/Transparency/UCs/MakeTransparentUC.test.js.map +1 -1
  179. package/dist/cjs/UndoRedo/Mocks/MockUndoRedo.js +4 -4
  180. package/dist/cjs/UndoRedo/Mocks/MockUndoRedo.js.map +1 -1
  181. package/dist/esm/Babylon/Mocks/MockSceneRayPickUC.js +3 -1
  182. package/dist/esm/Babylon/Mocks/MockSceneRayPickUC.js.map +1 -1
  183. package/dist/esm/Babylon/UC/SceneRayPickUC.test.js +1 -0
  184. package/dist/esm/Babylon/UC/SceneRayPickUC.test.js.map +1 -1
  185. package/dist/esm/BaseApp/UC/EditSlideTextUC.test.js +9 -7
  186. package/dist/esm/BaseApp/UC/EditSlideTextUC.test.js.map +1 -1
  187. package/dist/esm/BaseApp/UC/UndoRedoEditSlideText.test.js +10 -6
  188. package/dist/esm/BaseApp/UC/UndoRedoEditSlideText.test.js.map +1 -1
  189. package/dist/esm/BaseApp/UC/UpdateContentSizeUC.test.js +8 -6
  190. package/dist/esm/BaseApp/UC/UpdateContentSizeUC.test.js.map +1 -1
  191. package/dist/esm/Callouts/Entities/CalloutEntity.js +5 -4
  192. package/dist/esm/Callouts/Entities/CalloutEntity.js.map +1 -1
  193. package/dist/esm/Callouts/Entities/CalloutEntity.test.js +1 -1
  194. package/dist/esm/Callouts/Entities/CalloutEntity.test.js.map +1 -1
  195. package/dist/esm/Callouts/UC/CreateCalloutUndoRedo.test.js +7 -4
  196. package/dist/esm/Callouts/UC/CreateCalloutUndoRedo.test.js.map +1 -1
  197. package/dist/esm/Callouts/UC/DeleteAllCalloutsUC.test.js +7 -4
  198. package/dist/esm/Callouts/UC/DeleteAllCalloutsUC.test.js.map +1 -1
  199. package/dist/esm/Callouts/UC/DeleteAllCalloutsUndoRedo.test.js +13 -7
  200. package/dist/esm/Callouts/UC/DeleteAllCalloutsUndoRedo.test.js.map +1 -1
  201. package/dist/esm/Callouts/UC/DeleteCallout.test.js +5 -2
  202. package/dist/esm/Callouts/UC/DeleteCallout.test.js.map +1 -1
  203. package/dist/esm/Callouts/UC/DeleteCalloutUndoRedo.test.js +9 -7
  204. package/dist/esm/Callouts/UC/DeleteCalloutUndoRedo.test.js.map +1 -1
  205. package/dist/esm/Callouts/UC/SetCalloutSizeUC.test.js +7 -5
  206. package/dist/esm/Callouts/UC/SetCalloutSizeUC.test.js.map +1 -1
  207. package/dist/esm/Callouts/UC/SetCalloutSizeUndoRedo.test.js +10 -6
  208. package/dist/esm/Callouts/UC/SetCalloutSizeUndoRedo.test.js.map +1 -1
  209. package/dist/esm/Callouts/UC/TryAddCallout.test.js +5 -4
  210. package/dist/esm/Callouts/UC/TryAddCallout.test.js.map +1 -1
  211. package/dist/esm/Callouts/UC/TryPanLabelUC.test.js +3 -2
  212. package/dist/esm/Callouts/UC/TryPanLabelUC.test.js.map +1 -1
  213. package/dist/esm/Challenge/UCs/SetChallengeUC.test.js +11 -9
  214. package/dist/esm/Challenge/UCs/SetChallengeUC.test.js.map +1 -1
  215. package/dist/esm/ChannelModel/UC/ClearAllColorOverlayUndoRedo.test.js +13 -7
  216. package/dist/esm/ChannelModel/UC/ClearAllColorOverlayUndoRedo.test.js.map +1 -1
  217. package/dist/esm/ChannelModel/UC/ClearModelObjectOverlaysUC.test.js +7 -4
  218. package/dist/esm/ChannelModel/UC/ClearModelObjectOverlaysUC.test.js.map +1 -1
  219. package/dist/esm/ChannelModel/UC/SelectChannelModelUC.test.js +5 -2
  220. package/dist/esm/ChannelModel/UC/SelectChannelModelUC.test.js.map +1 -1
  221. package/dist/esm/ChannelModel/UC/StickAllChannelModelObjectsUC.test.js +10 -8
  222. package/dist/esm/ChannelModel/UC/StickAllChannelModelObjectsUC.test.js.map +1 -1
  223. package/dist/esm/ChannelModel/UC/UnhideAllAppObjectsUndoRedo.test.js +9 -7
  224. package/dist/esm/ChannelModel/UC/UnhideAllAppObjectsUndoRedo.test.js.map +1 -1
  225. package/dist/esm/ChannelModel/UC/UnhideAllChannelModelObjectsUC.test.js +7 -5
  226. package/dist/esm/ChannelModel/UC/UnhideAllChannelModelObjectsUC.test.js.map +1 -1
  227. package/dist/esm/Dispatcher/Mocks/MockDispatchStateChange.js +3 -3
  228. package/dist/esm/Dispatcher/Mocks/MockDispatchStateChange.js.map +1 -1
  229. package/dist/esm/Environment/UCs/SetEnvironmentIntensityUC.test.js +11 -9
  230. package/dist/esm/Environment/UCs/SetEnvironmentIntensityUC.test.js.map +1 -1
  231. package/dist/esm/Environment/UCs/SetTexturalEnvironmentUC.test.js +9 -7
  232. package/dist/esm/Environment/UCs/SetTexturalEnvironmentUC.test.js.map +1 -1
  233. package/dist/esm/Hideable/UCs/HideUC.test.js +10 -8
  234. package/dist/esm/Hideable/UCs/HideUC.test.js.map +1 -1
  235. package/dist/esm/Hideable/UCs/TryHideWithPickUC.test.js +7 -6
  236. package/dist/esm/Hideable/UCs/TryHideWithPickUC.test.js.map +1 -1
  237. package/dist/esm/HoverLabel/UseCases/TryShowHoverLabel.test.js +12 -11
  238. package/dist/esm/HoverLabel/UseCases/TryShowHoverLabel.test.js.map +1 -1
  239. package/dist/esm/Label/UC/ClearCustomLabelUC.test.js +9 -4
  240. package/dist/esm/Label/UC/ClearCustomLabelUC.test.js.map +1 -1
  241. package/dist/esm/Label/UC/ClearCustomLabelUndoRedo.test.js +10 -6
  242. package/dist/esm/Label/UC/ClearCustomLabelUndoRedo.test.js.map +1 -1
  243. package/dist/esm/Label/UC/SetCustomLabelUC.test.js +9 -4
  244. package/dist/esm/Label/UC/SetCustomLabelUC.test.js.map +1 -1
  245. package/dist/esm/Label/UC/SetCustomLabelUndoRedo.test.js +10 -6
  246. package/dist/esm/Label/UC/SetCustomLabelUndoRedo.test.js.map +1 -1
  247. package/dist/esm/LabelDrop/UseCases/DeleteAllLabelDropUC.test.js +9 -7
  248. package/dist/esm/LabelDrop/UseCases/DeleteAllLabelDropUC.test.js.map +1 -1
  249. package/dist/esm/LabelDrop/UseCases/DeleteLabelDropUC.test.js +9 -7
  250. package/dist/esm/LabelDrop/UseCases/DeleteLabelDropUC.test.js.map +1 -1
  251. package/dist/esm/LabelDrop/UseCases/DragLabelDropUC.test.js +8 -6
  252. package/dist/esm/LabelDrop/UseCases/DragLabelDropUC.test.js.map +1 -1
  253. package/dist/esm/LabelDrop/UseCases/DragLabelDropWorldUC.test.js +17 -17
  254. package/dist/esm/LabelDrop/UseCases/DragLabelDropWorldUC.test.js.map +1 -1
  255. package/dist/esm/LabelDrop/UseCases/EditLabelDropUC.test.js +20 -18
  256. package/dist/esm/LabelDrop/UseCases/EditLabelDropUC.test.js.map +1 -1
  257. package/dist/esm/LabelDrop/UseCases/ToggleLabelDropTargetUC.test.js +4 -2
  258. package/dist/esm/LabelDrop/UseCases/ToggleLabelDropTargetUC.test.js.map +1 -1
  259. package/dist/esm/Landmarks/UseCases/AddLandmarkUndoRedo.test.js +10 -5
  260. package/dist/esm/Landmarks/UseCases/AddLandmarkUndoRedo.test.js.map +1 -1
  261. package/dist/esm/Landmarks/UseCases/DeleteAllLandmarksUC.test.js +5 -3
  262. package/dist/esm/Landmarks/UseCases/DeleteAllLandmarksUC.test.js.map +1 -1
  263. package/dist/esm/Landmarks/UseCases/DeleteAllLandmarksUndoRedo.test.js +11 -6
  264. package/dist/esm/Landmarks/UseCases/DeleteAllLandmarksUndoRedo.test.js.map +1 -1
  265. package/dist/esm/Landmarks/UseCases/DeleteLandmarkUC.test.js +10 -5
  266. package/dist/esm/Landmarks/UseCases/DeleteLandmarkUC.test.js.map +1 -1
  267. package/dist/esm/Landmarks/UseCases/DeleteLandmarkUndoRedo.test.js +10 -5
  268. package/dist/esm/Landmarks/UseCases/DeleteLandmarkUndoRedo.test.js.map +1 -1
  269. package/dist/esm/Landmarks/UseCases/SetLandmarkSizeUC.test.js +7 -5
  270. package/dist/esm/Landmarks/UseCases/SetLandmarkSizeUC.test.js.map +1 -1
  271. package/dist/esm/Landmarks/UseCases/SetLandmarkSizeUndoRedo.test.js +10 -6
  272. package/dist/esm/Landmarks/UseCases/SetLandmarkSizeUndoRedo.test.js.map +1 -1
  273. package/dist/esm/Landmarks/UseCases/TryAddNewLandmarkUC.test.js +29 -15
  274. package/dist/esm/Landmarks/UseCases/TryAddNewLandmarkUC.test.js.map +1 -1
  275. package/dist/esm/Landmarks/UseCases/TryPreviewLandmarkUC.test.js +4 -3
  276. package/dist/esm/Landmarks/UseCases/TryPreviewLandmarkUC.test.js.map +1 -1
  277. package/dist/esm/ObjectPick/UseCases/AddCorrectObjectIdUC.test.js +10 -8
  278. package/dist/esm/ObjectPick/UseCases/AddCorrectObjectIdUC.test.js.map +1 -1
  279. package/dist/esm/ObjectPick/UseCases/ClearCorrectObjectIdsUC.test.js +10 -8
  280. package/dist/esm/ObjectPick/UseCases/ClearCorrectObjectIdsUC.test.js.map +1 -1
  281. package/dist/esm/ObjectPick/UseCases/RemoveCorrectObjectIdUC.test.js +10 -8
  282. package/dist/esm/ObjectPick/UseCases/RemoveCorrectObjectIdUC.test.js.map +1 -1
  283. package/dist/esm/ObjectPick/UseCases/TrySelectObjectPickUC.test.js +18 -15
  284. package/dist/esm/ObjectPick/UseCases/TrySelectObjectPickUC.test.js.map +1 -1
  285. package/dist/esm/ObjectPick/UseCases/TrySubmitObjectPickUC.test.js +3 -1
  286. package/dist/esm/ObjectPick/UseCases/TrySubmitObjectPickUC.test.js.map +1 -1
  287. package/dist/esm/OverlayColor/UC/SetOverlayColorUC.test.js +9 -4
  288. package/dist/esm/OverlayColor/UC/SetOverlayColorUC.test.js.map +1 -1
  289. package/dist/esm/OverlayColor/UC/SetOverlayColorUndoRedo.test.js +10 -6
  290. package/dist/esm/OverlayColor/UC/SetOverlayColorUndoRedo.test.js.map +1 -1
  291. package/dist/esm/Question/UC/AddAnswerUndoRedo.test.js +16 -6
  292. package/dist/esm/Question/UC/AddAnswerUndoRedo.test.js.map +1 -1
  293. package/dist/esm/Question/UC/AddQuestionAnswerUC.test.js +14 -5
  294. package/dist/esm/Question/UC/AddQuestionAnswerUC.test.js.map +1 -1
  295. package/dist/esm/Question/UC/DeleteAnswerUndoRedo.test.js +17 -6
  296. package/dist/esm/Question/UC/DeleteAnswerUndoRedo.test.js.map +1 -1
  297. package/dist/esm/Question/UC/DeleteQuestionAnswerUC.test.js +9 -6
  298. package/dist/esm/Question/UC/DeleteQuestionAnswerUC.test.js.map +1 -1
  299. package/dist/esm/Question/UC/SetAnswerFeedbackUC.test.js +9 -6
  300. package/dist/esm/Question/UC/SetAnswerFeedbackUC.test.js.map +1 -1
  301. package/dist/esm/Question/UC/SetAnswerFeedbackUndoRedo.test.js +10 -6
  302. package/dist/esm/Question/UC/SetAnswerFeedbackUndoRedo.test.js.map +1 -1
  303. package/dist/esm/Question/UC/SetAnswerTextUC.test.js +9 -6
  304. package/dist/esm/Question/UC/SetAnswerTextUC.test.js.map +1 -1
  305. package/dist/esm/Question/UC/SetAnswerTextUndoRedo.test.js +10 -6
  306. package/dist/esm/Question/UC/SetAnswerTextUndoRedo.test.js.map +1 -1
  307. package/dist/esm/Question/UC/ToggleIsCorrectUndoRedo.test.js +10 -6
  308. package/dist/esm/Question/UC/ToggleIsCorrectUndoRedo.test.js.map +1 -1
  309. package/dist/esm/Question/UC/ToggleQuestionAnswerIsCorrect.test.js +7 -4
  310. package/dist/esm/Question/UC/ToggleQuestionAnswerIsCorrect.test.js.map +1 -1
  311. package/dist/esm/RequestHandler/UC/SetAppStateUC.test.js +2 -0
  312. package/dist/esm/RequestHandler/UC/SetAppStateUC.test.js.map +1 -1
  313. package/dist/esm/SceneRoot/UC/BumpSceneRootScaleAboutPixelPoint.test.js +7 -4
  314. package/dist/esm/SceneRoot/UC/BumpSceneRootScaleAboutPixelPoint.test.js.map +1 -1
  315. package/dist/esm/SceneRoot/UC/DragScaleSceneRoot.test.js +9 -6
  316. package/dist/esm/SceneRoot/UC/DragScaleSceneRoot.test.js.map +1 -1
  317. package/dist/esm/SceneRoot/UC/OrbitSceneRoot.test.js +16 -7
  318. package/dist/esm/SceneRoot/UC/OrbitSceneRoot.test.js.map +1 -1
  319. package/dist/esm/SceneRoot/UC/PanSceneRoot.test.js +9 -6
  320. package/dist/esm/SceneRoot/UC/PanSceneRoot.test.js.map +1 -1
  321. package/dist/esm/SceneRoot/UC/PinchSceneRoot.test.js +9 -6
  322. package/dist/esm/SceneRoot/UC/PinchSceneRoot.test.js.map +1 -1
  323. package/dist/esm/Selection/UC/HoverAppObjectUC.test.js +3 -3
  324. package/dist/esm/Selection/UC/HoverAppObjectUC.test.js.map +1 -1
  325. package/dist/esm/Selection/UC/PressAppObjectUC.test.js +3 -3
  326. package/dist/esm/Selection/UC/PressAppObjectUC.test.js.map +1 -1
  327. package/dist/esm/Selection/UC/SelectAppObjectUC.test.js +3 -3
  328. package/dist/esm/Selection/UC/SelectAppObjectUC.test.js.map +1 -1
  329. package/dist/esm/Stick/UCs/MoveTransformWithStickUC.test.js +9 -7
  330. package/dist/esm/Stick/UCs/MoveTransformWithStickUC.test.js.map +1 -1
  331. package/dist/esm/Stick/UCs/PanTransformWithStickUC.test.js +13 -11
  332. package/dist/esm/Stick/UCs/PanTransformWithStickUC.test.js.map +1 -1
  333. package/dist/esm/Stick/UCs/StickUC.test.js +9 -7
  334. package/dist/esm/Stick/UCs/StickUC.test.js.map +1 -1
  335. package/dist/esm/Stick/UCs/TryStickAppObjectUC.test.js +7 -6
  336. package/dist/esm/Stick/UCs/TryStickAppObjectUC.test.js.map +1 -1
  337. package/dist/esm/Transform3D/UC/BumpTransformScaleAboutPixelPoint.test.js +5 -3
  338. package/dist/esm/Transform3D/UC/BumpTransformScaleAboutPixelPoint.test.js.map +1 -1
  339. package/dist/esm/Transform3D/UC/MoveTransformUC.test.js +21 -11
  340. package/dist/esm/Transform3D/UC/MoveTransformUC.test.js.map +1 -1
  341. package/dist/esm/Transform3D/UC/MoveTransformUndoRedo.test.js +10 -6
  342. package/dist/esm/Transform3D/UC/MoveTransformUndoRedo.test.js.map +1 -1
  343. package/dist/esm/Transform3D/UC/PanTransformUC.test.js +13 -11
  344. package/dist/esm/Transform3D/UC/PanTransformUC.test.js.map +1 -1
  345. package/dist/esm/Transform3D/UC/PinchTransform.test.js +7 -5
  346. package/dist/esm/Transform3D/UC/PinchTransform.test.js.map +1 -1
  347. package/dist/esm/Transform3D/UC/RayPanScaleTransform.test.js +9 -7
  348. package/dist/esm/Transform3D/UC/RayPanScaleTransform.test.js.map +1 -1
  349. package/dist/esm/Transform3D/UC/ScaleTransform.test.js +22 -18
  350. package/dist/esm/Transform3D/UC/ScaleTransform.test.js.map +1 -1
  351. package/dist/esm/Transform3D/UC/StylusMoveTransformUC.test.js +11 -6
  352. package/dist/esm/Transform3D/UC/StylusMoveTransformUC.test.js.map +1 -1
  353. package/dist/esm/Transform3D/UC/TryMoveTransformUC.test.js +3 -1
  354. package/dist/esm/Transform3D/UC/TryMoveTransformUC.test.js.map +1 -1
  355. package/dist/esm/Transform3D/UC/TryPanTransformUC.test.js +4 -3
  356. package/dist/esm/Transform3D/UC/TryPanTransformUC.test.js.map +1 -1
  357. package/dist/esm/Transparency/UCs/MakeTransparentUC.test.js +10 -8
  358. package/dist/esm/Transparency/UCs/MakeTransparentUC.test.js.map +1 -1
  359. package/dist/esm/UndoRedo/Mocks/MockUndoRedo.js +4 -4
  360. package/dist/esm/UndoRedo/Mocks/MockUndoRedo.js.map +1 -1
  361. package/dist/types/Babylon/Mocks/MockSceneRayPickUC.d.ts +1 -1
  362. package/dist/types/Babylon/Mocks/MockSceneRayPickUC.d.ts.map +1 -1
  363. package/dist/types/Callouts/Entities/CalloutEntity.d.ts.map +1 -1
  364. package/dist/types/Dispatcher/Mocks/MockDispatchStateChange.d.ts +3 -3
  365. package/dist/types/Dispatcher/Mocks/MockDispatchStateChange.d.ts.map +1 -1
  366. package/dist/types/UndoRedo/Mocks/MockUndoRedo.d.ts +4 -4
  367. package/dist/types/UndoRedo/Mocks/MockUndoRedo.d.ts.map +1 -1
  368. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const core_1 = require("@vived/core");
4
- const MockDispatchStateChange_1 = require("../../Dispatcher/Mocks/MockDispatchStateChange");
4
+ const Dispatcher_1 = require("../../Dispatcher");
5
5
  const MockUndoRedo_1 = require("../../UndoRedo/Mocks/MockUndoRedo");
6
6
  const Entities_1 = require("../Entities");
7
7
  const ToggleIsCorrectUndoRedo_1 = require("./ToggleIsCorrectUndoRedo");
@@ -9,14 +9,18 @@ function makeTestRig() {
9
9
  const appObjects = (0, core_1.makeAppObjectRepo)();
10
10
  const ao = appObjects.getOrCreate("App");
11
11
  const mockUndo = new MockUndoRedo_1.MockUndoRedo(ao);
12
- const mockDispatcher = new MockDispatchStateChange_1.MockDispatchStateChange(ao);
12
+ // Override the submitAction with a jest.fn()
13
+ mockUndo.submitAction = jest.fn();
14
+ const mockDispatcher = (0, Dispatcher_1.makeMockDispatchStateChange)(appObjects);
15
+ const doDispatchMock = jest.fn();
16
+ mockDispatcher.doDispatch = doDispatchMock;
13
17
  const questionEntity = (0, Entities_1.makeQuestionEntity)(ao);
14
18
  questionEntity.answerFactory = (id) => {
15
19
  const answerAO = appObjects.getOrCreate(id ?? "answer");
16
20
  return (0, Entities_1.makeQuestionAnswerEntity)(answerAO);
17
21
  };
18
22
  const answer = questionEntity.createNewAnswer();
19
- return { mockUndo, mockDispatcher, appObjects, answer };
23
+ return { mockUndo, mockDispatcher, doDispatchMock, appObjects, answer };
20
24
  }
21
25
  describe("Add Answer Undo Redo action", () => {
22
26
  it("Submits itself to the entity", () => {
@@ -40,12 +44,12 @@ describe("Add Answer Undo Redo action", () => {
40
44
  expect(answer.isCorrect).toEqual(false);
41
45
  });
42
46
  it("Dispatches state changes for both the undo and redo action", () => {
43
- const { appObjects, mockDispatcher, answer } = makeTestRig();
47
+ const { appObjects, doDispatchMock, answer } = makeTestRig();
44
48
  const action = new ToggleIsCorrectUndoRedo_1.ToggleIsCorrectUndoRedo(answer.id, appObjects);
45
49
  action.undoAction();
46
- expect(mockDispatcher.doDispatch).toHaveBeenCalledTimes(1);
50
+ expect(doDispatchMock).toHaveBeenCalledTimes(1);
47
51
  action.redoAction();
48
- expect(mockDispatcher.doDispatch).toHaveBeenCalledTimes(2);
52
+ expect(doDispatchMock).toHaveBeenCalledTimes(2);
49
53
  });
50
54
  });
51
55
  //# sourceMappingURL=ToggleIsCorrectUndoRedo.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleIsCorrectUndoRedo.test.js","sourceRoot":"","sources":["../../../../src/Question/UC/ToggleIsCorrectUndoRedo.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { MockDispatchStateChange } from \"../../Dispatcher/Mocks/MockDispatchStateChange\";\r\nimport { MockUndoRedo } from \"../../UndoRedo/Mocks/MockUndoRedo\";\r\nimport { makeQuestionAnswerEntity, makeQuestionEntity } from \"../Entities\";\r\nimport { ToggleIsCorrectUndoRedo } from \"./ToggleIsCorrectUndoRedo\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const ao = appObjects.getOrCreate(\"App\");\r\n const mockUndo = new MockUndoRedo(ao);\r\n const mockDispatcher = new MockDispatchStateChange(ao);\r\n const questionEntity = makeQuestionEntity(ao);\r\n\r\n questionEntity.answerFactory = (id?: string) => {\r\n const answerAO = appObjects.getOrCreate(id ?? \"answer\");\r\n return makeQuestionAnswerEntity(answerAO);\r\n };\r\n\r\n const answer = questionEntity.createNewAnswer();\r\n\r\n return { mockUndo, mockDispatcher, appObjects, answer };\r\n}\r\n\r\ndescribe(\"Add Answer Undo Redo action\", () => {\r\n it(\"Submits itself to the entity\", () => {\r\n const { mockUndo, appObjects } = makeTestRig();\r\n\r\n const action = new ToggleIsCorrectUndoRedo(\"questionID\", appObjects);\r\n expect(mockUndo.submitAction).toHaveBeenCalledWith(action);\r\n });\r\n\r\n it(\"Undo adds the deleted answer\", () => {\r\n const { appObjects, answer } = makeTestRig();\r\n\r\n expect(answer.isCorrect).toEqual(false);\r\n\r\n const action = new ToggleIsCorrectUndoRedo(answer.id, appObjects);\r\n\r\n action.undoAction();\r\n\r\n expect(answer.isCorrect).toEqual(true);\r\n });\r\n\r\n it(\"Redo removes the answer\", () => {\r\n const { appObjects, answer } = makeTestRig();\r\n\r\n const action = new ToggleIsCorrectUndoRedo(answer.id, appObjects);\r\n\r\n expect(answer.isCorrect).toEqual(false);\r\n\r\n action.undoAction();\r\n action.redoAction();\r\n\r\n expect(answer.isCorrect).toEqual(false);\r\n });\r\n\r\n it(\"Dispatches state changes for both the undo and redo action\", () => {\r\n const { appObjects, mockDispatcher, answer } = makeTestRig();\r\n\r\n const action = new ToggleIsCorrectUndoRedo(answer.id, appObjects);\r\n\r\n action.undoAction();\r\n expect(mockDispatcher.doDispatch).toHaveBeenCalledTimes(1);\r\n\r\n action.redoAction();\r\n expect(mockDispatcher.doDispatch).toHaveBeenCalledTimes(2);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"ToggleIsCorrectUndoRedo.test.js","sourceRoot":"","sources":["../../../../src/Question/UC/ToggleIsCorrectUndoRedo.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { makeMockDispatchStateChange } from \"../../Dispatcher\";\r\nimport { MockUndoRedo } from \"../../UndoRedo/Mocks/MockUndoRedo\";\r\nimport { makeQuestionAnswerEntity, makeQuestionEntity } from \"../Entities\";\r\nimport { ToggleIsCorrectUndoRedo } from \"./ToggleIsCorrectUndoRedo\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const ao = appObjects.getOrCreate(\"App\");\r\n const mockUndo = new MockUndoRedo(ao);\r\n // Override the submitAction with a jest.fn()\r\n mockUndo.submitAction = jest.fn();\r\n const mockDispatcher = makeMockDispatchStateChange(appObjects);\r\n const doDispatchMock = jest.fn();\r\n mockDispatcher.doDispatch = doDispatchMock;\r\n const questionEntity = makeQuestionEntity(ao);\r\n\r\n questionEntity.answerFactory = (id?: string) => {\r\n const answerAO = appObjects.getOrCreate(id ?? \"answer\");\r\n return makeQuestionAnswerEntity(answerAO);\r\n };\r\n\r\n const answer = questionEntity.createNewAnswer();\r\n\r\n return { mockUndo, mockDispatcher, doDispatchMock, appObjects, answer };\r\n}\r\n\r\ndescribe(\"Add Answer Undo Redo action\", () => {\r\n it(\"Submits itself to the entity\", () => {\r\n const { mockUndo, appObjects } = makeTestRig();\r\n\r\n const action = new ToggleIsCorrectUndoRedo(\"questionID\", appObjects);\r\n expect(mockUndo.submitAction).toHaveBeenCalledWith(action);\r\n });\r\n\r\n it(\"Undo adds the deleted answer\", () => {\r\n const { appObjects, answer } = makeTestRig();\r\n\r\n expect(answer.isCorrect).toEqual(false);\r\n\r\n const action = new ToggleIsCorrectUndoRedo(answer.id, appObjects);\r\n\r\n action.undoAction();\r\n\r\n expect(answer.isCorrect).toEqual(true);\r\n });\r\n\r\n it(\"Redo removes the answer\", () => {\r\n const { appObjects, answer } = makeTestRig();\r\n\r\n const action = new ToggleIsCorrectUndoRedo(answer.id, appObjects);\r\n\r\n expect(answer.isCorrect).toEqual(false);\r\n\r\n action.undoAction();\r\n action.redoAction();\r\n\r\n expect(answer.isCorrect).toEqual(false);\r\n });\r\n\r\n it(\"Dispatches state changes for both the undo and redo action\", () => {\r\n const { appObjects, doDispatchMock, answer } = makeTestRig();\r\n\r\n const action = new ToggleIsCorrectUndoRedo(answer.id, appObjects);\r\n\r\n action.undoAction();\r\n expect(doDispatchMock).toHaveBeenCalledTimes(1);\r\n\r\n action.redoAction();\r\n expect(doDispatchMock).toHaveBeenCalledTimes(2);\r\n });\r\n});\r\n"]}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const core_1 = require("@vived/core");
4
- const MockDispatchStateChange_1 = require("../../Dispatcher/Mocks/MockDispatchStateChange");
4
+ const Dispatcher_1 = require("../../Dispatcher");
5
5
  const MockQuestionAnswerEntity_1 = require("../Mocks/MockQuestionAnswerEntity");
6
6
  const ToggleQuestionAnswerIsCorrect_1 = require("./ToggleQuestionAnswerIsCorrect");
7
7
  const jest_mock_1 = require("jest-mock");
@@ -18,7 +18,9 @@ function makeTestRig() {
18
18
  const ansAO = appObjects.getOrCreate("Ans");
19
19
  const mockAns = new MockQuestionAnswerEntity_1.MockQuestionAnswerEntity(ansAO);
20
20
  const appAO = appObjects.getOrCreate("App");
21
- const mockDispatch = new MockDispatchStateChange_1.MockDispatchStateChange(appAO);
21
+ const mockDispatch = (0, Dispatcher_1.makeMockDispatchStateChange)(appObjects);
22
+ const doDispatchMock = jest.fn();
23
+ mockDispatch.doDispatch = doDispatchMock;
22
24
  mockAns.isCorrect = true;
23
25
  const MockedUndoRedoAction = (0, jest_mock_1.mocked)(ToggleIsCorrectUndoRedo_1.ToggleIsCorrectUndoRedo);
24
26
  const toggleUC = (0, ToggleQuestionAnswerIsCorrect_1.makeToggleQuestionChallengeAnswerIsCorrectUC)(ansAO);
@@ -27,6 +29,7 @@ function makeTestRig() {
27
29
  toggleUC,
28
30
  appObjects,
29
31
  mockDispatch,
32
+ doDispatchMock,
30
33
  MockedUndoRedoAction,
31
34
  };
32
35
  }
@@ -46,9 +49,9 @@ describe("Toggle answer is correct use case", () => {
46
49
  expect(appObjects.submitWarning).toHaveBeenCalled();
47
50
  });
48
51
  it("Dispatches a state change", () => {
49
- const { mockAns, toggleUC, mockDispatch } = makeTestRig();
52
+ const { mockAns, toggleUC, doDispatchMock } = makeTestRig();
50
53
  toggleUC.toggleIsCorrect();
51
- expect(mockDispatch.doDispatch).toHaveBeenCalled();
54
+ expect(doDispatchMock).toHaveBeenCalled();
52
55
  });
53
56
  it("Creates an Undo Redo action", () => {
54
57
  const { toggleUC, MockedUndoRedoAction, appObjects, mockAns } = makeTestRig();
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleQuestionAnswerIsCorrect.test.js","sourceRoot":"","sources":["../../../../src/Question/UC/ToggleQuestionAnswerIsCorrect.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAChD,4FAAyF;AACzF,gFAA6E;AAC7E,mFAA+F;AAC/F,yCAAmC;AACnC,uEAAoE;AAEpE,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;IAC1C,OAAO;QACL,uBAAuB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE;YACzD,OAAO;QACT,CAAC,CAAC;KACH,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IACvC,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,mDAAwB,CAAC,KAAK,CAAC,CAAC;IAEpD,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,IAAI,iDAAuB,CAAC,KAAK,CAAC,CAAC;IAExD,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAEzB,MAAM,oBAAoB,GAAG,IAAA,kBAAM,EAAC,iDAAuB,CAAC,CAAC;IAE7D,MAAM,QAAQ,GAAG,IAAA,4EAA4C,EAAC,KAAK,CAAC,CAAC;IACrE,OAAO;QACL,OAAO;QACP,QAAQ;QACR,UAAU;QACV,YAAY;QACZ,oBAAoB;KACrB,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IACjD,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QACvB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAC;QAC5C,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,QAAQ,CAAC,eAAe,EAAE,CAAC;QAC3B,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzC,QAAQ,CAAC,eAAe,EAAE,CAAC;QAC3B,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;QACnF,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QACrC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAErC,IAAA,4EAA4C,EAC1C,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CACpC,CAAC;QAEF,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,WAAW,EAAE,CAAC;QAC1D,QAAQ,CAAC,eAAe,EAAE,CAAC;QAC3B,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAE,UAAU,EAAE,OAAO,EAAE,GAC3D,WAAW,EAAE,CAAC;QAChB,oBAAoB,CAAC,SAAS,EAAE,CAAC;QAEjC,QAAQ,CAAC,eAAe,EAAE,CAAC;QAE3B,MAAM,CAAC,oBAAoB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACtD,MAAM,CAAC,oBAAoB,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { MockDispatchStateChange } from \"../../Dispatcher/Mocks/MockDispatchStateChange\";\r\nimport { MockQuestionAnswerEntity } from \"../Mocks/MockQuestionAnswerEntity\";\r\nimport { makeToggleQuestionChallengeAnswerIsCorrectUC } from \"./ToggleQuestionAnswerIsCorrect\";\r\nimport { mocked } from \"jest-mock\";\r\nimport { ToggleIsCorrectUndoRedo } from \"./ToggleIsCorrectUndoRedo\";\r\n\r\njest.mock(\"./ToggleIsCorrectUndoRedo\", () => {\r\n return {\r\n ToggleIsCorrectUndoRedo: jest.fn().mockImplementation(() => {\r\n return;\r\n }),\r\n };\r\n});\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const ansAO = appObjects.getOrCreate(\"Ans\");\r\n const mockAns = new MockQuestionAnswerEntity(ansAO);\r\n\r\n const appAO = appObjects.getOrCreate(\"App\");\r\n const mockDispatch = new MockDispatchStateChange(appAO);\r\n\r\n mockAns.isCorrect = true;\r\n\r\n const MockedUndoRedoAction = mocked(ToggleIsCorrectUndoRedo);\r\n\r\n const toggleUC = makeToggleQuestionChallengeAnswerIsCorrectUC(ansAO);\r\n return {\r\n mockAns,\r\n toggleUC,\r\n appObjects,\r\n mockDispatch,\r\n MockedUndoRedoAction,\r\n };\r\n}\r\n\r\ndescribe(\"Toggle answer is correct use case\", () => {\r\n it(\"Sets the text\", () => {\r\n const { mockAns, toggleUC } = makeTestRig();\r\n expect(mockAns.isCorrect).toEqual(true);\r\n toggleUC.toggleIsCorrect();\r\n expect(mockAns.isCorrect).toEqual(false);\r\n toggleUC.toggleIsCorrect();\r\n expect(mockAns.isCorrect).toEqual(true);\r\n });\r\n\r\n it(\"Warns if it is added to an App Object that does not have an Answer Entity\", () => {\r\n const { appObjects } = makeTestRig();\r\n appObjects.submitWarning = jest.fn();\r\n\r\n makeToggleQuestionChallengeAnswerIsCorrectUC(\r\n appObjects.getOrCreate(\"AnotherAO\")\r\n );\r\n\r\n expect(appObjects.submitWarning).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Dispatches a state change\", () => {\r\n const { mockAns, toggleUC, mockDispatch } = makeTestRig();\r\n toggleUC.toggleIsCorrect();\r\n expect(mockDispatch.doDispatch).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Creates an Undo Redo action\", () => {\r\n const { toggleUC, MockedUndoRedoAction, appObjects, mockAns } =\r\n makeTestRig();\r\n MockedUndoRedoAction.mockClear();\r\n\r\n toggleUC.toggleIsCorrect();\r\n\r\n expect(MockedUndoRedoAction).toHaveBeenCalledTimes(1);\r\n expect(MockedUndoRedoAction).toHaveBeenCalledWith(mockAns.id, appObjects);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"ToggleQuestionAnswerIsCorrect.test.js","sourceRoot":"","sources":["../../../../src/Question/UC/ToggleQuestionAnswerIsCorrect.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { makeMockDispatchStateChange } from \"../../Dispatcher\";\r\nimport { MockQuestionAnswerEntity } from \"../Mocks/MockQuestionAnswerEntity\";\r\nimport { makeToggleQuestionChallengeAnswerIsCorrectUC } from \"./ToggleQuestionAnswerIsCorrect\";\r\nimport { mocked } from \"jest-mock\";\r\nimport { ToggleIsCorrectUndoRedo } from \"./ToggleIsCorrectUndoRedo\";\r\n\r\njest.mock(\"./ToggleIsCorrectUndoRedo\", () => {\r\n return {\r\n ToggleIsCorrectUndoRedo: jest.fn().mockImplementation(() => {\r\n return;\r\n }),\r\n };\r\n});\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const ansAO = appObjects.getOrCreate(\"Ans\");\r\n const mockAns = new MockQuestionAnswerEntity(ansAO);\r\n\r\n const appAO = appObjects.getOrCreate(\"App\");\r\n const mockDispatch = makeMockDispatchStateChange(appObjects);\r\n const doDispatchMock = jest.fn();\r\n mockDispatch.doDispatch = doDispatchMock;\r\n\r\n mockAns.isCorrect = true;\r\n\r\n const MockedUndoRedoAction = mocked(ToggleIsCorrectUndoRedo);\r\n\r\n const toggleUC = makeToggleQuestionChallengeAnswerIsCorrectUC(ansAO);\r\n return {\r\n mockAns,\r\n toggleUC,\r\n appObjects,\r\n mockDispatch,\r\n doDispatchMock,\r\n MockedUndoRedoAction,\r\n };\r\n}\r\n\r\ndescribe(\"Toggle answer is correct use case\", () => {\r\n it(\"Sets the text\", () => {\r\n const { mockAns, toggleUC } = makeTestRig();\r\n expect(mockAns.isCorrect).toEqual(true);\r\n toggleUC.toggleIsCorrect();\r\n expect(mockAns.isCorrect).toEqual(false);\r\n toggleUC.toggleIsCorrect();\r\n expect(mockAns.isCorrect).toEqual(true);\r\n });\r\n\r\n it(\"Warns if it is added to an App Object that does not have an Answer Entity\", () => {\r\n const { appObjects } = makeTestRig();\r\n appObjects.submitWarning = jest.fn();\r\n\r\n makeToggleQuestionChallengeAnswerIsCorrectUC(\r\n appObjects.getOrCreate(\"AnotherAO\")\r\n );\r\n\r\n expect(appObjects.submitWarning).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Dispatches a state change\", () => {\r\n const { mockAns, toggleUC, doDispatchMock } = makeTestRig();\r\n toggleUC.toggleIsCorrect();\r\n expect(doDispatchMock).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Creates an Undo Redo action\", () => {\r\n const { toggleUC, MockedUndoRedoAction, appObjects, mockAns } =\r\n makeTestRig();\r\n MockedUndoRedoAction.mockClear();\r\n\r\n toggleUC.toggleIsCorrect();\r\n\r\n expect(MockedUndoRedoAction).toHaveBeenCalledTimes(1);\r\n expect(MockedUndoRedoAction).toHaveBeenCalledWith(mockAns.id, appObjects);\r\n });\r\n});\r\n"]}
@@ -11,6 +11,8 @@ function makeTestRig() {
11
11
  const appObj = appObjectRepo.getOrCreate("Handler");
12
12
  const mockAppHandler = new MockAppHandlerEntity_1.MockAppHandlerEntity(appObj);
13
13
  const mockUndo = new MockUndoRedo_1.MockUndoRedo(appObj);
14
+ mockUndo.submitAction = jest.fn();
15
+ mockUndo.clearStack = jest.fn();
14
16
  const mockStateMachine = new MockStateMachine_1.MockStateMachine(appObj);
15
17
  const baseApp = (0, BaseAppState_1.makeBaseAppState)(appObj);
16
18
  const setAppState = (0, SetAppStateUC_1.makeSetAppStateUC)(appObj);
@@ -1 +1 @@
1
- {"version":3,"file":"SetAppStateUC.test.js","sourceRoot":"","sources":["../../../../src/RequestHandler/UC/SetAppStateUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { MockAppHandlerEntity } from \"../Mocks/MockAppHandlerEntity\";\r\nimport { makeSetAppStateUC, StartAppPayload } from \"./SetAppStateUC\";\r\nimport { MockUndoRedo } from \"../../UndoRedo/Mocks/MockUndoRedo\";\r\nimport { MockStateMachine } from \"../../StateMachine/Mocks/MockStateMachine\";\r\nimport { makeBaseAppState } from \"../../BaseApp/Entity/BaseAppState\";\r\n\r\nfunction makeTestRig() {\r\n const appObjectRepo = makeAppObjectRepo();\r\n const appObj = appObjectRepo.getOrCreate(\"Handler\");\r\n\r\n const mockAppHandler = new MockAppHandlerEntity(appObj);\r\n const mockUndo = new MockUndoRedo(appObj);\r\n const mockStateMachine = new MockStateMachine(appObj);\r\n const baseApp = makeBaseAppState(appObj);\r\n\r\n const setAppState = makeSetAppStateUC(appObj);\r\n\r\n const mockPayload: StartAppPayload = {\r\n finalState: { foo: \"bar\" },\r\n hasNextSlide: false,\r\n hasPreviousSlide: false,\r\n hideNavigation: false,\r\n };\r\n\r\n return {\r\n mockAppHandler,\r\n setAppState,\r\n mockStateMachine,\r\n baseApp,\r\n mockUndo,\r\n mockPayload,\r\n };\r\n}\r\n\r\ndescribe(\"Start App Base Handler\", () => {\r\n it(\"Registers as a handler when constructed\", () => {\r\n const { mockAppHandler, setAppState } = makeTestRig();\r\n expect(mockAppHandler.registerRequestHandler).toHaveBeenCalledWith(\r\n setAppState\r\n );\r\n });\r\n\r\n it(\"Triggers the action with the payload\", () => {\r\n const { setAppState, mockPayload } = makeTestRig();\r\n setAppState.action = jest.fn();\r\n\r\n setAppState.handleRequest(3, mockPayload);\r\n\r\n expect(setAppState.action).toHaveBeenCalledWith(mockPayload);\r\n });\r\n\r\n it(\"Throws for an bungled payload\", () => {\r\n const { setAppState } = makeTestRig();\r\n\r\n expect(() => setAppState.handleRequest(3, { foo: \"bar\" })).toThrowError();\r\n });\r\n\r\n it(\"Throws for an unsupported version\", () => {\r\n const { setAppState, mockPayload } = makeTestRig();\r\n\r\n expect(() => setAppState.handleRequest(-1, mockPayload)).toThrowError();\r\n });\r\n\r\n it(\"Passes the state machine the the state and duration\", () => {\r\n const { mockStateMachine, setAppState, mockPayload } = makeTestRig();\r\n\r\n mockPayload.finalState = { foo: \"bar\" };\r\n mockPayload.duration = 5;\r\n setAppState.handleRequest(3, mockPayload);\r\n expect(mockStateMachine.setSerializedStates).toHaveBeenCalledWith(\r\n { foo: \"bar\" },\r\n 5\r\n );\r\n });\r\n\r\n it(\"State machine is passed the state without a duration\", () => {\r\n const { mockStateMachine, setAppState, mockPayload } = makeTestRig();\r\n\r\n mockPayload.finalState = { foo: \"bar\" };\r\n setAppState.handleRequest(3, mockPayload);\r\n\r\n expect(mockStateMachine.setSerializedStates).toHaveBeenCalledWith(\r\n { foo: \"bar\" },\r\n 0\r\n );\r\n });\r\n\r\n it(\"Sets to a default state if an empty state is passed\", () => {\r\n const { mockStateMachine, setAppState, mockPayload } = makeTestRig();\r\n\r\n mockPayload.finalState = undefined;\r\n mockPayload.duration = 5;\r\n setAppState.handleRequest(3, mockPayload);\r\n expect(mockStateMachine.setDefaultState).toHaveBeenCalledWith(5);\r\n });\r\n\r\n it(\"Resets the is reviewing flag\", () => {\r\n const { baseApp, setAppState, mockPayload } = makeTestRig();\r\n baseApp.isReviewing = true;\r\n\r\n setAppState.handleRequest(3, mockPayload);\r\n\r\n expect(baseApp.isReviewing).toEqual(false);\r\n });\r\n\r\n it(\"Clears the undo stack\", () => {\r\n const { setAppState, mockUndo, mockPayload } = makeTestRig();\r\n\r\n setAppState.handleRequest(3, mockPayload);\r\n\r\n expect(mockUndo.clearStack).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Applies the has next state flag\", () => {\r\n const { setAppState, mockPayload, baseApp } = makeTestRig();\r\n\r\n baseApp.hasNextState = false;\r\n\r\n mockPayload.hasNextSlide = true;\r\n setAppState.handleRequest(3, mockPayload);\r\n expect(baseApp.hasNextState).toEqual(true);\r\n\r\n mockPayload.hasNextSlide = false;\r\n setAppState.handleRequest(3, mockPayload);\r\n expect(baseApp.hasNextState).toEqual(false);\r\n });\r\n\r\n it(\"Applies the has previous state flag\", () => {\r\n const { setAppState, mockPayload, baseApp } = makeTestRig();\r\n\r\n baseApp.hasPreviousState = false;\r\n\r\n mockPayload.hasPreviousSlide = true;\r\n setAppState.handleRequest(3, mockPayload);\r\n expect(baseApp.hasPreviousState).toEqual(true);\r\n\r\n mockPayload.hasPreviousSlide = false;\r\n setAppState.handleRequest(3, mockPayload);\r\n expect(baseApp.hasPreviousState).toEqual(false);\r\n });\r\n\r\n it(\"Applies the hide nav flag\", () => {\r\n const { setAppState, mockPayload, baseApp } = makeTestRig();\r\n\r\n baseApp.hideSlideNavigation = false;\r\n\r\n mockPayload.hideNavigation = true;\r\n setAppState.handleRequest(3, mockPayload);\r\n expect(baseApp.hideSlideNavigation).toEqual(true);\r\n\r\n mockPayload.hideNavigation = false;\r\n setAppState.handleRequest(3, mockPayload);\r\n expect(baseApp.hideSlideNavigation).toEqual(false);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"SetAppStateUC.test.js","sourceRoot":"","sources":["../../../../src/RequestHandler/UC/SetAppStateUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { MockAppHandlerEntity } from \"../Mocks/MockAppHandlerEntity\";\r\nimport { makeSetAppStateUC, StartAppPayload } from \"./SetAppStateUC\";\r\nimport { MockUndoRedo } from \"../../UndoRedo/Mocks/MockUndoRedo\";\r\nimport { MockStateMachine } from \"../../StateMachine/Mocks/MockStateMachine\";\r\nimport { makeBaseAppState } from \"../../BaseApp/Entity/BaseAppState\";\r\n\r\nfunction makeTestRig() {\r\n const appObjectRepo = makeAppObjectRepo();\r\n const appObj = appObjectRepo.getOrCreate(\"Handler\");\r\n\r\n const mockAppHandler = new MockAppHandlerEntity(appObj);\r\n const mockUndo = new MockUndoRedo(appObj);\r\n mockUndo.submitAction = jest.fn();\r\n mockUndo.clearStack = jest.fn();\r\n \r\n const mockStateMachine = new MockStateMachine(appObj);\r\n const baseApp = makeBaseAppState(appObj);\r\n\r\n const setAppState = makeSetAppStateUC(appObj);\r\n\r\n const mockPayload: StartAppPayload = {\r\n finalState: { foo: \"bar\" },\r\n hasNextSlide: false,\r\n hasPreviousSlide: false,\r\n hideNavigation: false,\r\n };\r\n\r\n return {\r\n mockAppHandler,\r\n setAppState,\r\n mockStateMachine,\r\n baseApp,\r\n mockUndo,\r\n mockPayload,\r\n };\r\n}\r\n\r\ndescribe(\"Start App Base Handler\", () => {\r\n it(\"Registers as a handler when constructed\", () => {\r\n const { mockAppHandler, setAppState } = makeTestRig();\r\n expect(mockAppHandler.registerRequestHandler).toHaveBeenCalledWith(\r\n setAppState\r\n );\r\n });\r\n\r\n it(\"Triggers the action with the payload\", () => {\r\n const { setAppState, mockPayload } = makeTestRig();\r\n setAppState.action = jest.fn();\r\n\r\n setAppState.handleRequest(3, mockPayload);\r\n\r\n expect(setAppState.action).toHaveBeenCalledWith(mockPayload);\r\n });\r\n\r\n it(\"Throws for an bungled payload\", () => {\r\n const { setAppState } = makeTestRig();\r\n\r\n expect(() => setAppState.handleRequest(3, { foo: \"bar\" })).toThrowError();\r\n });\r\n\r\n it(\"Throws for an unsupported version\", () => {\r\n const { setAppState, mockPayload } = makeTestRig();\r\n\r\n expect(() => setAppState.handleRequest(-1, mockPayload)).toThrowError();\r\n });\r\n\r\n it(\"Passes the state machine the the state and duration\", () => {\r\n const { mockStateMachine, setAppState, mockPayload } = makeTestRig();\r\n\r\n mockPayload.finalState = { foo: \"bar\" };\r\n mockPayload.duration = 5;\r\n setAppState.handleRequest(3, mockPayload);\r\n expect(mockStateMachine.setSerializedStates).toHaveBeenCalledWith(\r\n { foo: \"bar\" },\r\n 5\r\n );\r\n });\r\n\r\n it(\"State machine is passed the state without a duration\", () => {\r\n const { mockStateMachine, setAppState, mockPayload } = makeTestRig();\r\n\r\n mockPayload.finalState = { foo: \"bar\" };\r\n setAppState.handleRequest(3, mockPayload);\r\n\r\n expect(mockStateMachine.setSerializedStates).toHaveBeenCalledWith(\r\n { foo: \"bar\" },\r\n 0\r\n );\r\n });\r\n\r\n it(\"Sets to a default state if an empty state is passed\", () => {\r\n const { mockStateMachine, setAppState, mockPayload } = makeTestRig();\r\n\r\n mockPayload.finalState = undefined;\r\n mockPayload.duration = 5;\r\n setAppState.handleRequest(3, mockPayload);\r\n expect(mockStateMachine.setDefaultState).toHaveBeenCalledWith(5);\r\n });\r\n\r\n it(\"Resets the is reviewing flag\", () => {\r\n const { baseApp, setAppState, mockPayload } = makeTestRig();\r\n baseApp.isReviewing = true;\r\n\r\n setAppState.handleRequest(3, mockPayload);\r\n\r\n expect(baseApp.isReviewing).toEqual(false);\r\n });\r\n\r\n it(\"Clears the undo stack\", () => {\r\n const { setAppState, mockUndo, mockPayload } = makeTestRig();\r\n\r\n setAppState.handleRequest(3, mockPayload);\r\n\r\n expect(mockUndo.clearStack).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Applies the has next state flag\", () => {\r\n const { setAppState, mockPayload, baseApp } = makeTestRig();\r\n\r\n baseApp.hasNextState = false;\r\n\r\n mockPayload.hasNextSlide = true;\r\n setAppState.handleRequest(3, mockPayload);\r\n expect(baseApp.hasNextState).toEqual(true);\r\n\r\n mockPayload.hasNextSlide = false;\r\n setAppState.handleRequest(3, mockPayload);\r\n expect(baseApp.hasNextState).toEqual(false);\r\n });\r\n\r\n it(\"Applies the has previous state flag\", () => {\r\n const { setAppState, mockPayload, baseApp } = makeTestRig();\r\n\r\n baseApp.hasPreviousState = false;\r\n\r\n mockPayload.hasPreviousSlide = true;\r\n setAppState.handleRequest(3, mockPayload);\r\n expect(baseApp.hasPreviousState).toEqual(true);\r\n\r\n mockPayload.hasPreviousSlide = false;\r\n setAppState.handleRequest(3, mockPayload);\r\n expect(baseApp.hasPreviousState).toEqual(false);\r\n });\r\n\r\n it(\"Applies the hide nav flag\", () => {\r\n const { setAppState, mockPayload, baseApp } = makeTestRig();\r\n\r\n baseApp.hideSlideNavigation = false;\r\n\r\n mockPayload.hideNavigation = true;\r\n setAppState.handleRequest(3, mockPayload);\r\n expect(baseApp.hideSlideNavigation).toEqual(true);\r\n\r\n mockPayload.hideNavigation = false;\r\n setAppState.handleRequest(3, mockPayload);\r\n expect(baseApp.hideSlideNavigation).toEqual(false);\r\n });\r\n});\r\n"]}
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const core_1 = require("@vived/core");
4
4
  const core_2 = require("@vived/core");
5
5
  const Babylon_1 = require("../../Babylon");
6
- const MockDispatchStateChange_1 = require("../../Dispatcher/Mocks/MockDispatchStateChange");
6
+ const Dispatcher_1 = require("../../Dispatcher");
7
7
  const Entities_1 = require("../Entities");
8
8
  const BumpSceneRootScaleAboutPixelPoint_1 = require("./BumpSceneRootScaleAboutPixelPoint");
9
9
  class MockPick extends Babylon_1.ScenePixelPickUC {
@@ -18,7 +18,9 @@ function makeTestRig() {
18
18
  const sceneRoot = (0, Entities_1.makeSceneRootEntity)(sceneRootAO);
19
19
  const bumpUC = (0, BumpSceneRootScaleAboutPixelPoint_1.makeBumpSceneRootScaleAboutPixelPointUC)(sceneRootAO);
20
20
  const appAO = appObjects.getOrCreate("appAO");
21
- const mockDispatch = new MockDispatchStateChange_1.MockDispatchStateChange(appAO);
21
+ const mockDispatch = (0, Dispatcher_1.makeMockDispatchStateChange)(appObjects);
22
+ const doDispatchMock = jest.fn();
23
+ mockDispatch.doDispatch = doDispatchMock;
22
24
  const mockPick = new MockPick(appAO, Babylon_1.ScenePixelPickUC.type);
23
25
  const mockEntityBump = jest.fn();
24
26
  sceneRoot.bumpScaleAboutPoint = mockEntityBump;
@@ -26,6 +28,7 @@ function makeTestRig() {
26
28
  bumpUC,
27
29
  mockEntityBump,
28
30
  mockDispatch,
31
+ doDispatchMock,
29
32
  mockPick,
30
33
  appObjects,
31
34
  };
@@ -73,9 +76,9 @@ describe("Bumping the scene root scale use case", () => {
73
76
  expect(pickPoint).toEqual(new core_2.Vector3(1, 2, 3));
74
77
  });
75
78
  it("Dispatches state change", () => {
76
- const { bumpUC, mockDispatch } = makeTestRig();
79
+ const { bumpUC, doDispatchMock } = makeTestRig();
77
80
  bumpUC.bump("IN", core_2.Vector2.Zero());
78
- expect(mockDispatch.doDispatch).toHaveBeenCalled();
81
+ expect(doDispatchMock).toHaveBeenCalled();
79
82
  });
80
83
  });
81
84
  //# sourceMappingURL=BumpSceneRootScaleAboutPixelPoint.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BumpSceneRootScaleAboutPixelPoint.test.js","sourceRoot":"","sources":["../../../../src/SceneRoot/UC/BumpSceneRootScaleAboutPixelPoint.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { ParametricLine, Vector2, Vector3 } from \"@vived/core\";\r\nimport { ScenePixelPick, ScenePixelPickUC } from \"../../Babylon\";\r\nimport { LogUC } from \"../../Dispatcher\";\r\nimport { MockDispatchStateChange } from \"../../Dispatcher/Mocks/MockDispatchStateChange\";\r\nimport { makeSceneRootEntity } from \"../Entities\";\r\nimport {\r\n BumpSceneRootScaleAboutPixelPointUC,\r\n makeBumpSceneRootScaleAboutPixelPointUC,\r\n} from \"./BumpSceneRootScaleAboutPixelPoint\";\r\n\r\nclass MockPick extends ScenePixelPickUC {\r\n scenePixelPick = jest.fn();\r\n}\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const sceneRootAO = appObjects.getOrCreate(\"sceneRoot\");\r\n const sceneRoot = makeSceneRootEntity(sceneRootAO);\r\n const bumpUC = makeBumpSceneRootScaleAboutPixelPointUC(sceneRootAO);\r\n\r\n const appAO = appObjects.getOrCreate(\"appAO\");\r\n const mockDispatch = new MockDispatchStateChange(appAO);\r\n const mockPick = new MockPick(appAO, ScenePixelPickUC.type);\r\n\r\n const mockEntityBump = jest.fn();\r\n sceneRoot.bumpScaleAboutPoint = mockEntityBump;\r\n\r\n return {\r\n bumpUC,\r\n mockEntityBump,\r\n mockDispatch,\r\n mockPick,\r\n appObjects,\r\n };\r\n}\r\n\r\ndescribe(\"Bumping the scene root scale use case\", () => {\r\n it(\"Gets the UC\", () => {\r\n const { bumpUC, appObjects } = makeTestRig();\r\n expect(BumpSceneRootScaleAboutPixelPointUC.get(appObjects)).toEqual(bumpUC);\r\n });\r\n\r\n it(\"Warns if it is added to something without a scene root\", () => {\r\n const { appObjects } = makeTestRig();\r\n\r\n appObjects.submitWarning = jest.fn();\r\n\r\n const newAO = appObjects.getOrCreate(\"newAO\");\r\n makeBumpSceneRootScaleAboutPixelPointUC(newAO);\r\n\r\n expect(appObjects.submitWarning).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Bumps the scale smaller with an out\", () => {\r\n const { bumpUC, mockEntityBump } = makeTestRig();\r\n bumpUC.bump(\"OUT\", Vector2.Zero());\r\n const bumpAmount = mockEntityBump.mock.calls[0][0];\r\n expect(bumpAmount).toBeLessThan(0);\r\n });\r\n\r\n it(\"Bumps the scale larger with an in\", () => {\r\n const { bumpUC, mockEntityBump } = makeTestRig();\r\n bumpUC.bump(\"IN\", Vector2.Zero());\r\n const bumpAmount = mockEntityBump.mock.calls[0][0];\r\n expect(bumpAmount).toBeGreaterThan(0);\r\n });\r\n\r\n it(\"Scales around the origin if there is no pick\", () => {\r\n const { bumpUC, mockEntityBump } = makeTestRig();\r\n\r\n bumpUC.bump(\"IN\", Vector2.Zero()); // Pixel point does not matter since we are setting the picker\r\n const pickPoint = mockEntityBump.mock.calls[0][1];\r\n expect(pickPoint).toEqual(Vector3.Zero());\r\n });\r\n\r\n it(\"Scales around the pick point\", () => {\r\n const { bumpUC, mockEntityBump, mockPick } = makeTestRig();\r\n\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n worldPickPoint: new Vector3(1, 2, 3),\r\n };\r\n\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n bumpUC.bump(\"IN\", Vector2.Zero()); // Pixel point does not matter since we are setting the picker\r\n const pickPoint = mockEntityBump.mock.calls[0][1];\r\n expect(pickPoint).toEqual(new Vector3(1, 2, 3));\r\n });\r\n\r\n it(\"Dispatches state change\", () => {\r\n const { bumpUC, mockDispatch } = makeTestRig();\r\n\r\n bumpUC.bump(\"IN\", Vector2.Zero());\r\n expect(mockDispatch.doDispatch).toHaveBeenCalled();\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"BumpSceneRootScaleAboutPixelPoint.test.js","sourceRoot":"","sources":["../../../../src/SceneRoot/UC/BumpSceneRootScaleAboutPixelPoint.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { ParametricLine, Vector2, Vector3 } from \"@vived/core\";\r\nimport { ScenePixelPick, ScenePixelPickUC } from \"../../Babylon\";\r\nimport { LogUC } from \"../../Dispatcher\";\r\nimport { makeMockDispatchStateChange } from \"../../Dispatcher\";\r\nimport { makeSceneRootEntity } from \"../Entities\";\r\nimport {\r\n BumpSceneRootScaleAboutPixelPointUC,\r\n makeBumpSceneRootScaleAboutPixelPointUC,\r\n} from \"./BumpSceneRootScaleAboutPixelPoint\";\r\n\r\nclass MockPick extends ScenePixelPickUC {\r\n scenePixelPick = jest.fn();\r\n}\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const sceneRootAO = appObjects.getOrCreate(\"sceneRoot\");\r\n const sceneRoot = makeSceneRootEntity(sceneRootAO);\r\n const bumpUC = makeBumpSceneRootScaleAboutPixelPointUC(sceneRootAO);\r\n\r\n const appAO = appObjects.getOrCreate(\"appAO\");\r\n const mockDispatch = makeMockDispatchStateChange(appObjects);\r\n const doDispatchMock = jest.fn();\r\n mockDispatch.doDispatch = doDispatchMock;\r\n const mockPick = new MockPick(appAO, ScenePixelPickUC.type);\r\n\r\n const mockEntityBump = jest.fn();\r\n sceneRoot.bumpScaleAboutPoint = mockEntityBump;\r\n\r\n return {\r\n bumpUC,\r\n mockEntityBump,\r\n mockDispatch,\r\n doDispatchMock,\r\n mockPick,\r\n appObjects,\r\n };\r\n}\r\n\r\ndescribe(\"Bumping the scene root scale use case\", () => {\r\n it(\"Gets the UC\", () => {\r\n const { bumpUC, appObjects } = makeTestRig();\r\n expect(BumpSceneRootScaleAboutPixelPointUC.get(appObjects)).toEqual(bumpUC);\r\n });\r\n\r\n it(\"Warns if it is added to something without a scene root\", () => {\r\n const { appObjects } = makeTestRig();\r\n\r\n appObjects.submitWarning = jest.fn();\r\n\r\n const newAO = appObjects.getOrCreate(\"newAO\");\r\n makeBumpSceneRootScaleAboutPixelPointUC(newAO);\r\n\r\n expect(appObjects.submitWarning).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Bumps the scale smaller with an out\", () => {\r\n const { bumpUC, mockEntityBump } = makeTestRig();\r\n bumpUC.bump(\"OUT\", Vector2.Zero());\r\n const bumpAmount = mockEntityBump.mock.calls[0][0];\r\n expect(bumpAmount).toBeLessThan(0);\r\n });\r\n\r\n it(\"Bumps the scale larger with an in\", () => {\r\n const { bumpUC, mockEntityBump } = makeTestRig();\r\n bumpUC.bump(\"IN\", Vector2.Zero());\r\n const bumpAmount = mockEntityBump.mock.calls[0][0];\r\n expect(bumpAmount).toBeGreaterThan(0);\r\n });\r\n\r\n it(\"Scales around the origin if there is no pick\", () => {\r\n const { bumpUC, mockEntityBump } = makeTestRig();\r\n\r\n bumpUC.bump(\"IN\", Vector2.Zero()); // Pixel point does not matter since we are setting the picker\r\n const pickPoint = mockEntityBump.mock.calls[0][1];\r\n expect(pickPoint).toEqual(Vector3.Zero());\r\n });\r\n\r\n it(\"Scales around the pick point\", () => {\r\n const { bumpUC, mockEntityBump, mockPick } = makeTestRig();\r\n\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n worldPickPoint: new Vector3(1, 2, 3),\r\n };\r\n\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n bumpUC.bump(\"IN\", Vector2.Zero()); // Pixel point does not matter since we are setting the picker\r\n const pickPoint = mockEntityBump.mock.calls[0][1];\r\n expect(pickPoint).toEqual(new Vector3(1, 2, 3));\r\n });\r\n\r\n it(\"Dispatches state change\", () => {\r\n const { bumpUC, doDispatchMock } = makeTestRig();\r\n\r\n bumpUC.bump(\"IN\", Vector2.Zero());\r\n expect(doDispatchMock).toHaveBeenCalled();\r\n });\r\n});\r\n"]}
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const core_1 = require("@vived/core");
4
4
  const core_2 = require("@vived/core");
5
5
  const Babylon_1 = require("../../Babylon");
6
- const MockDispatchStateChange_1 = require("../../Dispatcher/Mocks/MockDispatchStateChange");
6
+ const Dispatcher_1 = require("../../Dispatcher");
7
7
  const Entities_1 = require("../Entities");
8
8
  const DragScaleSceneRoot_1 = require("./DragScaleSceneRoot");
9
9
  class MockPick extends Babylon_1.ScenePixelPickUC {
@@ -16,7 +16,9 @@ function makeTestRig() {
16
16
  const appObjects = (0, core_1.makeAppObjectRepo)();
17
17
  const sceneRootAO = appObjects.getOrCreate("sceneRoot");
18
18
  const sceneRoot = (0, Entities_1.makeSceneRootEntity)(sceneRootAO);
19
- const mockDispatch = new MockDispatchStateChange_1.MockDispatchStateChange(sceneRootAO);
19
+ const mockDispatch = (0, Dispatcher_1.makeMockDispatchStateChange)(appObjects);
20
+ const doDispatchMock = jest.fn();
21
+ mockDispatch.doDispatch = doDispatchMock;
20
22
  const scaleUC = (0, DragScaleSceneRoot_1.makeDragScaleSceneRootUC)(sceneRootAO);
21
23
  const appAO = appObjects.getOrCreate("appAO");
22
24
  const mockPick = new MockPick(appAO, Babylon_1.ScenePixelPickUC.type);
@@ -27,6 +29,7 @@ function makeTestRig() {
27
29
  appObjects,
28
30
  mockEntityBump,
29
31
  mockDispatch,
32
+ doDispatchMock,
30
33
  mockPick,
31
34
  sceneRoot,
32
35
  };
@@ -72,19 +75,19 @@ describe("Drag Scale Scene Root UC", () => {
72
75
  expect(pickPoint).toEqual(new core_2.Vector3(1, 2, 3));
73
76
  });
74
77
  it("Dispatches state change", () => {
75
- const { scaleUC, mockDispatch, sceneRoot } = makeTestRig();
78
+ const { scaleUC, doDispatchMock, sceneRoot } = makeTestRig();
76
79
  sceneRoot.scale = 1;
77
80
  scaleUC.initializeScale(core_2.Vector2.Zero());
78
81
  sceneRoot.scale = 5;
79
82
  scaleUC.finishScaling();
80
- expect(mockDispatch.doDispatch).toHaveBeenCalled();
83
+ expect(doDispatchMock).toHaveBeenCalled();
81
84
  });
82
85
  it("Does not dispatches state change if the scale does not change", () => {
83
- const { scaleUC, mockDispatch, sceneRoot } = makeTestRig();
86
+ const { scaleUC, doDispatchMock, sceneRoot } = makeTestRig();
84
87
  sceneRoot.scale = 1;
85
88
  scaleUC.initializeScale(core_2.Vector2.Zero());
86
89
  scaleUC.finishScaling();
87
- expect(mockDispatch.doDispatch).not.toHaveBeenCalled();
90
+ expect(doDispatchMock).not.toHaveBeenCalled();
88
91
  });
89
92
  it("Does not dispatches state change if it was not initialized", () => {
90
93
  const { scaleUC, mockDispatch } = makeTestRig();
@@ -1 +1 @@
1
- {"version":3,"file":"DragScaleSceneRoot.test.js","sourceRoot":"","sources":["../../../../src/SceneRoot/UC/DragScaleSceneRoot.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { ParametricLine, Vector2, Vector3 } from \"@vived/core\";\r\nimport { ScenePixelPick, ScenePixelPickUC } from \"../../Babylon\";\r\nimport { LogUC } from \"../../Dispatcher\";\r\nimport { MockDispatchStateChange } from \"../../Dispatcher/Mocks/MockDispatchStateChange\";\r\nimport { makeSceneRootEntity } from \"../Entities\";\r\nimport {\r\n DragScaleSceneRootUC,\r\n makeDragScaleSceneRootUC,\r\n} from \"./DragScaleSceneRoot\";\r\n\r\nclass MockPick extends ScenePixelPickUC {\r\n scenePixelPick = jest.fn();\r\n}\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const sceneRootAO = appObjects.getOrCreate(\"sceneRoot\");\r\n const sceneRoot = makeSceneRootEntity(sceneRootAO);\r\n\r\n const mockDispatch = new MockDispatchStateChange(sceneRootAO);\r\n\r\n const scaleUC = makeDragScaleSceneRootUC(sceneRootAO);\r\n\r\n const appAO = appObjects.getOrCreate(\"appAO\");\r\n const mockPick = new MockPick(appAO, ScenePixelPickUC.type);\r\n\r\n const mockEntityBump = jest.fn();\r\n sceneRoot.bumpScaleAboutPoint = mockEntityBump;\r\n\r\n return {\r\n scaleUC,\r\n appObjects,\r\n mockEntityBump,\r\n mockDispatch,\r\n mockPick,\r\n sceneRoot,\r\n };\r\n}\r\n\r\ndescribe(\"Drag Scale Scene Root UC\", () => {\r\n it(\"Decreases the scaleUC with down movement\", () => {\r\n const { scaleUC, mockEntityBump } = makeTestRig();\r\n\r\n scaleUC.initializeScale(Vector2.Zero());\r\n scaleUC.doScale(new Vector2(0, -10));\r\n\r\n const bumpAmount = mockEntityBump.mock.calls[0][0];\r\n expect(bumpAmount).toBeLessThan(0);\r\n });\r\n\r\n it(\"Increases the scaleUC with up movement\", () => {\r\n const { scaleUC, mockEntityBump } = makeTestRig();\r\n\r\n scaleUC.initializeScale(Vector2.Zero());\r\n scaleUC.doScale(new Vector2(0, 10));\r\n\r\n const bumpAmount = mockEntityBump.mock.calls[0][0];\r\n expect(bumpAmount).toBeGreaterThan(0);\r\n });\r\n\r\n it(\"Scales around the origin if there is no pick\", () => {\r\n const { scaleUC, mockEntityBump, mockPick } = makeTestRig();\r\n\r\n const pick: ScenePixelPick = {\r\n hit: false,\r\n sceneRay: ParametricLine.Forward(),\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n scaleUC.initializeScale(Vector2.Zero());\r\n scaleUC.doScale(new Vector2(0, 10));\r\n\r\n const pickPoint = mockEntityBump.mock.calls[0][1];\r\n expect(pickPoint).toEqual(Vector3.Zero());\r\n });\r\n\r\n it(\"Scales around the pick point\", () => {\r\n const { scaleUC, mockEntityBump, mockPick } = makeTestRig();\r\n\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n worldPickPoint: new Vector3(1, 2, 3),\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n scaleUC.initializeScale(Vector2.Zero());\r\n scaleUC.doScale(new Vector2(0, 10));\r\n\r\n const pickPoint = mockEntityBump.mock.calls[0][1];\r\n expect(pickPoint).toEqual(new Vector3(1, 2, 3));\r\n });\r\n\r\n it(\"Dispatches state change\", () => {\r\n const { scaleUC, mockDispatch, sceneRoot } = makeTestRig();\r\n\r\n sceneRoot.scale = 1;\r\n scaleUC.initializeScale(Vector2.Zero());\r\n\r\n sceneRoot.scale = 5;\r\n scaleUC.finishScaling();\r\n expect(mockDispatch.doDispatch).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Does not dispatches state change if the scale does not change\", () => {\r\n const { scaleUC, mockDispatch, sceneRoot } = makeTestRig();\r\n\r\n sceneRoot.scale = 1;\r\n scaleUC.initializeScale(Vector2.Zero());\r\n\r\n scaleUC.finishScaling();\r\n expect(mockDispatch.doDispatch).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Does not dispatches state change if it was not initialized\", () => {\r\n const { scaleUC, mockDispatch } = makeTestRig();\r\n scaleUC.finishScaling();\r\n expect(mockDispatch.doDispatch).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Does not scale if it is not initialized\", () => {\r\n const { scaleUC, mockEntityBump, mockPick } = makeTestRig();\r\n\r\n const pick: ScenePixelPick = {\r\n hit: false,\r\n sceneRay: ParametricLine.Forward(),\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n scaleUC.doScale(new Vector2(0, 10));\r\n\r\n expect(mockEntityBump).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Gets the UC\", () => {\r\n const { scaleUC, appObjects } = makeTestRig();\r\n expect(DragScaleSceneRootUC.get(appObjects)).toEqual(scaleUC);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"DragScaleSceneRoot.test.js","sourceRoot":"","sources":["../../../../src/SceneRoot/UC/DragScaleSceneRoot.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { ParametricLine, Vector2, Vector3 } from \"@vived/core\";\r\nimport { ScenePixelPick, ScenePixelPickUC } from \"../../Babylon\";\r\nimport { LogUC } from \"../../Dispatcher\";\r\nimport { makeMockDispatchStateChange } from \"../../Dispatcher\";\r\nimport { makeSceneRootEntity } from \"../Entities\";\r\nimport {\r\n DragScaleSceneRootUC,\r\n makeDragScaleSceneRootUC,\r\n} from \"./DragScaleSceneRoot\";\r\n\r\nclass MockPick extends ScenePixelPickUC {\r\n scenePixelPick = jest.fn();\r\n}\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const sceneRootAO = appObjects.getOrCreate(\"sceneRoot\");\r\n const sceneRoot = makeSceneRootEntity(sceneRootAO);\r\n\r\n const mockDispatch = makeMockDispatchStateChange(appObjects);\r\n const doDispatchMock = jest.fn();\r\n mockDispatch.doDispatch = doDispatchMock;\r\n\r\n const scaleUC = makeDragScaleSceneRootUC(sceneRootAO);\r\n\r\n const appAO = appObjects.getOrCreate(\"appAO\");\r\n const mockPick = new MockPick(appAO, ScenePixelPickUC.type);\r\n\r\n const mockEntityBump = jest.fn();\r\n sceneRoot.bumpScaleAboutPoint = mockEntityBump;\r\n\r\n return {\r\n scaleUC,\r\n appObjects,\r\n mockEntityBump,\r\n mockDispatch,\r\n doDispatchMock,\r\n mockPick,\r\n sceneRoot,\r\n };\r\n}\r\n\r\ndescribe(\"Drag Scale Scene Root UC\", () => {\r\n it(\"Decreases the scaleUC with down movement\", () => {\r\n const { scaleUC, mockEntityBump } = makeTestRig();\r\n\r\n scaleUC.initializeScale(Vector2.Zero());\r\n scaleUC.doScale(new Vector2(0, -10));\r\n\r\n const bumpAmount = mockEntityBump.mock.calls[0][0];\r\n expect(bumpAmount).toBeLessThan(0);\r\n });\r\n\r\n it(\"Increases the scaleUC with up movement\", () => {\r\n const { scaleUC, mockEntityBump } = makeTestRig();\r\n\r\n scaleUC.initializeScale(Vector2.Zero());\r\n scaleUC.doScale(new Vector2(0, 10));\r\n\r\n const bumpAmount = mockEntityBump.mock.calls[0][0];\r\n expect(bumpAmount).toBeGreaterThan(0);\r\n });\r\n\r\n it(\"Scales around the origin if there is no pick\", () => {\r\n const { scaleUC, mockEntityBump, mockPick } = makeTestRig();\r\n\r\n const pick: ScenePixelPick = {\r\n hit: false,\r\n sceneRay: ParametricLine.Forward(),\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n scaleUC.initializeScale(Vector2.Zero());\r\n scaleUC.doScale(new Vector2(0, 10));\r\n\r\n const pickPoint = mockEntityBump.mock.calls[0][1];\r\n expect(pickPoint).toEqual(Vector3.Zero());\r\n });\r\n\r\n it(\"Scales around the pick point\", () => {\r\n const { scaleUC, mockEntityBump, mockPick } = makeTestRig();\r\n\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n worldPickPoint: new Vector3(1, 2, 3),\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n scaleUC.initializeScale(Vector2.Zero());\r\n scaleUC.doScale(new Vector2(0, 10));\r\n\r\n const pickPoint = mockEntityBump.mock.calls[0][1];\r\n expect(pickPoint).toEqual(new Vector3(1, 2, 3));\r\n });\r\n\r\n it(\"Dispatches state change\", () => {\r\n const { scaleUC, doDispatchMock, sceneRoot } = makeTestRig();\r\n\r\n sceneRoot.scale = 1;\r\n scaleUC.initializeScale(Vector2.Zero());\r\n\r\n sceneRoot.scale = 5;\r\n scaleUC.finishScaling();\r\n expect(doDispatchMock).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Does not dispatches state change if the scale does not change\", () => {\r\n const { scaleUC, doDispatchMock, sceneRoot } = makeTestRig();\r\n\r\n sceneRoot.scale = 1;\r\n scaleUC.initializeScale(Vector2.Zero());\r\n\r\n scaleUC.finishScaling();\r\n expect(doDispatchMock).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Does not dispatches state change if it was not initialized\", () => {\r\n const { scaleUC, mockDispatch } = makeTestRig();\r\n scaleUC.finishScaling();\r\n expect(mockDispatch.doDispatch).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Does not scale if it is not initialized\", () => {\r\n const { scaleUC, mockEntityBump, mockPick } = makeTestRig();\r\n\r\n const pick: ScenePixelPick = {\r\n hit: false,\r\n sceneRay: ParametricLine.Forward(),\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n scaleUC.doScale(new Vector2(0, 10));\r\n\r\n expect(mockEntityBump).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Gets the UC\", () => {\r\n const { scaleUC, appObjects } = makeTestRig();\r\n expect(DragScaleSceneRootUC.get(appObjects)).toEqual(scaleUC);\r\n });\r\n});\r\n"]}
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const core_1 = require("@vived/core");
4
4
  const core_2 = require("@vived/core");
5
5
  const Babylon_1 = require("../../Babylon");
6
- const MockDispatchStateChange_1 = require("../../Dispatcher/Mocks/MockDispatchStateChange");
6
+ const Dispatcher_1 = require("../../Dispatcher");
7
7
  const Entities_1 = require("../Entities");
8
8
  const OrbitSceneRoot_1 = require("./OrbitSceneRoot");
9
9
  class MockPick extends Babylon_1.ScenePixelPickUC {
@@ -19,8 +19,17 @@ function makeTestRig() {
19
19
  const orbit = (0, OrbitSceneRoot_1.makeOrbitSceneRootUC)(sceneRootAO);
20
20
  const appAO = appObjects.getOrCreate("appAO");
21
21
  const mockPick = new MockPick(appAO, Babylon_1.ScenePixelPickUC.type);
22
- const mockDispatch = new MockDispatchStateChange_1.MockDispatchStateChange(appAO);
23
- return { orbit, sceneRoot, mockPick, mockDispatch, appObjects };
22
+ const mockDispatch = (0, Dispatcher_1.makeMockDispatchStateChange)(appObjects);
23
+ const doDispatchMock = jest.fn();
24
+ mockDispatch.doDispatch = doDispatchMock;
25
+ return {
26
+ orbit,
27
+ sceneRoot,
28
+ mockPick,
29
+ mockDispatch,
30
+ doDispatchMock,
31
+ appObjects,
32
+ };
24
33
  }
25
34
  describe("Orbit Scene Root Use Case", () => {
26
35
  it("Rotates about global X when moving the mouse in the y direction", () => {
@@ -87,22 +96,22 @@ describe("Orbit Scene Root Use Case", () => {
87
96
  expect(sceneRoot.position).toEqual(expectedPos);
88
97
  });
89
98
  it("Dispatches a state change if the rotaiton has changed since init", () => {
90
- const { sceneRoot, orbit, mockDispatch } = makeTestRig();
99
+ const { sceneRoot, orbit, doDispatchMock } = makeTestRig();
91
100
  const initialRotation = core_2.Quaternion.FromYawPitchRoll(core_2.Angle.FromDegrees(30), core_2.Angle.FromDegrees(45), core_2.Angle.FromDegrees(0));
92
101
  sceneRoot.rotation = initialRotation;
93
102
  orbit.initializeOrbit(core_2.Vector2.Zero());
94
103
  const finalRotation = core_2.Quaternion.FromYawPitchRoll(core_2.Angle.FromDegrees(30), core_2.Angle.FromDegrees(-45), core_2.Angle.FromDegrees(0));
95
104
  sceneRoot.rotation = finalRotation;
96
105
  orbit.finishOrbit();
97
- expect(mockDispatch.doDispatch).toHaveBeenCalled();
106
+ expect(doDispatchMock).toHaveBeenCalled();
98
107
  });
99
108
  it("Does not dispatch a state change if the rotaiton has not changed", () => {
100
- const { sceneRoot, orbit, mockDispatch } = makeTestRig();
109
+ const { sceneRoot, orbit, doDispatchMock } = makeTestRig();
101
110
  const initialRotation = core_2.Quaternion.FromYawPitchRoll(core_2.Angle.FromDegrees(30), core_2.Angle.FromDegrees(45), core_2.Angle.FromDegrees(0));
102
111
  sceneRoot.rotation = initialRotation;
103
112
  orbit.initializeOrbit(core_2.Vector2.Zero());
104
113
  orbit.finishOrbit();
105
- expect(mockDispatch.doDispatch).not.toHaveBeenCalled();
114
+ expect(doDispatchMock).not.toHaveBeenCalled();
106
115
  });
107
116
  it("Gets the UC", () => {
108
117
  const { orbit, appObjects } = makeTestRig();
@@ -1 +1 @@
1
- {"version":3,"file":"OrbitSceneRoot.test.js","sourceRoot":"","sources":["../../../../src/SceneRoot/UC/OrbitSceneRoot.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport {\r\n Angle,\r\n Matrix,\r\n ParametricLine,\r\n Quaternion,\r\n Vector2,\r\n Vector3,\r\n} from \"@vived/core\";\r\nimport { ScenePixelPick, ScenePixelPickUC } from \"../../Babylon\";\r\nimport { LogUC } from \"../../Dispatcher\";\r\nimport { MockDispatchStateChange } from \"../../Dispatcher/Mocks/MockDispatchStateChange\";\r\nimport { makeSceneRootEntity } from \"../Entities\";\r\nimport { makeOrbitSceneRootUC, OrbitSceneRootUC } from \"./OrbitSceneRoot\";\r\n\r\nclass MockPick extends ScenePixelPickUC {\r\n scenePixelPick = jest.fn();\r\n}\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const sceneRootAO = appObjects.getOrCreate(\"sceneRoot\");\r\n const sceneRoot = makeSceneRootEntity(sceneRootAO);\r\n\r\n const orbit = makeOrbitSceneRootUC(sceneRootAO);\r\n\r\n const appAO = appObjects.getOrCreate(\"appAO\");\r\n const mockPick = new MockPick(appAO, ScenePixelPickUC.type);\r\n const mockDispatch = new MockDispatchStateChange(appAO);\r\n\r\n return { orbit, sceneRoot, mockPick, mockDispatch, appObjects };\r\n}\r\n\r\ndescribe(\"Orbit Scene Root Use Case\", () => {\r\n it(\"Rotates about global X when moving the mouse in the y direction\", () => {\r\n const { sceneRoot, orbit } = makeTestRig();\r\n const initialRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(30),\r\n Angle.FromDegrees(45),\r\n Angle.FromDegrees(0)\r\n );\r\n sceneRoot.rotation = initialRotation;\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n\r\n const drag = new Vector2(0, 10);\r\n\r\n const expectOrbitQuaternion = Quaternion.FromAngleAxis(\r\n Vector3.Left(),\r\n Angle.FromDegrees(orbit.sensitivity * 10)\r\n );\r\n const expectFinalQuaterion = Quaternion.Multiply(\r\n expectOrbitQuaternion,\r\n initialRotation\r\n );\r\n\r\n orbit.doOrbit(drag);\r\n const rootRotation = sceneRoot.rotation;\r\n\r\n expect(Quaternion.Close(rootRotation, expectFinalQuaterion)).toBe(true);\r\n });\r\n\r\n it(\"Rotates about local Y when moving the mouse in the X direction\", () => {\r\n const { sceneRoot, orbit } = makeTestRig();\r\n const initialRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(30),\r\n Angle.FromDegrees(45),\r\n Angle.FromDegrees(0)\r\n );\r\n sceneRoot.rotation = initialRotation;\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n\r\n const drag = new Vector2(10, 0);\r\n\r\n const worldHeadingAxis = sceneRoot.transform.localDirectionToWorld(\r\n Vector3.Down()\r\n );\r\n const expectOrbitQuaternion = Quaternion.FromAngleAxis(\r\n worldHeadingAxis,\r\n Angle.FromDegrees(orbit.sensitivity * 10)\r\n );\r\n\r\n const expectFinalQuaterion = Quaternion.Multiply(\r\n expectOrbitQuaternion,\r\n initialRotation\r\n );\r\n\r\n orbit.doOrbit(drag);\r\n const rootRotation = sceneRoot.transform.worldRotation;\r\n\r\n expect(Quaternion.Close(rootRotation, expectFinalQuaterion)).toBe(true);\r\n });\r\n\r\n it(\"Flips the heading angle if the root is flipped upside down\", () => {\r\n const { sceneRoot, orbit } = makeTestRig();\r\n const initialRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(100),\r\n Angle.FromDegrees(0)\r\n );\r\n sceneRoot.transform.localRotation = initialRotation;\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n\r\n const drag = new Vector2(10, 0);\r\n\r\n const worldHeadingAxis = sceneRoot.transform.localDirectionToWorld(\r\n Vector3.Down()\r\n );\r\n const expectOrbitQuaternion = Quaternion.FromAngleAxis(\r\n worldHeadingAxis,\r\n Angle.FromDegrees(orbit.sensitivity * -10)\r\n );\r\n\r\n const expectFinalQuaterion = Quaternion.Multiply(\r\n expectOrbitQuaternion,\r\n initialRotation\r\n );\r\n\r\n orbit.doOrbit(drag);\r\n\r\n expect(Quaternion.Close(sceneRoot.rotation, expectFinalQuaterion)).toBe(\r\n true\r\n );\r\n });\r\n\r\n it(\"Orbits around the global origin if there is no pick hit\", () => {\r\n const { sceneRoot, orbit } = makeTestRig();\r\n sceneRoot.position = new Vector3(1, 2, 3);\r\n orbit.initializeOrbit(Vector2.Zero());\r\n orbit.doOrbit(new Vector2(100, 0));\r\n\r\n const expectedRotationMatrix = Matrix.FromRotationAxisAngle(\r\n Vector3.Down(),\r\n Angle.FromDegrees(orbit.sensitivity * 100)\r\n );\r\n\r\n const expectedPos = Vector3.Transform(\r\n new Vector3(1, 2, 3),\r\n expectedRotationMatrix\r\n );\r\n\r\n expect(sceneRoot.position).toEqual(expectedPos);\r\n });\r\n\r\n it(\"Orbits around the pick point\", () => {\r\n const { sceneRoot, orbit, mockPick } = makeTestRig();\r\n\r\n expect(sceneRoot.position).toEqual(Vector3.Zero());\r\n\r\n const pickPos = new Vector3(1, 2, 3);\r\n\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n worldPickPoint: pickPos,\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n orbit.doOrbit(new Vector2(100, 0));\r\n\r\n const expectedRotationMatrix = Matrix.FromRotationAxisAngle(\r\n Vector3.Down(),\r\n Angle.FromDegrees(orbit.sensitivity * 100)\r\n );\r\n\r\n const transformedPick = Vector3.Transform(pickPos, expectedRotationMatrix);\r\n const expectedPos = Vector3.Subtract(pickPos, transformedPick);\r\n\r\n expect(sceneRoot.position).toEqual(expectedPos);\r\n });\r\n\r\n it(\"Dispatches a state change if the rotaiton has changed since init\", () => {\r\n const { sceneRoot, orbit, mockDispatch } = makeTestRig();\r\n const initialRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(30),\r\n Angle.FromDegrees(45),\r\n Angle.FromDegrees(0)\r\n );\r\n sceneRoot.rotation = initialRotation;\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n\r\n const finalRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(30),\r\n Angle.FromDegrees(-45),\r\n Angle.FromDegrees(0)\r\n );\r\n sceneRoot.rotation = finalRotation;\r\n\r\n orbit.finishOrbit();\r\n\r\n expect(mockDispatch.doDispatch).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Does not dispatch a state change if the rotaiton has not changed\", () => {\r\n const { sceneRoot, orbit, mockDispatch } = makeTestRig();\r\n const initialRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(30),\r\n Angle.FromDegrees(45),\r\n Angle.FromDegrees(0)\r\n );\r\n sceneRoot.rotation = initialRotation;\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n\r\n orbit.finishOrbit();\r\n\r\n expect(mockDispatch.doDispatch).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Gets the UC\", () => {\r\n const { orbit, appObjects } = makeTestRig();\r\n expect(OrbitSceneRootUC.get(appObjects)).toEqual(orbit);\r\n });\r\n\r\n it(\"Quits updating after orbit has been cancelled\", () => {\r\n const { sceneRoot, orbit, mockPick } = makeTestRig();\r\n\r\n expect(sceneRoot.position).toEqual(Vector3.Zero());\r\n\r\n const pickPos = new Vector3(1, 2, 3);\r\n\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n worldPickPoint: pickPos,\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n orbit.cancelOrbit();\r\n orbit.doOrbit(new Vector2(100, 0));\r\n\r\n expect(sceneRoot.position).toEqual(Vector3.Zero());\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"OrbitSceneRoot.test.js","sourceRoot":"","sources":["../../../../src/SceneRoot/UC/OrbitSceneRoot.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport {\r\n Angle,\r\n Matrix,\r\n ParametricLine,\r\n Quaternion,\r\n Vector2,\r\n Vector3,\r\n} from \"@vived/core\";\r\nimport { ScenePixelPick, ScenePixelPickUC } from \"../../Babylon\";\r\nimport { LogUC } from \"../../Dispatcher\";\r\nimport { makeMockDispatchStateChange } from \"../../Dispatcher\";\r\nimport { makeSceneRootEntity } from \"../Entities\";\r\nimport { makeOrbitSceneRootUC, OrbitSceneRootUC } from \"./OrbitSceneRoot\";\r\n\r\nclass MockPick extends ScenePixelPickUC {\r\n scenePixelPick = jest.fn();\r\n}\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const sceneRootAO = appObjects.getOrCreate(\"sceneRoot\");\r\n const sceneRoot = makeSceneRootEntity(sceneRootAO);\r\n\r\n const orbit = makeOrbitSceneRootUC(sceneRootAO);\r\n\r\n const appAO = appObjects.getOrCreate(\"appAO\");\r\n const mockPick = new MockPick(appAO, ScenePixelPickUC.type);\r\n const mockDispatch = makeMockDispatchStateChange(appObjects);\r\n const doDispatchMock = jest.fn();\r\n mockDispatch.doDispatch = doDispatchMock;\r\n\r\n return {\r\n orbit,\r\n sceneRoot,\r\n mockPick,\r\n mockDispatch,\r\n doDispatchMock,\r\n appObjects,\r\n };\r\n}\r\n\r\ndescribe(\"Orbit Scene Root Use Case\", () => {\r\n it(\"Rotates about global X when moving the mouse in the y direction\", () => {\r\n const { sceneRoot, orbit } = makeTestRig();\r\n const initialRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(30),\r\n Angle.FromDegrees(45),\r\n Angle.FromDegrees(0)\r\n );\r\n sceneRoot.rotation = initialRotation;\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n\r\n const drag = new Vector2(0, 10);\r\n\r\n const expectOrbitQuaternion = Quaternion.FromAngleAxis(\r\n Vector3.Left(),\r\n Angle.FromDegrees(orbit.sensitivity * 10)\r\n );\r\n const expectFinalQuaterion = Quaternion.Multiply(\r\n expectOrbitQuaternion,\r\n initialRotation\r\n );\r\n\r\n orbit.doOrbit(drag);\r\n const rootRotation = sceneRoot.rotation;\r\n\r\n expect(Quaternion.Close(rootRotation, expectFinalQuaterion)).toBe(true);\r\n });\r\n\r\n it(\"Rotates about local Y when moving the mouse in the X direction\", () => {\r\n const { sceneRoot, orbit } = makeTestRig();\r\n const initialRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(30),\r\n Angle.FromDegrees(45),\r\n Angle.FromDegrees(0)\r\n );\r\n sceneRoot.rotation = initialRotation;\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n\r\n const drag = new Vector2(10, 0);\r\n\r\n const worldHeadingAxis = sceneRoot.transform.localDirectionToWorld(\r\n Vector3.Down()\r\n );\r\n const expectOrbitQuaternion = Quaternion.FromAngleAxis(\r\n worldHeadingAxis,\r\n Angle.FromDegrees(orbit.sensitivity * 10)\r\n );\r\n\r\n const expectFinalQuaterion = Quaternion.Multiply(\r\n expectOrbitQuaternion,\r\n initialRotation\r\n );\r\n\r\n orbit.doOrbit(drag);\r\n const rootRotation = sceneRoot.transform.worldRotation;\r\n\r\n expect(Quaternion.Close(rootRotation, expectFinalQuaterion)).toBe(true);\r\n });\r\n\r\n it(\"Flips the heading angle if the root is flipped upside down\", () => {\r\n const { sceneRoot, orbit } = makeTestRig();\r\n const initialRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(0),\r\n Angle.FromDegrees(100),\r\n Angle.FromDegrees(0)\r\n );\r\n sceneRoot.transform.localRotation = initialRotation;\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n\r\n const drag = new Vector2(10, 0);\r\n\r\n const worldHeadingAxis = sceneRoot.transform.localDirectionToWorld(\r\n Vector3.Down()\r\n );\r\n const expectOrbitQuaternion = Quaternion.FromAngleAxis(\r\n worldHeadingAxis,\r\n Angle.FromDegrees(orbit.sensitivity * -10)\r\n );\r\n\r\n const expectFinalQuaterion = Quaternion.Multiply(\r\n expectOrbitQuaternion,\r\n initialRotation\r\n );\r\n\r\n orbit.doOrbit(drag);\r\n\r\n expect(Quaternion.Close(sceneRoot.rotation, expectFinalQuaterion)).toBe(\r\n true\r\n );\r\n });\r\n\r\n it(\"Orbits around the global origin if there is no pick hit\", () => {\r\n const { sceneRoot, orbit } = makeTestRig();\r\n sceneRoot.position = new Vector3(1, 2, 3);\r\n orbit.initializeOrbit(Vector2.Zero());\r\n orbit.doOrbit(new Vector2(100, 0));\r\n\r\n const expectedRotationMatrix = Matrix.FromRotationAxisAngle(\r\n Vector3.Down(),\r\n Angle.FromDegrees(orbit.sensitivity * 100)\r\n );\r\n\r\n const expectedPos = Vector3.Transform(\r\n new Vector3(1, 2, 3),\r\n expectedRotationMatrix\r\n );\r\n\r\n expect(sceneRoot.position).toEqual(expectedPos);\r\n });\r\n\r\n it(\"Orbits around the pick point\", () => {\r\n const { sceneRoot, orbit, mockPick } = makeTestRig();\r\n\r\n expect(sceneRoot.position).toEqual(Vector3.Zero());\r\n\r\n const pickPos = new Vector3(1, 2, 3);\r\n\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n worldPickPoint: pickPos,\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n orbit.doOrbit(new Vector2(100, 0));\r\n\r\n const expectedRotationMatrix = Matrix.FromRotationAxisAngle(\r\n Vector3.Down(),\r\n Angle.FromDegrees(orbit.sensitivity * 100)\r\n );\r\n\r\n const transformedPick = Vector3.Transform(pickPos, expectedRotationMatrix);\r\n const expectedPos = Vector3.Subtract(pickPos, transformedPick);\r\n\r\n expect(sceneRoot.position).toEqual(expectedPos);\r\n });\r\n\r\n it(\"Dispatches a state change if the rotaiton has changed since init\", () => {\r\n const { sceneRoot, orbit, doDispatchMock } = makeTestRig();\r\n const initialRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(30),\r\n Angle.FromDegrees(45),\r\n Angle.FromDegrees(0)\r\n );\r\n sceneRoot.rotation = initialRotation;\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n\r\n const finalRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(30),\r\n Angle.FromDegrees(-45),\r\n Angle.FromDegrees(0)\r\n );\r\n sceneRoot.rotation = finalRotation;\r\n\r\n orbit.finishOrbit();\r\n\r\n expect(doDispatchMock).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Does not dispatch a state change if the rotaiton has not changed\", () => {\r\n const { sceneRoot, orbit, doDispatchMock } = makeTestRig();\r\n const initialRotation = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(30),\r\n Angle.FromDegrees(45),\r\n Angle.FromDegrees(0)\r\n );\r\n sceneRoot.rotation = initialRotation;\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n\r\n orbit.finishOrbit();\r\n\r\n expect(doDispatchMock).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Gets the UC\", () => {\r\n const { orbit, appObjects } = makeTestRig();\r\n expect(OrbitSceneRootUC.get(appObjects)).toEqual(orbit);\r\n });\r\n\r\n it(\"Quits updating after orbit has been cancelled\", () => {\r\n const { sceneRoot, orbit, mockPick } = makeTestRig();\r\n\r\n expect(sceneRoot.position).toEqual(Vector3.Zero());\r\n\r\n const pickPos = new Vector3(1, 2, 3);\r\n\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n worldPickPoint: pickPos,\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n orbit.initializeOrbit(Vector2.Zero());\r\n orbit.cancelOrbit();\r\n orbit.doOrbit(new Vector2(100, 0));\r\n\r\n expect(sceneRoot.position).toEqual(Vector3.Zero());\r\n });\r\n});\r\n"]}
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const core_1 = require("@vived/core");
4
4
  const core_2 = require("@vived/core");
5
5
  const Babylon_1 = require("../../Babylon");
6
- const MockDispatchStateChange_1 = require("../../Dispatcher/Mocks/MockDispatchStateChange");
6
+ const Dispatcher_1 = require("../../Dispatcher");
7
7
  const Entities_1 = require("../Entities");
8
8
  const PanSceneRoot_1 = require("./PanSceneRoot");
9
9
  class MockPick extends Babylon_1.ScenePixelPickUC {
@@ -25,13 +25,16 @@ function makeTestRig() {
25
25
  const panUC = (0, PanSceneRoot_1.makePanSceneRootUC)(sceneRootAO);
26
26
  const appAO = appObjects.getOrCreate("appAO");
27
27
  const mockPick = new MockPick(appAO, Babylon_1.ScenePixelPickUC.type);
28
- const mockDispatch = new MockDispatchStateChange_1.MockDispatchStateChange(appAO);
28
+ const mockDispatch = (0, Dispatcher_1.makeMockDispatchStateChange)(appObjects);
29
+ const doDispatchMock = jest.fn();
30
+ mockDispatch.doDispatch = doDispatchMock;
29
31
  const mockPixelRay = new MockPixelToRay(appAO, Babylon_1.PixelToSceneRayUC.type);
30
32
  return {
31
33
  panUC,
32
34
  sceneRoot,
33
35
  mockPick,
34
36
  mockDispatch,
37
+ doDispatchMock,
35
38
  appObjects,
36
39
  mockPixelRay,
37
40
  };
@@ -63,7 +66,7 @@ describe("Pan Scene Root Use Case", () => {
63
66
  expect(sceneRoot.position).toEqual(new core_2.Vector3(11, 12, 10));
64
67
  });
65
68
  it("Dispatches a state change if the position has changed since init", () => {
66
- const { sceneRoot, panUC, mockDispatch, mockPick } = makeTestRig();
69
+ const { sceneRoot, panUC, doDispatchMock, mockPick } = makeTestRig();
67
70
  sceneRoot.position = new core_2.Vector3(1, 2, 3);
68
71
  const pick = {
69
72
  hit: true,
@@ -73,14 +76,14 @@ describe("Pan Scene Root Use Case", () => {
73
76
  panUC.initializePan(core_2.Vector2.Zero());
74
77
  sceneRoot.position = new core_2.Vector3(4, 5, 6);
75
78
  panUC.finishPan();
76
- expect(mockDispatch.doDispatch).toHaveBeenCalled();
79
+ expect(doDispatchMock).toHaveBeenCalled();
77
80
  });
78
81
  it("Does not dispatch a state change if the position has not changed", () => {
79
- const { sceneRoot, panUC, mockDispatch } = makeTestRig();
82
+ const { sceneRoot, panUC, doDispatchMock } = makeTestRig();
80
83
  sceneRoot.position = new core_2.Vector3(1, 2, 3);
81
84
  panUC.initializePan(core_2.Vector2.Zero());
82
85
  panUC.finishPan();
83
- expect(mockDispatch.doDispatch).not.toHaveBeenCalled();
86
+ expect(doDispatchMock).not.toHaveBeenCalled();
84
87
  });
85
88
  it("Doen not move the transform after cancel", () => {
86
89
  const { sceneRoot, panUC, mockPick, mockPixelRay } = makeTestRig();
@@ -1 +1 @@
1
- {"version":3,"file":"PanSceneRoot.test.js","sourceRoot":"","sources":["../../../../src/SceneRoot/UC/PanSceneRoot.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { ParametricLine, Vector2, Vector3 } from \"@vived/core\";\r\nimport {\r\n PixelToSceneRayUC,\r\n ScenePixelPick,\r\n ScenePixelPickUC,\r\n} from \"../../Babylon\";\r\nimport { LogUC } from \"../../Dispatcher\";\r\nimport { MockDispatchStateChange } from \"../../Dispatcher/Mocks/MockDispatchStateChange\";\r\nimport { makeSceneRootEntity } from \"../Entities\";\r\nimport { makePanSceneRootUC, PanSceneRootUC } from \"./PanSceneRoot\";\r\n\r\nclass MockPick extends ScenePixelPickUC {\r\n scenePixelPick = jest.fn();\r\n}\r\n\r\nclass MockPixelToRay extends PixelToSceneRayUC {\r\n pixelToSceneRay = jest.fn();\r\n}\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const sceneRootAO = appObjects.getOrCreate(\"sceneRoot\");\r\n const sceneRoot = makeSceneRootEntity(sceneRootAO);\r\n\r\n const panUC = makePanSceneRootUC(sceneRootAO);\r\n\r\n const appAO = appObjects.getOrCreate(\"appAO\");\r\n const mockPick = new MockPick(appAO, ScenePixelPickUC.type);\r\n const mockDispatch = new MockDispatchStateChange(appAO);\r\n const mockPixelRay = new MockPixelToRay(appAO, PixelToSceneRayUC.type);\r\n\r\n return {\r\n panUC,\r\n sceneRoot,\r\n mockPick,\r\n mockDispatch,\r\n appObjects,\r\n mockPixelRay,\r\n };\r\n}\r\n\r\ndescribe(\"Pan Scene Root Use Case\", () => {\r\n it(\"Moves the transform\", () => {\r\n const { sceneRoot, panUC, mockPick, mockPixelRay } = makeTestRig();\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n mockPixelRay.pixelToSceneRay.mockReturnValue(\r\n ParametricLine.FromPointDirection(new Vector3(1, 2, 3), Vector3.Forward())\r\n );\r\n\r\n panUC.initializePan(Vector2.Zero());\r\n panUC.doPan(Vector2.Zero());\r\n\r\n expect(sceneRoot.position).toEqual(new Vector3(1, 2, 0));\r\n });\r\n\r\n it(\"Moves the transform relative to the initial position\", () => {\r\n const { sceneRoot, panUC, mockPick, mockPixelRay } = makeTestRig();\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n sceneRoot.position = new Vector3(10, 10, 10);\r\n\r\n mockPixelRay.pixelToSceneRay.mockReturnValue(\r\n ParametricLine.FromPointDirection(new Vector3(1, 2, 3), Vector3.Forward())\r\n );\r\n\r\n panUC.initializePan(Vector2.Zero());\r\n panUC.doPan(Vector2.Zero());\r\n\r\n expect(sceneRoot.position).toEqual(new Vector3(11, 12, 10));\r\n });\r\n\r\n it(\"Dispatches a state change if the position has changed since init\", () => {\r\n const { sceneRoot, panUC, mockDispatch, mockPick } = makeTestRig();\r\n\r\n sceneRoot.position = new Vector3(1, 2, 3);\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n panUC.initializePan(Vector2.Zero());\r\n\r\n sceneRoot.position = new Vector3(4, 5, 6);\r\n panUC.finishPan();\r\n\r\n expect(mockDispatch.doDispatch).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Does not dispatch a state change if the position has not changed\", () => {\r\n const { sceneRoot, panUC, mockDispatch } = makeTestRig();\r\n\r\n sceneRoot.position = new Vector3(1, 2, 3);\r\n\r\n panUC.initializePan(Vector2.Zero());\r\n panUC.finishPan();\r\n\r\n expect(mockDispatch.doDispatch).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Doen not move the transform after cancel\", () => {\r\n const { sceneRoot, panUC, mockPick, mockPixelRay } = makeTestRig();\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n mockPixelRay.pixelToSceneRay.mockReturnValue(\r\n ParametricLine.FromPointDirection(new Vector3(1, 2, 3), Vector3.Forward())\r\n );\r\n\r\n panUC.initializePan(Vector2.Zero());\r\n panUC.cancelPan();\r\n panUC.doPan(Vector2.Zero());\r\n\r\n expect(sceneRoot.position).toEqual(Vector3.Zero());\r\n });\r\n\r\n it(\"Gets the UC\", () => {\r\n const { panUC, appObjects } = makeTestRig();\r\n expect(PanSceneRootUC.get(appObjects)).toEqual(panUC);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"PanSceneRoot.test.js","sourceRoot":"","sources":["../../../../src/SceneRoot/UC/PanSceneRoot.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { ParametricLine, Vector2, Vector3 } from \"@vived/core\";\r\nimport {\r\n PixelToSceneRayUC,\r\n ScenePixelPick,\r\n ScenePixelPickUC,\r\n} from \"../../Babylon\";\r\nimport { LogUC } from \"../../Dispatcher\";\r\nimport { makeMockDispatchStateChange } from \"../../Dispatcher\";\r\nimport { makeSceneRootEntity } from \"../Entities\";\r\nimport { makePanSceneRootUC, PanSceneRootUC } from \"./PanSceneRoot\";\r\n\r\nclass MockPick extends ScenePixelPickUC {\r\n scenePixelPick = jest.fn();\r\n}\r\n\r\nclass MockPixelToRay extends PixelToSceneRayUC {\r\n pixelToSceneRay = jest.fn();\r\n}\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const sceneRootAO = appObjects.getOrCreate(\"sceneRoot\");\r\n const sceneRoot = makeSceneRootEntity(sceneRootAO);\r\n\r\n const panUC = makePanSceneRootUC(sceneRootAO);\r\n\r\n const appAO = appObjects.getOrCreate(\"appAO\");\r\n const mockPick = new MockPick(appAO, ScenePixelPickUC.type);\r\n const mockDispatch = makeMockDispatchStateChange(appObjects);\r\n const doDispatchMock = jest.fn();\r\n mockDispatch.doDispatch = doDispatchMock;\r\n const mockPixelRay = new MockPixelToRay(appAO, PixelToSceneRayUC.type);\r\n\r\n return {\r\n panUC,\r\n sceneRoot,\r\n mockPick,\r\n mockDispatch,\r\n doDispatchMock,\r\n appObjects,\r\n mockPixelRay,\r\n };\r\n}\r\n\r\ndescribe(\"Pan Scene Root Use Case\", () => {\r\n it(\"Moves the transform\", () => {\r\n const { sceneRoot, panUC, mockPick, mockPixelRay } = makeTestRig();\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n mockPixelRay.pixelToSceneRay.mockReturnValue(\r\n ParametricLine.FromPointDirection(new Vector3(1, 2, 3), Vector3.Forward())\r\n );\r\n\r\n panUC.initializePan(Vector2.Zero());\r\n panUC.doPan(Vector2.Zero());\r\n\r\n expect(sceneRoot.position).toEqual(new Vector3(1, 2, 0));\r\n });\r\n\r\n it(\"Moves the transform relative to the initial position\", () => {\r\n const { sceneRoot, panUC, mockPick, mockPixelRay } = makeTestRig();\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n sceneRoot.position = new Vector3(10, 10, 10);\r\n\r\n mockPixelRay.pixelToSceneRay.mockReturnValue(\r\n ParametricLine.FromPointDirection(new Vector3(1, 2, 3), Vector3.Forward())\r\n );\r\n\r\n panUC.initializePan(Vector2.Zero());\r\n panUC.doPan(Vector2.Zero());\r\n\r\n expect(sceneRoot.position).toEqual(new Vector3(11, 12, 10));\r\n });\r\n\r\n it(\"Dispatches a state change if the position has changed since init\", () => {\r\n const { sceneRoot, panUC, doDispatchMock, mockPick } = makeTestRig();\r\n\r\n sceneRoot.position = new Vector3(1, 2, 3);\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n panUC.initializePan(Vector2.Zero());\r\n\r\n sceneRoot.position = new Vector3(4, 5, 6);\r\n panUC.finishPan();\r\n\r\n expect(doDispatchMock).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Does not dispatch a state change if the position has not changed\", () => {\r\n const { sceneRoot, panUC, doDispatchMock } = makeTestRig();\r\n\r\n sceneRoot.position = new Vector3(1, 2, 3);\r\n\r\n panUC.initializePan(Vector2.Zero());\r\n panUC.finishPan();\r\n\r\n expect(doDispatchMock).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Doen not move the transform after cancel\", () => {\r\n const { sceneRoot, panUC, mockPick, mockPixelRay } = makeTestRig();\r\n const pick: ScenePixelPick = {\r\n hit: true,\r\n sceneRay: ParametricLine.Forward(),\r\n };\r\n mockPick.scenePixelPick.mockReturnValue(pick);\r\n\r\n mockPixelRay.pixelToSceneRay.mockReturnValue(\r\n ParametricLine.FromPointDirection(new Vector3(1, 2, 3), Vector3.Forward())\r\n );\r\n\r\n panUC.initializePan(Vector2.Zero());\r\n panUC.cancelPan();\r\n panUC.doPan(Vector2.Zero());\r\n\r\n expect(sceneRoot.position).toEqual(Vector3.Zero());\r\n });\r\n\r\n it(\"Gets the UC\", () => {\r\n const { panUC, appObjects } = makeTestRig();\r\n expect(PanSceneRootUC.get(appObjects)).toEqual(panUC);\r\n });\r\n});\r\n"]}