@vived/app 5.0.6 → 5.0.8

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/UC/CreateCalloutUndoRedo.test.js +7 -4
  12. package/dist/cjs/Callouts/UC/CreateCalloutUndoRedo.test.js.map +1 -1
  13. package/dist/cjs/Callouts/UC/DeleteAllCalloutsUC.test.js +7 -4
  14. package/dist/cjs/Callouts/UC/DeleteAllCalloutsUC.test.js.map +1 -1
  15. package/dist/cjs/Callouts/UC/DeleteAllCalloutsUndoRedo.test.js +13 -7
  16. package/dist/cjs/Callouts/UC/DeleteAllCalloutsUndoRedo.test.js.map +1 -1
  17. package/dist/cjs/Callouts/UC/DeleteCallout.test.js +5 -2
  18. package/dist/cjs/Callouts/UC/DeleteCallout.test.js.map +1 -1
  19. package/dist/cjs/Callouts/UC/DeleteCalloutUndoRedo.test.js +9 -7
  20. package/dist/cjs/Callouts/UC/DeleteCalloutUndoRedo.test.js.map +1 -1
  21. package/dist/cjs/Callouts/UC/SetCalloutSizeUC.test.js +7 -5
  22. package/dist/cjs/Callouts/UC/SetCalloutSizeUC.test.js.map +1 -1
  23. package/dist/cjs/Callouts/UC/SetCalloutSizeUndoRedo.test.js +10 -6
  24. package/dist/cjs/Callouts/UC/SetCalloutSizeUndoRedo.test.js.map +1 -1
  25. package/dist/cjs/Callouts/UC/TryAddCallout.test.js +5 -4
  26. package/dist/cjs/Callouts/UC/TryAddCallout.test.js.map +1 -1
  27. package/dist/cjs/Callouts/UC/TryPanLabelUC.test.js +3 -2
  28. package/dist/cjs/Callouts/UC/TryPanLabelUC.test.js.map +1 -1
  29. package/dist/cjs/Challenge/UCs/SetChallengeUC.test.js +11 -9
  30. package/dist/cjs/Challenge/UCs/SetChallengeUC.test.js.map +1 -1
  31. package/dist/cjs/ChannelModel/UC/ClearAllColorOverlayUndoRedo.test.js +13 -7
  32. package/dist/cjs/ChannelModel/UC/ClearAllColorOverlayUndoRedo.test.js.map +1 -1
  33. package/dist/cjs/ChannelModel/UC/ClearModelObjectOverlaysUC.test.js +7 -4
  34. package/dist/cjs/ChannelModel/UC/ClearModelObjectOverlaysUC.test.js.map +1 -1
  35. package/dist/cjs/ChannelModel/UC/SelectChannelModelUC.test.js +5 -2
  36. package/dist/cjs/ChannelModel/UC/SelectChannelModelUC.test.js.map +1 -1
  37. package/dist/cjs/ChannelModel/UC/StickAllChannelModelObjectsUC.test.js +10 -8
  38. package/dist/cjs/ChannelModel/UC/StickAllChannelModelObjectsUC.test.js.map +1 -1
  39. package/dist/cjs/ChannelModel/UC/UnhideAllAppObjectsUndoRedo.test.js +9 -7
  40. package/dist/cjs/ChannelModel/UC/UnhideAllAppObjectsUndoRedo.test.js.map +1 -1
  41. package/dist/cjs/ChannelModel/UC/UnhideAllChannelModelObjectsUC.test.js +7 -5
  42. package/dist/cjs/ChannelModel/UC/UnhideAllChannelModelObjectsUC.test.js.map +1 -1
  43. package/dist/cjs/Dispatcher/Mocks/MockDispatchStateChange.js +3 -3
  44. package/dist/cjs/Dispatcher/Mocks/MockDispatchStateChange.js.map +1 -1
  45. package/dist/cjs/Environment/UCs/SetEnvironmentIntensityUC.test.js +11 -9
  46. package/dist/cjs/Environment/UCs/SetEnvironmentIntensityUC.test.js.map +1 -1
  47. package/dist/cjs/Environment/UCs/SetTexturalEnvironmentUC.test.js +9 -7
  48. package/dist/cjs/Environment/UCs/SetTexturalEnvironmentUC.test.js.map +1 -1
  49. package/dist/cjs/Hideable/UCs/HideUC.test.js +10 -8
  50. package/dist/cjs/Hideable/UCs/HideUC.test.js.map +1 -1
  51. package/dist/cjs/Hideable/UCs/TryHideWithPickUC.test.js +7 -6
  52. package/dist/cjs/Hideable/UCs/TryHideWithPickUC.test.js.map +1 -1
  53. package/dist/cjs/HoverLabel/UseCases/TryShowHoverLabel.test.js +12 -11
  54. package/dist/cjs/HoverLabel/UseCases/TryShowHoverLabel.test.js.map +1 -1
  55. package/dist/cjs/Label/UC/ClearCustomLabelUC.test.js +9 -4
  56. package/dist/cjs/Label/UC/ClearCustomLabelUC.test.js.map +1 -1
  57. package/dist/cjs/Label/UC/ClearCustomLabelUndoRedo.test.js +10 -6
  58. package/dist/cjs/Label/UC/ClearCustomLabelUndoRedo.test.js.map +1 -1
  59. package/dist/cjs/Label/UC/SetCustomLabelUC.test.js +9 -4
  60. package/dist/cjs/Label/UC/SetCustomLabelUC.test.js.map +1 -1
  61. package/dist/cjs/Label/UC/SetCustomLabelUndoRedo.test.js +10 -6
  62. package/dist/cjs/Label/UC/SetCustomLabelUndoRedo.test.js.map +1 -1
  63. package/dist/cjs/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.js +2 -1
  64. package/dist/cjs/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.js.map +1 -1
  65. package/dist/cjs/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.test.js +2 -1
  66. package/dist/cjs/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.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/UC/CreateCalloutUndoRedo.test.js +7 -4
  192. package/dist/esm/Callouts/UC/CreateCalloutUndoRedo.test.js.map +1 -1
  193. package/dist/esm/Callouts/UC/DeleteAllCalloutsUC.test.js +7 -4
  194. package/dist/esm/Callouts/UC/DeleteAllCalloutsUC.test.js.map +1 -1
  195. package/dist/esm/Callouts/UC/DeleteAllCalloutsUndoRedo.test.js +13 -7
  196. package/dist/esm/Callouts/UC/DeleteAllCalloutsUndoRedo.test.js.map +1 -1
  197. package/dist/esm/Callouts/UC/DeleteCallout.test.js +5 -2
  198. package/dist/esm/Callouts/UC/DeleteCallout.test.js.map +1 -1
  199. package/dist/esm/Callouts/UC/DeleteCalloutUndoRedo.test.js +9 -7
  200. package/dist/esm/Callouts/UC/DeleteCalloutUndoRedo.test.js.map +1 -1
  201. package/dist/esm/Callouts/UC/SetCalloutSizeUC.test.js +7 -5
  202. package/dist/esm/Callouts/UC/SetCalloutSizeUC.test.js.map +1 -1
  203. package/dist/esm/Callouts/UC/SetCalloutSizeUndoRedo.test.js +10 -6
  204. package/dist/esm/Callouts/UC/SetCalloutSizeUndoRedo.test.js.map +1 -1
  205. package/dist/esm/Callouts/UC/TryAddCallout.test.js +5 -4
  206. package/dist/esm/Callouts/UC/TryAddCallout.test.js.map +1 -1
  207. package/dist/esm/Callouts/UC/TryPanLabelUC.test.js +3 -2
  208. package/dist/esm/Callouts/UC/TryPanLabelUC.test.js.map +1 -1
  209. package/dist/esm/Challenge/UCs/SetChallengeUC.test.js +11 -9
  210. package/dist/esm/Challenge/UCs/SetChallengeUC.test.js.map +1 -1
  211. package/dist/esm/ChannelModel/UC/ClearAllColorOverlayUndoRedo.test.js +13 -7
  212. package/dist/esm/ChannelModel/UC/ClearAllColorOverlayUndoRedo.test.js.map +1 -1
  213. package/dist/esm/ChannelModel/UC/ClearModelObjectOverlaysUC.test.js +7 -4
  214. package/dist/esm/ChannelModel/UC/ClearModelObjectOverlaysUC.test.js.map +1 -1
  215. package/dist/esm/ChannelModel/UC/SelectChannelModelUC.test.js +5 -2
  216. package/dist/esm/ChannelModel/UC/SelectChannelModelUC.test.js.map +1 -1
  217. package/dist/esm/ChannelModel/UC/StickAllChannelModelObjectsUC.test.js +10 -8
  218. package/dist/esm/ChannelModel/UC/StickAllChannelModelObjectsUC.test.js.map +1 -1
  219. package/dist/esm/ChannelModel/UC/UnhideAllAppObjectsUndoRedo.test.js +9 -7
  220. package/dist/esm/ChannelModel/UC/UnhideAllAppObjectsUndoRedo.test.js.map +1 -1
  221. package/dist/esm/ChannelModel/UC/UnhideAllChannelModelObjectsUC.test.js +7 -5
  222. package/dist/esm/ChannelModel/UC/UnhideAllChannelModelObjectsUC.test.js.map +1 -1
  223. package/dist/esm/Dispatcher/Mocks/MockDispatchStateChange.js +3 -3
  224. package/dist/esm/Dispatcher/Mocks/MockDispatchStateChange.js.map +1 -1
  225. package/dist/esm/Environment/UCs/SetEnvironmentIntensityUC.test.js +11 -9
  226. package/dist/esm/Environment/UCs/SetEnvironmentIntensityUC.test.js.map +1 -1
  227. package/dist/esm/Environment/UCs/SetTexturalEnvironmentUC.test.js +9 -7
  228. package/dist/esm/Environment/UCs/SetTexturalEnvironmentUC.test.js.map +1 -1
  229. package/dist/esm/Hideable/UCs/HideUC.test.js +10 -8
  230. package/dist/esm/Hideable/UCs/HideUC.test.js.map +1 -1
  231. package/dist/esm/Hideable/UCs/TryHideWithPickUC.test.js +7 -6
  232. package/dist/esm/Hideable/UCs/TryHideWithPickUC.test.js.map +1 -1
  233. package/dist/esm/HoverLabel/UseCases/TryShowHoverLabel.test.js +12 -11
  234. package/dist/esm/HoverLabel/UseCases/TryShowHoverLabel.test.js.map +1 -1
  235. package/dist/esm/Label/UC/ClearCustomLabelUC.test.js +9 -4
  236. package/dist/esm/Label/UC/ClearCustomLabelUC.test.js.map +1 -1
  237. package/dist/esm/Label/UC/ClearCustomLabelUndoRedo.test.js +10 -6
  238. package/dist/esm/Label/UC/ClearCustomLabelUndoRedo.test.js.map +1 -1
  239. package/dist/esm/Label/UC/SetCustomLabelUC.test.js +9 -4
  240. package/dist/esm/Label/UC/SetCustomLabelUC.test.js.map +1 -1
  241. package/dist/esm/Label/UC/SetCustomLabelUndoRedo.test.js +10 -6
  242. package/dist/esm/Label/UC/SetCustomLabelUndoRedo.test.js.map +1 -1
  243. package/dist/esm/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.js +2 -1
  244. package/dist/esm/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.js.map +1 -1
  245. package/dist/esm/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.test.js +2 -1
  246. package/dist/esm/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.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/Dispatcher/Mocks/MockDispatchStateChange.d.ts +3 -3
  364. package/dist/types/Dispatcher/Mocks/MockDispatchStateChange.d.ts.map +1 -1
  365. package/dist/types/LabelDrop/Controller/releaseLabelDropAnswerItemScreen.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
@@ -24,12 +24,12 @@ function makeTestRig() {
24
24
  const labelDrop = makeLabelDropRepo(labelDropAO);
25
25
  const changeObserver = jest.fn();
26
26
  labelDrop.addChangeObserver(changeObserver);
27
- const mockPick = makeMockSceneRayPickUC(appObjects);
28
- const mockPickResult = {
27
+ const mockRayPick = makeMockSceneRayPickUC(appObjects);
28
+ const mockPick = jest.fn().mockReturnValue({
29
29
  hit: true,
30
30
  worldPickPoint: new Vector3(1, 2, 3),
31
- };
32
- mockPick.sceneRayPick.mockReturnValue(mockPickResult);
31
+ });
32
+ mockRayPick.sceneRayPick = mockPick;
33
33
  const mockStylusTransform = makeTransform3D(appObjects.getOrCreate("stylus"));
34
34
  labelDrop.dragHelperTransform.parent = mockStylusTransform;
35
35
  mockStylusTransform.worldPosition = new Vector3(1, 2, 0);
@@ -97,7 +97,7 @@ describe("Drag Label Drop UC", () => {
97
97
  hit: true,
98
98
  worldPickPoint: new Vector3(10, 20, 0),
99
99
  };
100
- mockPick.sceneRayPick.mockReturnValue(mockPickResult);
100
+ mockPick.mockReturnValue(mockPickResult);
101
101
  uc.updateDrag(ParametricLine.Forward());
102
102
  const expectedDepth = 30 * (1 - uc.percentOfPickDepth);
103
103
  const expectedPos = new Vector3(10, 20, expectedDepth);
@@ -109,7 +109,7 @@ describe("Drag Label Drop UC", () => {
109
109
  const mockPickResult = {
110
110
  hit: false,
111
111
  };
112
- mockPick.sceneRayPick.mockReturnValue(mockPickResult);
112
+ mockPick.mockReturnValue(mockPickResult);
113
113
  uc.updateDrag(ParametricLine.Forward());
114
114
  const expectedPos = new Vector3(1, 2, 0);
115
115
  expect(Vector3.Close(labelDrop.dragLabelTransform.worldPosition, expectedPos)).toEqual(true);
@@ -126,7 +126,7 @@ describe("Drag Label Drop UC", () => {
126
126
  it("Does not set the 3D position if it did not initialize", () => {
127
127
  const { uc, labelDrop, mockPick } = makeTestRig();
128
128
  labelDrop.dragLabelTransform.worldPosition = Vector3.Zero();
129
- mockPick.sceneRayPick.mockReturnValue({
129
+ mockPick.mockReturnValue({
130
130
  worldPickPoint: new Vector3(1, 2, 3),
131
131
  hit: true,
132
132
  normal: new Vector3(4, 5, 6),
@@ -144,7 +144,7 @@ describe("Drag Label Drop UC", () => {
144
144
  worldPickPoint: new Vector3(1, 2, 3),
145
145
  appObjectID: "appObj1",
146
146
  };
147
- mockPick.sceneRayPick.mockReturnValue(mockPickResult);
147
+ mockPick.mockReturnValue(mockPickResult);
148
148
  uc.initializeDrag("labelDrop1", ParametricLine.Forward());
149
149
  labelDrop.submitLabelDrop = jest.fn();
150
150
  uc.releaseDrag(ParametricLine.Forward());
@@ -157,7 +157,7 @@ describe("Drag Label Drop UC", () => {
157
157
  worldPickPoint: new Vector3(1, 2, 3),
158
158
  appObjectID: "appObj1",
159
159
  };
160
- mockPick.sceneRayPick.mockReturnValue(mockPickResult);
160
+ mockPick.mockReturnValue(mockPickResult);
161
161
  labelDrop.submitLabelDrop = jest.fn();
162
162
  uc.initializeDrag("labelDrop1", ParametricLine.Forward());
163
163
  uc.releaseDrag(ParametricLine.Forward());
@@ -170,7 +170,7 @@ describe("Drag Label Drop UC", () => {
170
170
  const mockPickResult = {
171
171
  hit: false,
172
172
  };
173
- mockPick.sceneRayPick.mockReturnValue(mockPickResult);
173
+ mockPick.mockReturnValue(mockPickResult);
174
174
  uc.releaseDrag(ParametricLine.Forward());
175
175
  expect(labelDrop.submitLabelDrop).not.toHaveBeenCalled();
176
176
  });
@@ -180,7 +180,7 @@ describe("Drag Label Drop UC", () => {
180
180
  const mockPickResult = {
181
181
  hit: false,
182
182
  };
183
- mockPick.sceneRayPick.mockReturnValue(mockPickResult);
183
+ mockPick.mockReturnValue(mockPickResult);
184
184
  uc.releaseDrag(ParametricLine.Forward());
185
185
  expect(mockDropAnimation.start).toHaveBeenCalled();
186
186
  });
@@ -191,7 +191,7 @@ describe("Drag Label Drop UC", () => {
191
191
  const mockPickResult = {
192
192
  hit: false,
193
193
  };
194
- mockPick.sceneRayPick.mockReturnValue(mockPickResult);
194
+ mockPick.mockReturnValue(mockPickResult);
195
195
  uc.releaseDrag(ParametricLine.Forward());
196
196
  expect(mockDropAnimation.desiredFinalPosition).toEqual(new Vector3(1, 2, 3));
197
197
  });
@@ -203,7 +203,7 @@ describe("Drag Label Drop UC", () => {
203
203
  worldPickPoint: new Vector3(1, 2, 3),
204
204
  appObjectID: "appObj",
205
205
  };
206
- mockPick.sceneRayPick.mockReturnValue(mockPickResult);
206
+ mockPick.mockReturnValue(mockPickResult);
207
207
  labelDrop.submitLabelDrop = jest.fn().mockReturnValue(false);
208
208
  uc.releaseDrag(ParametricLine.Forward());
209
209
  expect(mockIncorrectAnimation.start).toHaveBeenCalled();
@@ -217,7 +217,7 @@ describe("Drag Label Drop UC", () => {
217
217
  worldPickPoint: new Vector3(1, 2, 3),
218
218
  appObjectID: "appObj",
219
219
  };
220
- mockPick.sceneRayPick.mockReturnValue(mockPickResult);
220
+ mockPick.mockReturnValue(mockPickResult);
221
221
  labelDrop.submitLabelDrop = jest.fn().mockReturnValue(false);
222
222
  uc.releaseDrag(ParametricLine.Forward());
223
223
  expect(mockIncorrectAnimation.desiredFinalPosition).toEqual(new Vector3(1, 2, 3));
@@ -230,14 +230,14 @@ describe("Drag Label Drop UC", () => {
230
230
  worldPickPoint: new Vector3(1, 2, 3),
231
231
  appObjectID: "appObj",
232
232
  };
233
- mockPick.sceneRayPick.mockReturnValue(mockPickResult);
233
+ mockPick.mockReturnValue(mockPickResult);
234
234
  labelDrop.submitLabelDrop = jest.fn().mockReturnValue(true);
235
235
  uc.releaseDrag(ParametricLine.Forward());
236
236
  expect(mockCorrectAnimation.start).toHaveBeenCalled();
237
237
  });
238
238
  it("Does not submit if no object hit on release", () => {
239
239
  const { uc, labelDrop, mockPick } = makeTestRig();
240
- mockPick.sceneRayPick.mockReturnValue({
240
+ mockPick.mockReturnValue({
241
241
  worldPickPoint: new Vector3(1, 2, 3),
242
242
  hit: false,
243
243
  normal: new Vector3(4, 5, 6),
@@ -271,7 +271,7 @@ describe("Drag Label Drop UC", () => {
271
271
  worldPickPoint: new Vector3(1, 2, 3),
272
272
  appObjectID: "appObj",
273
273
  };
274
- mockPick.sceneRayPick.mockReturnValue(mockPickResult);
274
+ mockPick.mockReturnValue(mockPickResult);
275
275
  labelDrop.getRemainingLabelDrops = jest.fn().mockReturnValue([]);
276
276
  labelDrop.submitLabelDrop = jest.fn().mockReturnValue(true);
277
277
  uc.initializeDrag("labelDrop1", ParametricLine.Forward());
@@ -1 +1 @@
1
- {"version":3,"file":"DragLabelDropWorldUC.test.js","sourceRoot":"","sources":["../../../../src/LabelDrop/UseCases/DragLabelDropWorldUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { Angle, ParametricLine, Quaternion, Vector3 } from \"@vived/core\";\r\nimport { makeMockSceneRayPickUC } from \"../../Babylon/Mocks/MockSceneRayPickUC\";\r\nimport { SceneRayPick } from \"../../Babylon/UC/SceneRayPickUC\";\r\nimport { makeBaseAppState } from \"../../BaseApp/Entity/BaseAppState\";\r\nimport { makeChallengeEntityMock } from \"../../Challenge/Mocks/ChallengeEntityMock\";\r\nimport { makeTransform3D } from \"../../Transform3D/Entities/Transform3D\";\r\nimport {\r\n LabelDropDragMode,\r\n makeLabelDropRepo,\r\n} from \"../Entities/LabelDropRepo\";\r\nimport { makeMockLabelDropCorrectAnimationUC } from \"../Mocks/MockCorrectAnimation\";\r\nimport { makeMockDropAnimation } from \"../Mocks/MockDropAnimation\";\r\nimport { makeMockLabelDropIncorrectAnimationUC } from \"../Mocks/MockIncorrectAnimation\";\r\nimport { makeDragLabelDropWorldUC } from \"./DragLabelDropWorldUC\";\r\n\r\n// Default setup\r\n// Hit is 1,2,3 (world)\r\n// Stylus is 1,2,0 (world)\r\n// Local hit is 0,0,3 (stylus)\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n\r\n const challenge = makeChallengeEntityMock(appObjects);\r\n const baseApp = makeBaseAppState(appObjects.getOrCreate(\"BaseApp\"));\r\n\r\n const labelDropAO = appObjects.getOrCreate(\"labelDrop\");\r\n\r\n const mockDropAnimation = makeMockDropAnimation(appObjects);\r\n const mockCorrectAnimation = makeMockLabelDropCorrectAnimationUC(appObjects);\r\n const mockIncorrectAnimation =\r\n makeMockLabelDropIncorrectAnimationUC(appObjects);\r\n\r\n const labelDrop = makeLabelDropRepo(labelDropAO);\r\n const changeObserver = jest.fn();\r\n labelDrop.addChangeObserver(changeObserver);\r\n\r\n const mockPick = makeMockSceneRayPickUC(appObjects);\r\n const mockPickResult: SceneRayPick = {\r\n hit: true,\r\n worldPickPoint: new Vector3(1, 2, 3),\r\n };\r\n mockPick.sceneRayPick.mockReturnValue(mockPickResult);\r\n\r\n const mockStylusTransform = makeTransform3D(appObjects.getOrCreate(\"stylus\"));\r\n labelDrop.dragHelperTransform.parent = mockStylusTransform;\r\n mockStylusTransform.worldPosition = new Vector3(1, 2, 0);\r\n\r\n const uc = makeDragLabelDropWorldUC(labelDropAO);\r\n\r\n challenge.selectedChallenge = \"LABEL_DROP\";\r\n baseApp.isAuthoring = false;\r\n\r\n return {\r\n appObjects,\r\n labelDrop,\r\n uc,\r\n changeObserver,\r\n baseApp,\r\n challenge,\r\n mockPick,\r\n mockStylusTransform,\r\n mockDropAnimation,\r\n mockCorrectAnimation,\r\n mockIncorrectAnimation,\r\n };\r\n}\r\n\r\ndescribe(\"Drag Label Drop UC\", () => {\r\n it(\"initializes id on press, mode and alpha\", () => {\r\n const { uc, labelDrop } = makeTestRig();\r\n expect(labelDrop.draggingID).toBeUndefined();\r\n\r\n uc.initializeDrag(\"id1\", ParametricLine.Forward());\r\n expect(labelDrop.draggingID).toEqual(\"id1\");\r\n expect(labelDrop.dragMode).toEqual(LabelDropDragMode.WORLD);\r\n expect(labelDrop.dragAlpha).toEqual(1);\r\n });\r\n\r\n it(\"Sets the world position of the label\", () => {\r\n const { uc, labelDrop } = makeTestRig();\r\n\r\n uc.initializeDrag(\"id1\", ParametricLine.Forward());\r\n\r\n const expectPos = new Vector3(1, 2, 3 * uc.percentOfPickDepth);\r\n\r\n expect(labelDrop.dragLabelTransform.worldPosition).toEqual(expectPos);\r\n });\r\n\r\n it(\"Sets the world rotation of the label\", () => {\r\n const { uc, labelDrop, mockStylusTransform } = makeTestRig();\r\n\r\n const rot = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(10),\r\n Angle.FromDegrees(20),\r\n Angle.FromDegrees(30)\r\n );\r\n mockStylusTransform.worldRotation = rot;\r\n\r\n uc.initializeDrag(\"id1\", ParametricLine.Forward());\r\n\r\n expect(\r\n Quaternion.Close(labelDrop.dragLabelTransform.worldRotation, rot)\r\n ).toEqual(true);\r\n });\r\n\r\n it(\"Does not initialize if challenge is not label drop\", () => {\r\n const { uc, labelDrop, challenge } = makeTestRig();\r\n challenge.selectedChallenge = \"NONE\";\r\n\r\n uc.initializeDrag(\"id1\", ParametricLine.Forward());\r\n expect(labelDrop.draggingID).toBeUndefined();\r\n });\r\n\r\n it(\"Does not initialize if authoring\", () => {\r\n const { uc, labelDrop, baseApp } = makeTestRig();\r\n baseApp.isAuthoring = true;\r\n\r\n uc.initializeDrag(\"id1\", ParametricLine.Forward());\r\n expect(labelDrop.draggingID).toBeUndefined();\r\n });\r\n\r\n it(\"Updates the position on drag\", () => {\r\n const { uc, labelDrop, mockPick, mockStylusTransform } = makeTestRig();\r\n\r\n uc.initializeDrag(\"id\", ParametricLine.Forward());\r\n\r\n // Move stylus to 10,20,30 (world)\r\n // Set pick to 10,20,0 (world)\r\n // Local pick is 0,0, 30 (local stylus)\r\n // Reduced is 0,0, 28.5 (assume 95%)\r\n // Reduced is 10,20,1.5 (world)\r\n\r\n mockStylusTransform.worldPosition = new Vector3(10, 20, 30);\r\n const mockPickResult: SceneRayPick = {\r\n hit: true,\r\n worldPickPoint: new Vector3(10, 20, 0),\r\n };\r\n mockPick.sceneRayPick.mockReturnValue(mockPickResult);\r\n\r\n uc.updateDrag(ParametricLine.Forward());\r\n\r\n const expectedDepth = 30 * (1 - uc.percentOfPickDepth);\r\n const expectedPos = new Vector3(10, 20, expectedDepth);\r\n\r\n expect(\r\n Vector3.Close(labelDrop.dragLabelTransform.worldPosition, expectedPos)\r\n ).toEqual(true);\r\n });\r\n\r\n it(\"Sets the position at zero parallax if there is no intersection\", () => {\r\n const { uc, labelDrop, mockPick } = makeTestRig();\r\n\r\n uc.initializeDrag(\"id\", ParametricLine.Forward());\r\n\r\n const mockPickResult: SceneRayPick = {\r\n hit: false,\r\n };\r\n mockPick.sceneRayPick.mockReturnValue(mockPickResult);\r\n\r\n uc.updateDrag(ParametricLine.Forward());\r\n\r\n const expectedPos = new Vector3(1, 2, 0);\r\n\r\n expect(\r\n Vector3.Close(labelDrop.dragLabelTransform.worldPosition, expectedPos)\r\n ).toEqual(true);\r\n });\r\n\r\n it(\"Updates the rotation on drag\", () => {\r\n const { uc, labelDrop, mockStylusTransform } = makeTestRig();\r\n\r\n uc.initializeDrag(\"id\", ParametricLine.Forward());\r\n\r\n expect(\r\n Quaternion.Close(\r\n labelDrop.dragLabelTransform.worldRotation,\r\n Quaternion.Identity()\r\n )\r\n ).toEqual(true);\r\n\r\n const rot = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(10),\r\n Angle.FromDegrees(20),\r\n Angle.FromDegrees(30)\r\n );\r\n mockStylusTransform.worldRotation = rot;\r\n\r\n uc.updateDrag(ParametricLine.Forward());\r\n\r\n expect(\r\n Quaternion.Close(labelDrop.dragLabelTransform.worldRotation, rot)\r\n ).toEqual(true);\r\n });\r\n\r\n it(\"Does not set the 3D position if it did not initialize\", () => {\r\n const { uc, labelDrop, mockPick } = makeTestRig();\r\n labelDrop.dragLabelTransform.worldPosition = Vector3.Zero();\r\n\r\n mockPick.sceneRayPick.mockReturnValue({\r\n worldPickPoint: new Vector3(1, 2, 3),\r\n hit: true,\r\n normal: new Vector3(4, 5, 6),\r\n objectPickMeta: {\r\n appObjectID: \"appObj1\",\r\n },\r\n });\r\n\r\n uc.updateDrag(ParametricLine.Forward());\r\n expect(labelDrop.dragLabelTransform.worldPosition).toEqual(Vector3.Zero());\r\n });\r\n\r\n it(\"Submits the object hit when released\", () => {\r\n const { uc, labelDrop, mockPick } = makeTestRig();\r\n\r\n const mockPickResult: SceneRayPick = {\r\n hit: true,\r\n worldPickPoint: new Vector3(1, 2, 3),\r\n appObjectID: \"appObj1\",\r\n };\r\n mockPick.sceneRayPick.mockReturnValue(mockPickResult);\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n labelDrop.submitLabelDrop = jest.fn();\r\n uc.releaseDrag(ParametricLine.Forward());\r\n\r\n expect(labelDrop.submitLabelDrop).toHaveBeenCalledWith(\r\n \"labelDrop1\",\r\n \"appObj1\"\r\n );\r\n });\r\n\r\n it(\"submits a label drop answer if an app object is hit\", () => {\r\n const { uc, labelDrop, mockPick } = makeTestRig();\r\n\r\n const mockPickResult: SceneRayPick = {\r\n hit: true,\r\n worldPickPoint: new Vector3(1, 2, 3),\r\n appObjectID: \"appObj1\",\r\n };\r\n mockPick.sceneRayPick.mockReturnValue(mockPickResult);\r\n\r\n labelDrop.submitLabelDrop = jest.fn();\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n\r\n uc.releaseDrag(ParametricLine.Forward());\r\n\r\n expect(labelDrop.submitLabelDrop).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Does not submit a label drop answer if an app object is not hit\", async () => {\r\n const { uc, labelDrop, mockPick } = makeTestRig();\r\n\r\n labelDrop.submitLabelDrop = jest.fn();\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n\r\n const mockPickResult: SceneRayPick = {\r\n hit: false,\r\n };\r\n mockPick.sceneRayPick.mockReturnValue(mockPickResult);\r\n\r\n uc.releaseDrag(ParametricLine.Forward());\r\n\r\n expect(labelDrop.submitLabelDrop).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Kicks off the drop animation\", () => {\r\n const { uc, mockPick, mockDropAnimation } = makeTestRig();\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n\r\n const mockPickResult: SceneRayPick = {\r\n hit: false,\r\n };\r\n mockPick.sceneRayPick.mockReturnValue(mockPickResult);\r\n\r\n uc.releaseDrag(ParametricLine.Forward());\r\n\r\n expect(mockDropAnimation.start).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Sets the desired position for the drop animation\", () => {\r\n const { uc, mockPick, mockDropAnimation } = makeTestRig();\r\n\r\n expect(mockDropAnimation.desiredFinalPosition).toEqual(Vector3.Zero());\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n\r\n const mockPickResult: SceneRayPick = {\r\n hit: false,\r\n };\r\n mockPick.sceneRayPick.mockReturnValue(mockPickResult);\r\n\r\n uc.releaseDrag(ParametricLine.Forward());\r\n\r\n expect(mockDropAnimation.desiredFinalPosition).toEqual(\r\n new Vector3(1, 2, 3)\r\n );\r\n });\r\n\r\n it(\"Kicks off the incorrect animation\", () => {\r\n const { uc, mockPick, mockIncorrectAnimation, labelDrop } = makeTestRig();\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n\r\n const mockPickResult: SceneRayPick = {\r\n hit: true,\r\n worldPickPoint: new Vector3(1, 2, 3),\r\n appObjectID: \"appObj\",\r\n };\r\n mockPick.sceneRayPick.mockReturnValue(mockPickResult);\r\n\r\n labelDrop.submitLabelDrop = jest.fn().mockReturnValue(false);\r\n\r\n uc.releaseDrag(ParametricLine.Forward());\r\n\r\n expect(mockIncorrectAnimation.start).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Sets the desired position for the incorrect animation\", () => {\r\n const { uc, mockPick, mockIncorrectAnimation, labelDrop } = makeTestRig();\r\n\r\n expect(mockIncorrectAnimation.desiredFinalPosition).toEqual(Vector3.Zero());\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n\r\n const mockPickResult: SceneRayPick = {\r\n hit: true,\r\n worldPickPoint: new Vector3(1, 2, 3),\r\n appObjectID: \"appObj\",\r\n };\r\n mockPick.sceneRayPick.mockReturnValue(mockPickResult);\r\n\r\n labelDrop.submitLabelDrop = jest.fn().mockReturnValue(false);\r\n\r\n uc.releaseDrag(ParametricLine.Forward());\r\n\r\n expect(mockIncorrectAnimation.desiredFinalPosition).toEqual(\r\n new Vector3(1, 2, 3)\r\n );\r\n });\r\n\r\n it(\"Kicks off the correct animation\", () => {\r\n const { uc, mockPick, mockCorrectAnimation, labelDrop } = makeTestRig();\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n\r\n const mockPickResult: SceneRayPick = {\r\n hit: true,\r\n worldPickPoint: new Vector3(1, 2, 3),\r\n appObjectID: \"appObj\",\r\n };\r\n mockPick.sceneRayPick.mockReturnValue(mockPickResult);\r\n\r\n labelDrop.submitLabelDrop = jest.fn().mockReturnValue(true);\r\n\r\n uc.releaseDrag(ParametricLine.Forward());\r\n\r\n expect(mockCorrectAnimation.start).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Does not submit if no object hit on release\", () => {\r\n const { uc, labelDrop, mockPick } = makeTestRig();\r\n\r\n mockPick.sceneRayPick.mockReturnValue({\r\n worldPickPoint: new Vector3(1, 2, 3),\r\n hit: false,\r\n normal: new Vector3(4, 5, 6),\r\n objectPickMeta: {},\r\n });\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n labelDrop.submitLabelDrop = jest.fn();\r\n uc.releaseDrag(ParametricLine.Forward());\r\n\r\n expect(labelDrop.submitLabelDrop).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Resets dragging ID after the animation ends\", async () => {\r\n const { uc, labelDrop } = makeTestRig();\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n\r\n expect(labelDrop.draggingID).toEqual(\"labelDrop1\");\r\n\r\n await uc.releaseDrag(ParametricLine.Forward());\r\n\r\n expect(labelDrop.draggingID).toBeUndefined();\r\n });\r\n\r\n it(\"Resets the result after the animation ends\", async () => {\r\n const { uc, labelDrop } = makeTestRig();\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n\r\n expect(labelDrop.draggingID).toEqual(\"labelDrop1\");\r\n\r\n const spy = jest.spyOn(labelDrop, \"resultIsCorrect\", \"set\");\r\n await uc.releaseDrag(ParametricLine.Forward());\r\n\r\n expect(spy).toHaveBeenCalledWith(undefined);\r\n });\r\n\r\n it(\"Sets mode to review if correct if there are no more labels after the animation has completed\", async () => {\r\n const { uc, labelDrop, baseApp, mockPick } = makeTestRig();\r\n\r\n expect(baseApp.isReviewing).toEqual(false);\r\n\r\n const mockPickResult: SceneRayPick = {\r\n hit: true,\r\n worldPickPoint: new Vector3(1, 2, 3),\r\n appObjectID: \"appObj\",\r\n };\r\n mockPick.sceneRayPick.mockReturnValue(mockPickResult);\r\n\r\n labelDrop.getRemainingLabelDrops = jest.fn().mockReturnValue([]);\r\n labelDrop.submitLabelDrop = jest.fn().mockReturnValue(true);\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n await uc.releaseDrag(ParametricLine.Forward());\r\n\r\n expect(baseApp.isReviewing).toEqual(true);\r\n });\r\n\r\n it(\"Does not set the mode to review if there are more labels\", () => {\r\n const { uc, labelDrop, baseApp } = makeTestRig();\r\n\r\n expect(baseApp.isReviewing).toEqual(false);\r\n\r\n labelDrop.getRemainingLabelDrops = jest\r\n .fn()\r\n .mockReturnValue([\"anbotherLabel\"]);\r\n labelDrop.submitLabelDrop = jest.fn().mockReturnValue(true);\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n uc.releaseDrag(ParametricLine.Forward());\r\n\r\n expect(baseApp.isReviewing).toEqual(false);\r\n });\r\n\r\n it(\"Cancels any running animations on initialization\", () => {\r\n const { uc, labelDrop, mockDropAnimation } = makeTestRig();\r\n\r\n labelDrop.getRemainingLabelDrops = jest.fn().mockReturnValue([]);\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n uc.releaseDrag(ParametricLine.Forward());\r\n expect(mockDropAnimation.start).toHaveBeenCalled();\r\n\r\n uc.initializeDrag(\"labelDrop2\", ParametricLine.Forward());\r\n\r\n expect(mockDropAnimation.cancel).toHaveBeenCalled();\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"DragLabelDropWorldUC.test.js","sourceRoot":"","sources":["../../../../src/LabelDrop/UseCases/DragLabelDropWorldUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { Angle, ParametricLine, Quaternion, Vector3 } from \"@vived/core\";\r\nimport { makeMockSceneRayPickUC } from \"../../Babylon/Mocks/MockSceneRayPickUC\";\r\nimport { SceneRayPick } from \"../../Babylon/UC/SceneRayPickUC\";\r\nimport { makeBaseAppState } from \"../../BaseApp/Entity/BaseAppState\";\r\nimport { makeChallengeEntityMock } from \"../../Challenge/Mocks/ChallengeEntityMock\";\r\nimport { makeTransform3D } from \"../../Transform3D/Entities/Transform3D\";\r\nimport {\r\n LabelDropDragMode,\r\n makeLabelDropRepo,\r\n} from \"../Entities/LabelDropRepo\";\r\nimport { makeMockLabelDropCorrectAnimationUC } from \"../Mocks/MockCorrectAnimation\";\r\nimport { makeMockDropAnimation } from \"../Mocks/MockDropAnimation\";\r\nimport { makeMockLabelDropIncorrectAnimationUC } from \"../Mocks/MockIncorrectAnimation\";\r\nimport { makeDragLabelDropWorldUC } from \"./DragLabelDropWorldUC\";\r\n\r\n// Default setup\r\n// Hit is 1,2,3 (world)\r\n// Stylus is 1,2,0 (world)\r\n// Local hit is 0,0,3 (stylus)\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n\r\n const challenge = makeChallengeEntityMock(appObjects);\r\n const baseApp = makeBaseAppState(appObjects.getOrCreate(\"BaseApp\"));\r\n\r\n const labelDropAO = appObjects.getOrCreate(\"labelDrop\");\r\n\r\n const mockDropAnimation = makeMockDropAnimation(appObjects);\r\n const mockCorrectAnimation = makeMockLabelDropCorrectAnimationUC(appObjects);\r\n const mockIncorrectAnimation =\r\n makeMockLabelDropIncorrectAnimationUC(appObjects);\r\n\r\n const labelDrop = makeLabelDropRepo(labelDropAO);\r\n const changeObserver = jest.fn();\r\n labelDrop.addChangeObserver(changeObserver);\r\n\r\n const mockRayPick = makeMockSceneRayPickUC(appObjects);\r\n const mockPick = jest.fn().mockReturnValue({\r\n hit: true,\r\n worldPickPoint: new Vector3(1, 2, 3),\r\n });\r\n mockRayPick.sceneRayPick = mockPick;\r\n\r\n const mockStylusTransform = makeTransform3D(appObjects.getOrCreate(\"stylus\"));\r\n labelDrop.dragHelperTransform.parent = mockStylusTransform;\r\n mockStylusTransform.worldPosition = new Vector3(1, 2, 0);\r\n\r\n const uc = makeDragLabelDropWorldUC(labelDropAO);\r\n\r\n challenge.selectedChallenge = \"LABEL_DROP\";\r\n baseApp.isAuthoring = false;\r\n\r\n return {\r\n appObjects,\r\n labelDrop,\r\n uc,\r\n changeObserver,\r\n baseApp,\r\n challenge,\r\n mockPick,\r\n mockStylusTransform,\r\n mockDropAnimation,\r\n mockCorrectAnimation,\r\n mockIncorrectAnimation,\r\n };\r\n}\r\n\r\ndescribe(\"Drag Label Drop UC\", () => {\r\n it(\"initializes id on press, mode and alpha\", () => {\r\n const { uc, labelDrop } = makeTestRig();\r\n expect(labelDrop.draggingID).toBeUndefined();\r\n\r\n uc.initializeDrag(\"id1\", ParametricLine.Forward());\r\n expect(labelDrop.draggingID).toEqual(\"id1\");\r\n expect(labelDrop.dragMode).toEqual(LabelDropDragMode.WORLD);\r\n expect(labelDrop.dragAlpha).toEqual(1);\r\n });\r\n\r\n it(\"Sets the world position of the label\", () => {\r\n const { uc, labelDrop } = makeTestRig();\r\n\r\n uc.initializeDrag(\"id1\", ParametricLine.Forward());\r\n\r\n const expectPos = new Vector3(1, 2, 3 * uc.percentOfPickDepth);\r\n\r\n expect(labelDrop.dragLabelTransform.worldPosition).toEqual(expectPos);\r\n });\r\n\r\n it(\"Sets the world rotation of the label\", () => {\r\n const { uc, labelDrop, mockStylusTransform } = makeTestRig();\r\n\r\n const rot = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(10),\r\n Angle.FromDegrees(20),\r\n Angle.FromDegrees(30)\r\n );\r\n mockStylusTransform.worldRotation = rot;\r\n\r\n uc.initializeDrag(\"id1\", ParametricLine.Forward());\r\n\r\n expect(\r\n Quaternion.Close(labelDrop.dragLabelTransform.worldRotation, rot)\r\n ).toEqual(true);\r\n });\r\n\r\n it(\"Does not initialize if challenge is not label drop\", () => {\r\n const { uc, labelDrop, challenge } = makeTestRig();\r\n challenge.selectedChallenge = \"NONE\";\r\n\r\n uc.initializeDrag(\"id1\", ParametricLine.Forward());\r\n expect(labelDrop.draggingID).toBeUndefined();\r\n });\r\n\r\n it(\"Does not initialize if authoring\", () => {\r\n const { uc, labelDrop, baseApp } = makeTestRig();\r\n baseApp.isAuthoring = true;\r\n\r\n uc.initializeDrag(\"id1\", ParametricLine.Forward());\r\n expect(labelDrop.draggingID).toBeUndefined();\r\n });\r\n\r\n it(\"Updates the position on drag\", () => {\r\n const { uc, labelDrop, mockPick, mockStylusTransform } = makeTestRig();\r\n\r\n uc.initializeDrag(\"id\", ParametricLine.Forward());\r\n\r\n // Move stylus to 10,20,30 (world)\r\n // Set pick to 10,20,0 (world)\r\n // Local pick is 0,0, 30 (local stylus)\r\n // Reduced is 0,0, 28.5 (assume 95%)\r\n // Reduced is 10,20,1.5 (world)\r\n\r\n mockStylusTransform.worldPosition = new Vector3(10, 20, 30);\r\n const mockPickResult: SceneRayPick = {\r\n hit: true,\r\n worldPickPoint: new Vector3(10, 20, 0),\r\n };\r\n mockPick.mockReturnValue(mockPickResult);\r\n\r\n uc.updateDrag(ParametricLine.Forward());\r\n\r\n const expectedDepth = 30 * (1 - uc.percentOfPickDepth);\r\n const expectedPos = new Vector3(10, 20, expectedDepth);\r\n\r\n expect(\r\n Vector3.Close(labelDrop.dragLabelTransform.worldPosition, expectedPos)\r\n ).toEqual(true);\r\n });\r\n\r\n it(\"Sets the position at zero parallax if there is no intersection\", () => {\r\n const { uc, labelDrop, mockPick } = makeTestRig();\r\n\r\n uc.initializeDrag(\"id\", ParametricLine.Forward());\r\n\r\n const mockPickResult: SceneRayPick = {\r\n hit: false,\r\n };\r\n mockPick.mockReturnValue(mockPickResult);\r\n\r\n uc.updateDrag(ParametricLine.Forward());\r\n\r\n const expectedPos = new Vector3(1, 2, 0);\r\n\r\n expect(\r\n Vector3.Close(labelDrop.dragLabelTransform.worldPosition, expectedPos)\r\n ).toEqual(true);\r\n });\r\n\r\n it(\"Updates the rotation on drag\", () => {\r\n const { uc, labelDrop, mockStylusTransform } = makeTestRig();\r\n\r\n uc.initializeDrag(\"id\", ParametricLine.Forward());\r\n\r\n expect(\r\n Quaternion.Close(\r\n labelDrop.dragLabelTransform.worldRotation,\r\n Quaternion.Identity()\r\n )\r\n ).toEqual(true);\r\n\r\n const rot = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(10),\r\n Angle.FromDegrees(20),\r\n Angle.FromDegrees(30)\r\n );\r\n mockStylusTransform.worldRotation = rot;\r\n\r\n uc.updateDrag(ParametricLine.Forward());\r\n\r\n expect(\r\n Quaternion.Close(labelDrop.dragLabelTransform.worldRotation, rot)\r\n ).toEqual(true);\r\n });\r\n\r\n it(\"Does not set the 3D position if it did not initialize\", () => {\r\n const { uc, labelDrop, mockPick } = makeTestRig();\r\n labelDrop.dragLabelTransform.worldPosition = Vector3.Zero();\r\n\r\n mockPick.mockReturnValue({\r\n worldPickPoint: new Vector3(1, 2, 3),\r\n hit: true,\r\n normal: new Vector3(4, 5, 6),\r\n objectPickMeta: {\r\n appObjectID: \"appObj1\",\r\n },\r\n });\r\n\r\n uc.updateDrag(ParametricLine.Forward());\r\n expect(labelDrop.dragLabelTransform.worldPosition).toEqual(Vector3.Zero());\r\n });\r\n\r\n it(\"Submits the object hit when released\", () => {\r\n const { uc, labelDrop, mockPick } = makeTestRig();\r\n\r\n const mockPickResult: SceneRayPick = {\r\n hit: true,\r\n worldPickPoint: new Vector3(1, 2, 3),\r\n appObjectID: \"appObj1\",\r\n };\r\n mockPick.mockReturnValue(mockPickResult);\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n labelDrop.submitLabelDrop = jest.fn();\r\n uc.releaseDrag(ParametricLine.Forward());\r\n\r\n expect(labelDrop.submitLabelDrop).toHaveBeenCalledWith(\r\n \"labelDrop1\",\r\n \"appObj1\"\r\n );\r\n });\r\n\r\n it(\"submits a label drop answer if an app object is hit\", () => {\r\n const { uc, labelDrop, mockPick } = makeTestRig();\r\n\r\n const mockPickResult: SceneRayPick = {\r\n hit: true,\r\n worldPickPoint: new Vector3(1, 2, 3),\r\n appObjectID: \"appObj1\",\r\n };\r\n mockPick.mockReturnValue(mockPickResult);\r\n\r\n labelDrop.submitLabelDrop = jest.fn();\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n\r\n uc.releaseDrag(ParametricLine.Forward());\r\n\r\n expect(labelDrop.submitLabelDrop).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Does not submit a label drop answer if an app object is not hit\", async () => {\r\n const { uc, labelDrop, mockPick } = makeTestRig();\r\n\r\n labelDrop.submitLabelDrop = jest.fn();\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n\r\n const mockPickResult: SceneRayPick = {\r\n hit: false,\r\n };\r\n mockPick.mockReturnValue(mockPickResult);\r\n\r\n uc.releaseDrag(ParametricLine.Forward());\r\n\r\n expect(labelDrop.submitLabelDrop).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Kicks off the drop animation\", () => {\r\n const { uc, mockPick, mockDropAnimation } = makeTestRig();\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n\r\n const mockPickResult: SceneRayPick = {\r\n hit: false,\r\n };\r\n mockPick.mockReturnValue(mockPickResult);\r\n\r\n uc.releaseDrag(ParametricLine.Forward());\r\n\r\n expect(mockDropAnimation.start).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Sets the desired position for the drop animation\", () => {\r\n const { uc, mockPick, mockDropAnimation } = makeTestRig();\r\n\r\n expect(mockDropAnimation.desiredFinalPosition).toEqual(Vector3.Zero());\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n\r\n const mockPickResult: SceneRayPick = {\r\n hit: false,\r\n };\r\n mockPick.mockReturnValue(mockPickResult);\r\n\r\n uc.releaseDrag(ParametricLine.Forward());\r\n\r\n expect(mockDropAnimation.desiredFinalPosition).toEqual(\r\n new Vector3(1, 2, 3)\r\n );\r\n });\r\n\r\n it(\"Kicks off the incorrect animation\", () => {\r\n const { uc, mockPick, mockIncorrectAnimation, labelDrop } = makeTestRig();\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n\r\n const mockPickResult: SceneRayPick = {\r\n hit: true,\r\n worldPickPoint: new Vector3(1, 2, 3),\r\n appObjectID: \"appObj\",\r\n };\r\n mockPick.mockReturnValue(mockPickResult);\r\n\r\n labelDrop.submitLabelDrop = jest.fn().mockReturnValue(false);\r\n\r\n uc.releaseDrag(ParametricLine.Forward());\r\n\r\n expect(mockIncorrectAnimation.start).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Sets the desired position for the incorrect animation\", () => {\r\n const { uc, mockPick, mockIncorrectAnimation, labelDrop } = makeTestRig();\r\n\r\n expect(mockIncorrectAnimation.desiredFinalPosition).toEqual(Vector3.Zero());\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n\r\n const mockPickResult: SceneRayPick = {\r\n hit: true,\r\n worldPickPoint: new Vector3(1, 2, 3),\r\n appObjectID: \"appObj\",\r\n };\r\n mockPick.mockReturnValue(mockPickResult);\r\n\r\n labelDrop.submitLabelDrop = jest.fn().mockReturnValue(false);\r\n\r\n uc.releaseDrag(ParametricLine.Forward());\r\n\r\n expect(mockIncorrectAnimation.desiredFinalPosition).toEqual(\r\n new Vector3(1, 2, 3)\r\n );\r\n });\r\n\r\n it(\"Kicks off the correct animation\", () => {\r\n const { uc, mockPick, mockCorrectAnimation, labelDrop } = makeTestRig();\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n\r\n const mockPickResult: SceneRayPick = {\r\n hit: true,\r\n worldPickPoint: new Vector3(1, 2, 3),\r\n appObjectID: \"appObj\",\r\n };\r\n mockPick.mockReturnValue(mockPickResult);\r\n\r\n labelDrop.submitLabelDrop = jest.fn().mockReturnValue(true);\r\n\r\n uc.releaseDrag(ParametricLine.Forward());\r\n\r\n expect(mockCorrectAnimation.start).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Does not submit if no object hit on release\", () => {\r\n const { uc, labelDrop, mockPick } = makeTestRig();\r\n\r\n mockPick.mockReturnValue({\r\n worldPickPoint: new Vector3(1, 2, 3),\r\n hit: false,\r\n normal: new Vector3(4, 5, 6),\r\n objectPickMeta: {},\r\n });\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n labelDrop.submitLabelDrop = jest.fn();\r\n uc.releaseDrag(ParametricLine.Forward());\r\n\r\n expect(labelDrop.submitLabelDrop).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Resets dragging ID after the animation ends\", async () => {\r\n const { uc, labelDrop } = makeTestRig();\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n\r\n expect(labelDrop.draggingID).toEqual(\"labelDrop1\");\r\n\r\n await uc.releaseDrag(ParametricLine.Forward());\r\n\r\n expect(labelDrop.draggingID).toBeUndefined();\r\n });\r\n\r\n it(\"Resets the result after the animation ends\", async () => {\r\n const { uc, labelDrop } = makeTestRig();\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n\r\n expect(labelDrop.draggingID).toEqual(\"labelDrop1\");\r\n\r\n const spy = jest.spyOn(labelDrop, \"resultIsCorrect\", \"set\");\r\n await uc.releaseDrag(ParametricLine.Forward());\r\n\r\n expect(spy).toHaveBeenCalledWith(undefined);\r\n });\r\n\r\n it(\"Sets mode to review if correct if there are no more labels after the animation has completed\", async () => {\r\n const { uc, labelDrop, baseApp, mockPick } = makeTestRig();\r\n\r\n expect(baseApp.isReviewing).toEqual(false);\r\n\r\n const mockPickResult: SceneRayPick = {\r\n hit: true,\r\n worldPickPoint: new Vector3(1, 2, 3),\r\n appObjectID: \"appObj\",\r\n };\r\n mockPick.mockReturnValue(mockPickResult);\r\n\r\n labelDrop.getRemainingLabelDrops = jest.fn().mockReturnValue([]);\r\n labelDrop.submitLabelDrop = jest.fn().mockReturnValue(true);\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n await uc.releaseDrag(ParametricLine.Forward());\r\n\r\n expect(baseApp.isReviewing).toEqual(true);\r\n });\r\n\r\n it(\"Does not set the mode to review if there are more labels\", () => {\r\n const { uc, labelDrop, baseApp } = makeTestRig();\r\n\r\n expect(baseApp.isReviewing).toEqual(false);\r\n\r\n labelDrop.getRemainingLabelDrops = jest\r\n .fn()\r\n .mockReturnValue([\"anbotherLabel\"]);\r\n labelDrop.submitLabelDrop = jest.fn().mockReturnValue(true);\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n uc.releaseDrag(ParametricLine.Forward());\r\n\r\n expect(baseApp.isReviewing).toEqual(false);\r\n });\r\n\r\n it(\"Cancels any running animations on initialization\", () => {\r\n const { uc, labelDrop, mockDropAnimation } = makeTestRig();\r\n\r\n labelDrop.getRemainingLabelDrops = jest.fn().mockReturnValue([]);\r\n\r\n uc.initializeDrag(\"labelDrop1\", ParametricLine.Forward());\r\n uc.releaseDrag(ParametricLine.Forward());\r\n expect(mockDropAnimation.start).toHaveBeenCalled();\r\n\r\n uc.initializeDrag(\"labelDrop2\", ParametricLine.Forward());\r\n\r\n expect(mockDropAnimation.cancel).toHaveBeenCalled();\r\n });\r\n});\r\n"]}
@@ -9,6 +9,8 @@ function makeTestRig() {
9
9
  const registerSpy = jest.spyOn(appObjects, "registerSingleton");
10
10
  const undo = makeUndoRedoEntity(appObjects.getOrCreate("Undo"));
11
11
  const mockDispatchStateChange = makeMockDispatchStateChange(appObjects);
12
+ const doDispatchMock = jest.fn();
13
+ mockDispatchStateChange.doDispatch = doDispatchMock;
12
14
  const labelDropAO = appObjects.getOrCreate("repo");
13
15
  const repo = makeLabelDropRepo(labelDropAO);
14
16
  const mockConfirm = makeMockShowConfirmUC(appObjects);
@@ -25,7 +27,7 @@ function makeTestRig() {
25
27
  editLabelDropUC,
26
28
  dropItem,
27
29
  mockConfirm,
28
- mockDispatchStateChange,
30
+ doDispatchMock,
29
31
  registerSpy,
30
32
  undo,
31
33
  };
@@ -120,26 +122,26 @@ describe("Edit Label Drop UC", () => {
120
122
  expect(repo.isEditingNewAnswer).toEqual(false);
121
123
  });
122
124
  it("Dispatches a state change when finishEditing is called and there is a change", () => {
123
- const { editLabelDropUC, dropItem, mockDispatchStateChange } = makeTestRig();
125
+ const { editLabelDropUC, dropItem, doDispatchMock } = makeTestRig();
124
126
  editLabelDropUC.start(dropItem.id);
125
127
  dropItem.label = "new label";
126
- mockDispatchStateChange.doDispatch.mockClear();
128
+ doDispatchMock.mockClear();
127
129
  editLabelDropUC.finish();
128
- expect(mockDispatchStateChange.doDispatch).toHaveBeenCalled();
130
+ expect(doDispatchMock).toHaveBeenCalled();
129
131
  });
130
132
  it("Does not dispatch a state change when finishEditing is called and there is no change", () => {
131
- const { editLabelDropUC, dropItem, mockDispatchStateChange } = makeTestRig();
133
+ const { editLabelDropUC, dropItem, doDispatchMock } = makeTestRig();
132
134
  editLabelDropUC.start(dropItem.id);
133
- mockDispatchStateChange.doDispatch.mockClear();
135
+ doDispatchMock.mockClear();
134
136
  editLabelDropUC.finish();
135
- expect(mockDispatchStateChange.doDispatch).not.toHaveBeenCalled();
137
+ expect(doDispatchMock).not.toHaveBeenCalled();
136
138
  });
137
139
  it("Dispatches a state change when finis is called on a newly created label drop answer", () => {
138
- const { editLabelDropUC, mockDispatchStateChange } = makeTestRig();
140
+ const { editLabelDropUC, doDispatchMock } = makeTestRig();
139
141
  editLabelDropUC.start();
140
- mockDispatchStateChange.doDispatch.mockClear();
142
+ doDispatchMock.mockClear();
141
143
  editLabelDropUC.finish();
142
- expect(mockDispatchStateChange.doDispatch).toHaveBeenCalled();
144
+ expect(doDispatchMock).toHaveBeenCalled();
143
145
  });
144
146
  it("Should not show confirmation dialog if there is no change", () => {
145
147
  const { editLabelDropUC, dropItem, mockConfirm } = makeTestRig();
@@ -172,25 +174,25 @@ describe("Edit Label Drop UC", () => {
172
174
  expect(mockConfirm.showConfirm).toHaveBeenCalled();
173
175
  });
174
176
  it("Can undo and redo changes to existing", () => {
175
- const { undo, editLabelDropUC, dropItem, mockDispatchStateChange } = makeTestRig();
177
+ const { undo, editLabelDropUC, dropItem, doDispatchMock } = makeTestRig();
176
178
  editLabelDropUC.start(dropItem.id);
177
179
  dropItem.label = "new label";
178
180
  dropItem.addTargetID("obj2");
179
181
  editLabelDropUC.finish();
180
182
  expect(dropItem.label).toEqual("new label");
181
183
  expect(dropItem.targetIds).toEqual(["obj1", "obj2"]);
182
- mockDispatchStateChange.doDispatch.mockClear();
184
+ doDispatchMock.mockClear();
183
185
  undo.doUndo();
184
186
  expect(dropItem.label).toEqual("Test Label");
185
187
  expect(dropItem.targetIds).toEqual(["obj1"]);
186
- expect(mockDispatchStateChange.doDispatch).toHaveBeenCalledTimes(1);
188
+ expect(doDispatchMock).toHaveBeenCalledTimes(1);
187
189
  undo.doRedo();
188
190
  expect(dropItem.label).toEqual("new label");
189
191
  expect(dropItem.targetIds).toEqual(["obj1", "obj2"]);
190
- expect(mockDispatchStateChange.doDispatch).toHaveBeenCalledTimes(2);
192
+ expect(doDispatchMock).toHaveBeenCalledTimes(2);
191
193
  });
192
194
  it("Can undo and redo changes to new item", () => {
193
- const { undo, editLabelDropUC, mockDispatchStateChange, repo } = makeTestRig();
195
+ const { undo, editLabelDropUC, doDispatchMock, repo } = makeTestRig();
194
196
  editLabelDropUC.start();
195
197
  const newItem = repo.getForAppObject(repo.editingID);
196
198
  const newItemId = newItem.id;
@@ -200,15 +202,15 @@ describe("Edit Label Drop UC", () => {
200
202
  expect(newItem.label).toEqual("A Label");
201
203
  expect(newItem.targetIds).toEqual(["obj1"]);
202
204
  expect(repo.hasForAppObject(newItemId)).toEqual(true);
203
- mockDispatchStateChange.doDispatch.mockClear();
205
+ doDispatchMock.mockClear();
204
206
  undo.doUndo();
205
207
  expect(repo.hasForAppObject(newItemId)).toEqual(false);
206
- expect(mockDispatchStateChange.doDispatch).toHaveBeenCalledTimes(1);
208
+ expect(doDispatchMock).toHaveBeenCalledTimes(1);
207
209
  undo.doRedo();
208
210
  expect(repo.hasForAppObject(newItemId)).toEqual(true);
209
211
  expect(repo.getForAppObject(newItemId)?.label).toEqual("A Label");
210
212
  expect(repo.getForAppObject(newItemId)?.targetIds).toEqual(["obj1"]);
211
- expect(mockDispatchStateChange.doDispatch).toHaveBeenCalledTimes(2);
213
+ expect(doDispatchMock).toHaveBeenCalledTimes(2);
212
214
  });
213
215
  });
214
216
  //# sourceMappingURL=EditLabelDropUC.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditLabelDropUC.test.js","sourceRoot":"","sources":["../../../../src/LabelDrop/UseCases/EditLabelDropUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport {\r\n ShowConfirmDTO,\r\n ShowConfirmUC,\r\n} from \"../../Dispatcher/UC/ShowConfirmUC\";\r\nimport { makeMockShowConfirmUC } from \"../../Dispatcher/Mocks/MockShowConfirm\";\r\nimport { makeMockDispatchStateChange } from \"../../Dispatcher/Mocks/MockDispatchStateChange\";\r\nimport { makeUndoRedoEntity } from \"../../UndoRedo/Entities/UndoRedoEntity\";\r\nimport { makeLabelDropRepo } from \"../Entities/LabelDropRepo\";\r\nimport { EditLabelDropUC, makeEditLabelDropUC } from \"./EditLabelDropUC\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const registerSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n\r\n const undo = makeUndoRedoEntity(appObjects.getOrCreate(\"Undo\"));\r\n const mockDispatchStateChange = makeMockDispatchStateChange(appObjects);\r\n\r\n const labelDropAO = appObjects.getOrCreate(\"repo\");\r\n const repo = makeLabelDropRepo(labelDropAO);\r\n\r\n const mockConfirm = makeMockShowConfirmUC(appObjects) as ShowConfirmUC;\r\n mockConfirm.showConfirm = (dto: ShowConfirmDTO) => {\r\n dto.confirmCallback();\r\n };\r\n\r\n const editLabelDropUC = makeEditLabelDropUC(labelDropAO);\r\n\r\n const dropItem = repo.makeLabelDropItem(\"labelDropTestID\");\r\n dropItem.labelEntity.custom = \"Test Label\";\r\n dropItem.targetIds = [\"obj1\"];\r\n\r\n return {\r\n appObjects,\r\n repo,\r\n editLabelDropUC,\r\n dropItem,\r\n mockConfirm,\r\n mockDispatchStateChange,\r\n registerSpy,\r\n undo,\r\n };\r\n}\r\n\r\ndescribe(\"Edit Label Drop UC\", () => {\r\n it(\"Get it UC\", () => {\r\n const { appObjects, editLabelDropUC } = makeTestRig();\r\n\r\n expect(EditLabelDropUC.get(appObjects)).toEqual(editLabelDropUC);\r\n });\r\n\r\n it(\"Registers as the singleton\", () => {\r\n const { editLabelDropUC, registerSpy } = makeTestRig();\r\n\r\n expect(registerSpy).toHaveBeenCalledWith(editLabelDropUC);\r\n });\r\n\r\n it(\"Sets the editing id when startEditing is called\", () => {\r\n const { repo, editLabelDropUC, dropItem } = makeTestRig();\r\n expect(repo.editingID).toBeUndefined();\r\n\r\n editLabelDropUC.start(dropItem.id);\r\n expect(repo.editingID).toEqual(dropItem.id);\r\n });\r\n\r\n it(\"Sets isEditingNewAnswer to true when start is called with no id\", () => {\r\n const { repo, editLabelDropUC } = makeTestRig();\r\n expect(repo.isEditingNewAnswer).toBe(false);\r\n\r\n editLabelDropUC.start();\r\n expect(repo.isEditingNewAnswer).toEqual(true);\r\n });\r\n\r\n it(\"Clears the editing id when startEditing is called with an ID that's not found\", () => {\r\n const { repo, editLabelDropUC } = makeTestRig();\r\n repo.editingID = \"some id\";\r\n\r\n editLabelDropUC.start(\"bad id\");\r\n expect(repo.editingID).toEqual(undefined);\r\n });\r\n\r\n it(\"Sets the isEditingNewAnswer to false when startEditing is called with isNewAnswer param equal to true but the ID isn't found\", () => {\r\n const { repo, editLabelDropUC } = makeTestRig();\r\n repo.editingID = \"some id\";\r\n\r\n editLabelDropUC.start(\"bad id\");\r\n expect(repo.isEditingNewAnswer).toEqual(false);\r\n });\r\n\r\n it(\"Discards label and correct id changes when discardEdits is called and confirm is clicked\", () => {\r\n const { repo, editLabelDropUC, dropItem } = makeTestRig();\r\n\r\n editLabelDropUC.start(dropItem.id);\r\n\r\n dropItem.label = \"new label\";\r\n dropItem.addTargetID(\"obj2\");\r\n\r\n editLabelDropUC.discard();\r\n\r\n expect(repo.editingID).toEqual(undefined);\r\n expect(dropItem.label).toEqual(\"Test Label\");\r\n expect(dropItem.targetIds).toEqual([\"obj1\"]);\r\n });\r\n\r\n it(\"Sets isEditingNewAnswer to false after discardEdits is called and confirm is clicked\", () => {\r\n const { repo, editLabelDropUC } = makeTestRig();\r\n\r\n editLabelDropUC.start();\r\n const newItem = repo.getForAppObject(repo.editingID!)!;\r\n newItem.label = \"new label\";\r\n newItem.addTargetID(\"obj2\");\r\n\r\n expect(repo.isEditingNewAnswer).toBe(true);\r\n\r\n editLabelDropUC.discard();\r\n\r\n expect(repo.editingID).toEqual(undefined);\r\n expect(repo.isEditingNewAnswer).toEqual(false);\r\n });\r\n\r\n it(\"Does not discard changes when discard is called and cancel is clicked\", () => {\r\n const { repo, editLabelDropUC, dropItem, mockConfirm } = makeTestRig();\r\n\r\n mockConfirm.showConfirm = (dto: ShowConfirmDTO) => {\r\n dto.cancelCallback();\r\n };\r\n\r\n editLabelDropUC.start(dropItem.id);\r\n dropItem.label = \"new label\";\r\n dropItem.addTargetID(\"obj2\");\r\n\r\n editLabelDropUC.discard();\r\n\r\n expect(repo.editingID).toEqual(dropItem.id);\r\n expect(dropItem.label).toEqual(\"new label\");\r\n expect(dropItem.targetIds).toEqual([\"obj1\", \"obj2\"]);\r\n expect(repo.isEditingNewAnswer).toEqual(false);\r\n });\r\n\r\n it(\"Keeps changes when finishEditing is called\", () => {\r\n const { repo, editLabelDropUC, dropItem } = makeTestRig();\r\n\r\n editLabelDropUC.start(dropItem.id);\r\n\r\n dropItem.label = \"new label\";\r\n dropItem.addTargetID(\"obj2\");\r\n\r\n editLabelDropUC.finish();\r\n\r\n expect(repo.editingID).toEqual(undefined);\r\n expect(dropItem.label).toEqual(\"new label\");\r\n expect(dropItem.targetIds).toEqual([\"obj1\", \"obj2\"]);\r\n expect(repo.isEditingNewAnswer).toEqual(false);\r\n });\r\n\r\n it(\"Deletes a newly created label drop when discardEdits is called\", () => {\r\n const { repo, editLabelDropUC } = makeTestRig();\r\n\r\n editLabelDropUC.start();\r\n const newItem = repo.getForAppObject(repo.editingID!)!;\r\n\r\n expect(repo.hasForAppObject(newItem.id)).toEqual(true);\r\n expect(repo.isEditingNewAnswer).toEqual(true);\r\n\r\n editLabelDropUC.discard();\r\n\r\n expect(repo.hasForAppObject(newItem.id)).toEqual(false);\r\n expect(repo.isEditingNewAnswer).toEqual(false);\r\n });\r\n\r\n it(\"Dispatches a state change when finishEditing is called and there is a change\", () => {\r\n const { editLabelDropUC, dropItem, mockDispatchStateChange } =\r\n makeTestRig();\r\n\r\n editLabelDropUC.start(dropItem.id);\r\n dropItem.label = \"new label\";\r\n\r\n mockDispatchStateChange.doDispatch.mockClear();\r\n\r\n editLabelDropUC.finish();\r\n\r\n expect(mockDispatchStateChange.doDispatch).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Does not dispatch a state change when finishEditing is called and there is no change\", () => {\r\n const { editLabelDropUC, dropItem, mockDispatchStateChange } =\r\n makeTestRig();\r\n\r\n editLabelDropUC.start(dropItem.id);\r\n\r\n mockDispatchStateChange.doDispatch.mockClear();\r\n\r\n editLabelDropUC.finish();\r\n\r\n expect(mockDispatchStateChange.doDispatch).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Dispatches a state change when finis is called on a newly created label drop answer\", () => {\r\n const { editLabelDropUC, mockDispatchStateChange } = makeTestRig();\r\n\r\n editLabelDropUC.start();\r\n\r\n mockDispatchStateChange.doDispatch.mockClear();\r\n\r\n editLabelDropUC.finish();\r\n\r\n expect(mockDispatchStateChange.doDispatch).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Should not show confirmation dialog if there is no change\", () => {\r\n const { editLabelDropUC, dropItem, mockConfirm } = makeTestRig();\r\n\r\n mockConfirm.showConfirm = jest.fn();\r\n editLabelDropUC.start(dropItem.id);\r\n editLabelDropUC.discard();\r\n\r\n expect(mockConfirm.showConfirm).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Shows confirmation dialog when discards the new answer\", () => {\r\n const { editLabelDropUC, mockConfirm } = makeTestRig();\r\n\r\n mockConfirm.showConfirm = jest.fn();\r\n editLabelDropUC.start();\r\n editLabelDropUC.discard();\r\n\r\n expect(mockConfirm.showConfirm).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Shows confirmation dialog if the label was changed\", () => {\r\n const { editLabelDropUC, dropItem, mockConfirm } = makeTestRig();\r\n\r\n mockConfirm.showConfirm = jest.fn();\r\n editLabelDropUC.start(dropItem.id);\r\n dropItem.label = \"new label\";\r\n\r\n editLabelDropUC.discard();\r\n\r\n expect(mockConfirm.showConfirm).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Shows confirmation dialog if the correct object ids were changed\", () => {\r\n const { editLabelDropUC, dropItem, mockConfirm } = makeTestRig();\r\n\r\n mockConfirm.showConfirm = jest.fn();\r\n editLabelDropUC.start(dropItem.id);\r\n dropItem.addTargetID(\"target2\");\r\n editLabelDropUC.discard();\r\n\r\n expect(mockConfirm.showConfirm).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Can undo and redo changes to existing\", () => {\r\n const { undo, editLabelDropUC, dropItem, mockDispatchStateChange } =\r\n makeTestRig();\r\n\r\n editLabelDropUC.start(dropItem.id);\r\n\r\n dropItem.label = \"new label\";\r\n dropItem.addTargetID(\"obj2\");\r\n\r\n editLabelDropUC.finish();\r\n\r\n expect(dropItem.label).toEqual(\"new label\");\r\n expect(dropItem.targetIds).toEqual([\"obj1\", \"obj2\"]);\r\n\r\n mockDispatchStateChange.doDispatch.mockClear();\r\n\r\n undo.doUndo();\r\n expect(dropItem.label).toEqual(\"Test Label\");\r\n expect(dropItem.targetIds).toEqual([\"obj1\"]);\r\n expect(mockDispatchStateChange.doDispatch).toHaveBeenCalledTimes(1);\r\n\r\n undo.doRedo();\r\n\r\n expect(dropItem.label).toEqual(\"new label\");\r\n expect(dropItem.targetIds).toEqual([\"obj1\", \"obj2\"]);\r\n expect(mockDispatchStateChange.doDispatch).toHaveBeenCalledTimes(2);\r\n });\r\n\r\n it(\"Can undo and redo changes to new item\", () => {\r\n const { undo, editLabelDropUC, mockDispatchStateChange, repo } =\r\n makeTestRig();\r\n\r\n editLabelDropUC.start();\r\n const newItem = repo.getForAppObject(repo.editingID!)!;\r\n const newItemId = newItem.id;\r\n newItem.label = \"A Label\";\r\n newItem.addTargetID(\"obj1\");\r\n\r\n editLabelDropUC.finish();\r\n\r\n expect(newItem.label).toEqual(\"A Label\");\r\n expect(newItem.targetIds).toEqual([\"obj1\"]);\r\n expect(repo.hasForAppObject(newItemId)).toEqual(true);\r\n\r\n mockDispatchStateChange.doDispatch.mockClear();\r\n\r\n undo.doUndo();\r\n\r\n expect(repo.hasForAppObject(newItemId)).toEqual(false);\r\n expect(mockDispatchStateChange.doDispatch).toHaveBeenCalledTimes(1);\r\n\r\n undo.doRedo();\r\n\r\n expect(repo.hasForAppObject(newItemId)).toEqual(true);\r\n expect(repo.getForAppObject(newItemId)?.label).toEqual(\"A Label\");\r\n expect(repo.getForAppObject(newItemId)?.targetIds).toEqual([\"obj1\"]);\r\n expect(mockDispatchStateChange.doDispatch).toHaveBeenCalledTimes(2);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"EditLabelDropUC.test.js","sourceRoot":"","sources":["../../../../src/LabelDrop/UseCases/EditLabelDropUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport {\r\n ShowConfirmDTO,\r\n ShowConfirmUC,\r\n} from \"../../Dispatcher/UC/ShowConfirmUC\";\r\nimport { makeMockShowConfirmUC } from \"../../Dispatcher/Mocks/MockShowConfirm\";\r\nimport { makeMockDispatchStateChange } from \"../../Dispatcher/Mocks/MockDispatchStateChange\";\r\nimport { makeUndoRedoEntity } from \"../../UndoRedo/Entities/UndoRedoEntity\";\r\nimport { makeLabelDropRepo } from \"../Entities/LabelDropRepo\";\r\nimport { EditLabelDropUC, makeEditLabelDropUC } from \"./EditLabelDropUC\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const registerSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n\r\n const undo = makeUndoRedoEntity(appObjects.getOrCreate(\"Undo\"));\r\n const mockDispatchStateChange = makeMockDispatchStateChange(appObjects);\r\n const doDispatchMock = jest.fn();\r\n mockDispatchStateChange.doDispatch = doDispatchMock;\r\n\r\n const labelDropAO = appObjects.getOrCreate(\"repo\");\r\n const repo = makeLabelDropRepo(labelDropAO);\r\n\r\n const mockConfirm = makeMockShowConfirmUC(appObjects) as ShowConfirmUC;\r\n mockConfirm.showConfirm = (dto: ShowConfirmDTO) => {\r\n dto.confirmCallback();\r\n };\r\n\r\n const editLabelDropUC = makeEditLabelDropUC(labelDropAO);\r\n\r\n const dropItem = repo.makeLabelDropItem(\"labelDropTestID\");\r\n dropItem.labelEntity.custom = \"Test Label\";\r\n dropItem.targetIds = [\"obj1\"];\r\n\r\n return {\r\n appObjects,\r\n repo,\r\n editLabelDropUC,\r\n dropItem,\r\n mockConfirm,\r\n doDispatchMock,\r\n registerSpy,\r\n undo,\r\n };\r\n}\r\n\r\ndescribe(\"Edit Label Drop UC\", () => {\r\n it(\"Get it UC\", () => {\r\n const { appObjects, editLabelDropUC } = makeTestRig();\r\n\r\n expect(EditLabelDropUC.get(appObjects)).toEqual(editLabelDropUC);\r\n });\r\n\r\n it(\"Registers as the singleton\", () => {\r\n const { editLabelDropUC, registerSpy } = makeTestRig();\r\n\r\n expect(registerSpy).toHaveBeenCalledWith(editLabelDropUC);\r\n });\r\n\r\n it(\"Sets the editing id when startEditing is called\", () => {\r\n const { repo, editLabelDropUC, dropItem } = makeTestRig();\r\n expect(repo.editingID).toBeUndefined();\r\n\r\n editLabelDropUC.start(dropItem.id);\r\n expect(repo.editingID).toEqual(dropItem.id);\r\n });\r\n\r\n it(\"Sets isEditingNewAnswer to true when start is called with no id\", () => {\r\n const { repo, editLabelDropUC } = makeTestRig();\r\n expect(repo.isEditingNewAnswer).toBe(false);\r\n\r\n editLabelDropUC.start();\r\n expect(repo.isEditingNewAnswer).toEqual(true);\r\n });\r\n\r\n it(\"Clears the editing id when startEditing is called with an ID that's not found\", () => {\r\n const { repo, editLabelDropUC } = makeTestRig();\r\n repo.editingID = \"some id\";\r\n\r\n editLabelDropUC.start(\"bad id\");\r\n expect(repo.editingID).toEqual(undefined);\r\n });\r\n\r\n it(\"Sets the isEditingNewAnswer to false when startEditing is called with isNewAnswer param equal to true but the ID isn't found\", () => {\r\n const { repo, editLabelDropUC } = makeTestRig();\r\n repo.editingID = \"some id\";\r\n\r\n editLabelDropUC.start(\"bad id\");\r\n expect(repo.isEditingNewAnswer).toEqual(false);\r\n });\r\n\r\n it(\"Discards label and correct id changes when discardEdits is called and confirm is clicked\", () => {\r\n const { repo, editLabelDropUC, dropItem } = makeTestRig();\r\n\r\n editLabelDropUC.start(dropItem.id);\r\n\r\n dropItem.label = \"new label\";\r\n dropItem.addTargetID(\"obj2\");\r\n\r\n editLabelDropUC.discard();\r\n\r\n expect(repo.editingID).toEqual(undefined);\r\n expect(dropItem.label).toEqual(\"Test Label\");\r\n expect(dropItem.targetIds).toEqual([\"obj1\"]);\r\n });\r\n\r\n it(\"Sets isEditingNewAnswer to false after discardEdits is called and confirm is clicked\", () => {\r\n const { repo, editLabelDropUC } = makeTestRig();\r\n\r\n editLabelDropUC.start();\r\n const newItem = repo.getForAppObject(repo.editingID!)!;\r\n newItem.label = \"new label\";\r\n newItem.addTargetID(\"obj2\");\r\n\r\n expect(repo.isEditingNewAnswer).toBe(true);\r\n\r\n editLabelDropUC.discard();\r\n\r\n expect(repo.editingID).toEqual(undefined);\r\n expect(repo.isEditingNewAnswer).toEqual(false);\r\n });\r\n\r\n it(\"Does not discard changes when discard is called and cancel is clicked\", () => {\r\n const { repo, editLabelDropUC, dropItem, mockConfirm } = makeTestRig();\r\n\r\n mockConfirm.showConfirm = (dto: ShowConfirmDTO) => {\r\n dto.cancelCallback();\r\n };\r\n\r\n editLabelDropUC.start(dropItem.id);\r\n dropItem.label = \"new label\";\r\n dropItem.addTargetID(\"obj2\");\r\n\r\n editLabelDropUC.discard();\r\n\r\n expect(repo.editingID).toEqual(dropItem.id);\r\n expect(dropItem.label).toEqual(\"new label\");\r\n expect(dropItem.targetIds).toEqual([\"obj1\", \"obj2\"]);\r\n expect(repo.isEditingNewAnswer).toEqual(false);\r\n });\r\n\r\n it(\"Keeps changes when finishEditing is called\", () => {\r\n const { repo, editLabelDropUC, dropItem } = makeTestRig();\r\n\r\n editLabelDropUC.start(dropItem.id);\r\n\r\n dropItem.label = \"new label\";\r\n dropItem.addTargetID(\"obj2\");\r\n\r\n editLabelDropUC.finish();\r\n\r\n expect(repo.editingID).toEqual(undefined);\r\n expect(dropItem.label).toEqual(\"new label\");\r\n expect(dropItem.targetIds).toEqual([\"obj1\", \"obj2\"]);\r\n expect(repo.isEditingNewAnswer).toEqual(false);\r\n });\r\n\r\n it(\"Deletes a newly created label drop when discardEdits is called\", () => {\r\n const { repo, editLabelDropUC } = makeTestRig();\r\n\r\n editLabelDropUC.start();\r\n const newItem = repo.getForAppObject(repo.editingID!)!;\r\n\r\n expect(repo.hasForAppObject(newItem.id)).toEqual(true);\r\n expect(repo.isEditingNewAnswer).toEqual(true);\r\n\r\n editLabelDropUC.discard();\r\n\r\n expect(repo.hasForAppObject(newItem.id)).toEqual(false);\r\n expect(repo.isEditingNewAnswer).toEqual(false);\r\n });\r\n\r\n it(\"Dispatches a state change when finishEditing is called and there is a change\", () => {\r\n const { editLabelDropUC, dropItem, doDispatchMock } = makeTestRig();\r\n\r\n editLabelDropUC.start(dropItem.id);\r\n dropItem.label = \"new label\";\r\n\r\n doDispatchMock.mockClear();\r\n\r\n editLabelDropUC.finish();\r\n\r\n expect(doDispatchMock).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Does not dispatch a state change when finishEditing is called and there is no change\", () => {\r\n const { editLabelDropUC, dropItem, doDispatchMock } = makeTestRig();\r\n\r\n editLabelDropUC.start(dropItem.id);\r\n\r\n doDispatchMock.mockClear();\r\n\r\n editLabelDropUC.finish();\r\n\r\n expect(doDispatchMock).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Dispatches a state change when finis is called on a newly created label drop answer\", () => {\r\n const { editLabelDropUC, doDispatchMock } = makeTestRig();\r\n\r\n editLabelDropUC.start();\r\n\r\n doDispatchMock.mockClear();\r\n\r\n editLabelDropUC.finish();\r\n\r\n expect(doDispatchMock).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Should not show confirmation dialog if there is no change\", () => {\r\n const { editLabelDropUC, dropItem, mockConfirm } = makeTestRig();\r\n\r\n mockConfirm.showConfirm = jest.fn();\r\n editLabelDropUC.start(dropItem.id);\r\n editLabelDropUC.discard();\r\n\r\n expect(mockConfirm.showConfirm).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"Shows confirmation dialog when discards the new answer\", () => {\r\n const { editLabelDropUC, mockConfirm } = makeTestRig();\r\n\r\n mockConfirm.showConfirm = jest.fn();\r\n editLabelDropUC.start();\r\n editLabelDropUC.discard();\r\n\r\n expect(mockConfirm.showConfirm).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Shows confirmation dialog if the label was changed\", () => {\r\n const { editLabelDropUC, dropItem, mockConfirm } = makeTestRig();\r\n\r\n mockConfirm.showConfirm = jest.fn();\r\n editLabelDropUC.start(dropItem.id);\r\n dropItem.label = \"new label\";\r\n\r\n editLabelDropUC.discard();\r\n\r\n expect(mockConfirm.showConfirm).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Shows confirmation dialog if the correct object ids were changed\", () => {\r\n const { editLabelDropUC, dropItem, mockConfirm } = makeTestRig();\r\n\r\n mockConfirm.showConfirm = jest.fn();\r\n editLabelDropUC.start(dropItem.id);\r\n dropItem.addTargetID(\"target2\");\r\n editLabelDropUC.discard();\r\n\r\n expect(mockConfirm.showConfirm).toHaveBeenCalled();\r\n });\r\n\r\n it(\"Can undo and redo changes to existing\", () => {\r\n const { undo, editLabelDropUC, dropItem, doDispatchMock } = makeTestRig();\r\n\r\n editLabelDropUC.start(dropItem.id);\r\n\r\n dropItem.label = \"new label\";\r\n dropItem.addTargetID(\"obj2\");\r\n\r\n editLabelDropUC.finish();\r\n\r\n expect(dropItem.label).toEqual(\"new label\");\r\n expect(dropItem.targetIds).toEqual([\"obj1\", \"obj2\"]);\r\n\r\n doDispatchMock.mockClear();\r\n\r\n undo.doUndo();\r\n expect(dropItem.label).toEqual(\"Test Label\");\r\n expect(dropItem.targetIds).toEqual([\"obj1\"]);\r\n expect(doDispatchMock).toHaveBeenCalledTimes(1);\r\n\r\n undo.doRedo();\r\n\r\n expect(dropItem.label).toEqual(\"new label\");\r\n expect(dropItem.targetIds).toEqual([\"obj1\", \"obj2\"]);\r\n expect(doDispatchMock).toHaveBeenCalledTimes(2);\r\n });\r\n\r\n it(\"Can undo and redo changes to new item\", () => {\r\n const { undo, editLabelDropUC, doDispatchMock, repo } = makeTestRig();\r\n\r\n editLabelDropUC.start();\r\n const newItem = repo.getForAppObject(repo.editingID!)!;\r\n const newItemId = newItem.id;\r\n newItem.label = \"A Label\";\r\n newItem.addTargetID(\"obj1\");\r\n\r\n editLabelDropUC.finish();\r\n\r\n expect(newItem.label).toEqual(\"A Label\");\r\n expect(newItem.targetIds).toEqual([\"obj1\"]);\r\n expect(repo.hasForAppObject(newItemId)).toEqual(true);\r\n\r\n doDispatchMock.mockClear();\r\n\r\n undo.doUndo();\r\n\r\n expect(repo.hasForAppObject(newItemId)).toEqual(false);\r\n expect(doDispatchMock).toHaveBeenCalledTimes(1);\r\n\r\n undo.doRedo();\r\n\r\n expect(repo.hasForAppObject(newItemId)).toEqual(true);\r\n expect(repo.getForAppObject(newItemId)?.label).toEqual(\"A Label\");\r\n expect(repo.getForAppObject(newItemId)?.targetIds).toEqual([\"obj1\"]);\r\n expect(doDispatchMock).toHaveBeenCalledTimes(2);\r\n });\r\n});\r\n"]}
@@ -10,7 +10,9 @@ function makeTestRig() {
10
10
  const repo = makeLabelDropRepo(labelDropAO);
11
11
  const dropItem = repo.makeLabelDropItem("labelDropID");
12
12
  repo.editingID = "labelDropID";
13
- const mockPick = makeMockSceneRayPickUC(appObjects);
13
+ const mockRayPick = makeMockSceneRayPickUC(appObjects);
14
+ const mockPick = jest.fn().mockReturnValue({ appObjectID: "hideableObj" });
15
+ mockRayPick.sceneRayPick = mockPick;
14
16
  const mockPixelToRay = makeMockPixelToSceneRayUC(appObjects);
15
17
  const uc = makeToggleLabelDropTargetUC(labelDropAO);
16
18
  return {
@@ -43,7 +45,7 @@ describe("Toggle Label Drop Target UC", () => {
43
45
  it("Toggles the ray picked ID", () => {
44
46
  const { uc, dropItem, mockPick } = makeTestRig();
45
47
  expect(dropItem.targetIds).toEqual([]);
46
- mockPick.sceneRayPick.mockReturnValue({
48
+ mockPick.mockReturnValue({
47
49
  appObjectID: "target1",
48
50
  });
49
51
  uc.tryToggleFromRay(ParametricLine.Forward());
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleLabelDropTargetUC.test.js","sourceRoot":"","sources":["../../../../src/LabelDrop/UseCases/ToggleLabelDropTargetUC.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 makeMockPixelToSceneRayUC,\r\n makeMockSceneRayPickUC,\r\n} from \"../../Babylon/Mocks\";\r\nimport { makeLabelDropRepo } from \"../Entities/LabelDropRepo\";\r\nimport {\r\n makeToggleLabelDropTargetUC,\r\n ToggleLabelDropTargetUC,\r\n} from \"./ToggleLabelDropTargetUC\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const registerSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n\r\n const labelDropAO = appObjects.getOrCreate(\"repo\");\r\n\r\n const repo = makeLabelDropRepo(labelDropAO);\r\n const dropItem = repo.makeLabelDropItem(\"labelDropID\");\r\n repo.editingID = \"labelDropID\";\r\n\r\n const mockPick = makeMockSceneRayPickUC(appObjects);\r\n const mockPixelToRay = makeMockPixelToSceneRayUC(appObjects);\r\n\r\n const uc = makeToggleLabelDropTargetUC(labelDropAO);\r\n\r\n return {\r\n appObjects,\r\n repo,\r\n uc,\r\n dropItem,\r\n mockPick,\r\n registerSpy,\r\n mockPixelToRay,\r\n };\r\n}\r\n\r\ndescribe(\"Toggle Label Drop Target UC\", () => {\r\n it(\"Get it UC\", () => {\r\n const { appObjects, uc } = makeTestRig();\r\n\r\n expect(ToggleLabelDropTargetUC.get(appObjects)).toEqual(uc);\r\n });\r\n\r\n it(\"Registers as the singleton\", () => {\r\n const { uc, registerSpy } = makeTestRig();\r\n\r\n expect(registerSpy).toHaveBeenCalledWith(uc);\r\n });\r\n\r\n it(\"Toggles target ID\", () => {\r\n const { uc, dropItem } = makeTestRig();\r\n\r\n expect(dropItem.targetIds).toEqual([]);\r\n\r\n uc.toggleByID(\"target1\");\r\n\r\n expect(dropItem.targetIds).toEqual([\"target1\"]);\r\n\r\n uc.toggleByID(\"target1\");\r\n\r\n expect(dropItem.targetIds).toEqual([]);\r\n });\r\n\r\n it(\"Toggles the ray picked ID\", () => {\r\n const { uc, dropItem, mockPick } = makeTestRig();\r\n\r\n expect(dropItem.targetIds).toEqual([]);\r\n\r\n mockPick.sceneRayPick.mockReturnValue({\r\n appObjectID: \"target1\",\r\n });\r\n\r\n uc.tryToggleFromRay(ParametricLine.Forward());\r\n\r\n expect(dropItem.targetIds).toEqual([\"target1\"]);\r\n\r\n uc.tryToggleFromRay(ParametricLine.Forward());\r\n\r\n expect(dropItem.targetIds).toEqual([]);\r\n });\r\n\r\n it(\"Converts a pixel to a ray and then picks\", () => {\r\n const { uc, mockPixelToRay } = makeTestRig();\r\n\r\n uc.tryToggleFromRay = jest.fn();\r\n const mockRay = ParametricLine.FromTwoPoint(\r\n new Vector3(1, 2, 3),\r\n new Vector3(4, 5, 6)\r\n );\r\n mockPixelToRay.pixelToSceneRay.mockReturnValue(mockRay);\r\n\r\n uc.tryToggleFromPixel(new Vector2(7, 8));\r\n\r\n expect(mockPixelToRay.pixelToSceneRay).toHaveBeenCalledWith(\r\n new Vector2(7, 8)\r\n );\r\n expect(uc.tryToggleFromRay).toHaveBeenCalledWith(mockRay);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"ToggleLabelDropTargetUC.test.js","sourceRoot":"","sources":["../../../../src/LabelDrop/UseCases/ToggleLabelDropTargetUC.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 makeMockPixelToSceneRayUC,\r\n makeMockSceneRayPickUC,\r\n} from \"../../Babylon/Mocks\";\r\nimport { makeLabelDropRepo } from \"../Entities/LabelDropRepo\";\r\nimport {\r\n makeToggleLabelDropTargetUC,\r\n ToggleLabelDropTargetUC,\r\n} from \"./ToggleLabelDropTargetUC\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const registerSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n\r\n const labelDropAO = appObjects.getOrCreate(\"repo\");\r\n\r\n const repo = makeLabelDropRepo(labelDropAO);\r\n const dropItem = repo.makeLabelDropItem(\"labelDropID\");\r\n repo.editingID = \"labelDropID\";\r\n\r\n const mockRayPick = makeMockSceneRayPickUC(appObjects);\r\n const mockPick = jest.fn().mockReturnValue({ appObjectID: \"hideableObj\" });\r\n mockRayPick.sceneRayPick = mockPick;\r\n\r\n const mockPixelToRay = makeMockPixelToSceneRayUC(appObjects);\r\n\r\n const uc = makeToggleLabelDropTargetUC(labelDropAO);\r\n\r\n return {\r\n appObjects,\r\n repo,\r\n uc,\r\n dropItem,\r\n mockPick,\r\n registerSpy,\r\n mockPixelToRay,\r\n };\r\n}\r\n\r\ndescribe(\"Toggle Label Drop Target UC\", () => {\r\n it(\"Get it UC\", () => {\r\n const { appObjects, uc } = makeTestRig();\r\n\r\n expect(ToggleLabelDropTargetUC.get(appObjects)).toEqual(uc);\r\n });\r\n\r\n it(\"Registers as the singleton\", () => {\r\n const { uc, registerSpy } = makeTestRig();\r\n\r\n expect(registerSpy).toHaveBeenCalledWith(uc);\r\n });\r\n\r\n it(\"Toggles target ID\", () => {\r\n const { uc, dropItem } = makeTestRig();\r\n\r\n expect(dropItem.targetIds).toEqual([]);\r\n\r\n uc.toggleByID(\"target1\");\r\n\r\n expect(dropItem.targetIds).toEqual([\"target1\"]);\r\n\r\n uc.toggleByID(\"target1\");\r\n\r\n expect(dropItem.targetIds).toEqual([]);\r\n });\r\n\r\n it(\"Toggles the ray picked ID\", () => {\r\n const { uc, dropItem, mockPick } = makeTestRig();\r\n\r\n expect(dropItem.targetIds).toEqual([]);\r\n\r\n mockPick.mockReturnValue({\r\n appObjectID: \"target1\",\r\n });\r\n\r\n uc.tryToggleFromRay(ParametricLine.Forward());\r\n\r\n expect(dropItem.targetIds).toEqual([\"target1\"]);\r\n\r\n uc.tryToggleFromRay(ParametricLine.Forward());\r\n\r\n expect(dropItem.targetIds).toEqual([]);\r\n });\r\n\r\n it(\"Converts a pixel to a ray and then picks\", () => {\r\n const { uc, mockPixelToRay } = makeTestRig();\r\n\r\n uc.tryToggleFromRay = jest.fn();\r\n const mockRay = ParametricLine.FromTwoPoint(\r\n new Vector3(1, 2, 3),\r\n new Vector3(4, 5, 6)\r\n );\r\n mockPixelToRay.pixelToSceneRay.mockReturnValue(mockRay);\r\n\r\n uc.tryToggleFromPixel(new Vector2(7, 8));\r\n\r\n expect(mockPixelToRay.pixelToSceneRay).toHaveBeenCalledWith(\r\n new Vector2(7, 8)\r\n );\r\n expect(uc.tryToggleFromRay).toHaveBeenCalledWith(mockRay);\r\n });\r\n});\r\n"]}
@@ -1,6 +1,6 @@
1
1
  import { makeAppObjectRepo } from "@vived/core";
2
2
  import { Angle, Quaternion, Vector3 } from "@vived/core";
3
- import { MockDispatchStateChange } from "../../Dispatcher/Mocks/MockDispatchStateChange";
3
+ import { makeMockDispatchStateChange } from "../../Dispatcher";
4
4
  import { OverlayColorEnums } from "../../OverlayColor";
5
5
  import { MockUndoRedo } from "../../UndoRedo/Mocks/MockUndoRedo";
6
6
  import { makeLandmarkRepoEntity } from "../Entities/LandmarkRepo";
@@ -24,7 +24,11 @@ function makeTestRig() {
24
24
  const appObjects = makeAppObjectRepo();
25
25
  const ao = appObjects.getOrCreate("App");
26
26
  const mockUndo = new MockUndoRedo(ao);
27
- const mockDispatcher = new MockDispatchStateChange(ao);
27
+ // Override the submitAction with a jest.fn()
28
+ mockUndo.submitAction = jest.fn();
29
+ const mockDispatcher = makeMockDispatchStateChange(appObjects);
30
+ const doDispatchMock = jest.fn();
31
+ mockDispatcher.doDispatch = doDispatchMock;
28
32
  const landmarkRepoAO = appObjects.getOrCreate(landmarkRepoID);
29
33
  const landmarkRepo = makeLandmarkRepoEntity(landmarkRepoAO);
30
34
  const landmark = landmarkRepo.createLandmark("landmark1");
@@ -33,6 +37,7 @@ function makeTestRig() {
33
37
  return {
34
38
  mockUndo,
35
39
  mockDispatcher,
40
+ doDispatchMock,
36
41
  landmarkRepo,
37
42
  appObjects,
38
43
  landmarkRepoAO,
@@ -60,12 +65,12 @@ describe("Add Landmark Undo Redo action", () => {
60
65
  expect(landmarkRepo.hasForAppObject("landmark1")).toEqual(true);
61
66
  });
62
67
  it("Dispatches state changes for both the undo and redo action", () => {
63
- const { appObjects, mockDispatcher, landmark } = makeTestRig();
68
+ const { appObjects, doDispatchMock, landmark } = makeTestRig();
64
69
  const action = new AddLandmarkUndoRedo(landmark.data, appObjects);
65
70
  action.undoAction();
66
- expect(mockDispatcher.doDispatch).toHaveBeenCalledTimes(1);
71
+ expect(doDispatchMock).toHaveBeenCalledTimes(1);
67
72
  action.redoAction();
68
- expect(mockDispatcher.doDispatch).toHaveBeenCalledTimes(2);
73
+ expect(doDispatchMock).toHaveBeenCalledTimes(2);
69
74
  });
70
75
  });
71
76
  //# sourceMappingURL=AddLandmarkUndoRedo.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AddLandmarkUndoRedo.test.js","sourceRoot":"","sources":["../../../../src/Landmarks/UseCases/AddLandmarkUndoRedo.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { LandmarkDTO } from \"..\";\r\nimport { makeAppObjectRepo } from \"@vived/core\";\r\nimport { Angle, Quaternion, Vector3 } from \"@vived/core\";\r\nimport { MockDispatchStateChange } from \"../../Dispatcher/Mocks/MockDispatchStateChange\";\r\nimport { OverlayColorEnums } from \"../../OverlayColor\";\r\nimport { MockUndoRedo } from \"../../UndoRedo/Mocks/MockUndoRedo\";\r\nimport { makeLandmarkRepoEntity } from \"../Entities/LandmarkRepo\";\r\nimport { AddLandmarkUndoRedo } from \"./AddLandmarkUndoRedo\";\r\n\r\nconst landmarkRepoID = \"landmarkRepo\";\r\n\r\nfunction makeDto(id: string, parentID: string): LandmarkDTO {\r\n const q = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(10),\r\n Angle.FromDegrees(20),\r\n Angle.FromDegrees(30)\r\n );\r\n\r\n const dto: LandmarkDTO = {\r\n id,\r\n position: new Vector3(1, 2, 3).dto,\r\n size: 5,\r\n parentID,\r\n rotation: q.dto,\r\n label: \"Callout Label\",\r\n defaultLabel: \"Custom Label\",\r\n color: OverlayColorEnums.BLUE,\r\n };\r\n return dto;\r\n}\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\r\n const landmarkRepoAO = appObjects.getOrCreate(landmarkRepoID);\r\n const landmarkRepo = makeLandmarkRepoEntity(landmarkRepoAO);\r\n\r\n const landmark = landmarkRepo.createLandmark(\"landmark1\");\r\n landmark.label.custom = \"Custom label\";\r\n\r\n landmarkRepo.add(landmark);\r\n\r\n return {\r\n mockUndo,\r\n mockDispatcher,\r\n landmarkRepo,\r\n appObjects,\r\n landmarkRepoAO,\r\n landmark,\r\n };\r\n}\r\n\r\ndescribe(\"Add Landmark Undo Redo action\", () => {\r\n it(\"Submits itself to the entity\", () => {\r\n const { mockUndo, appObjects } = makeTestRig();\r\n\r\n const landmarkDTO = makeDto(\"landmark1\", landmarkRepoID);\r\n\r\n const action = new AddLandmarkUndoRedo(landmarkDTO, appObjects);\r\n expect(mockUndo.submitAction).toHaveBeenCalledWith(action);\r\n });\r\n\r\n it(\"Undo removes the landmark\", () => {\r\n const { landmarkRepo, landmark, appObjects } = makeTestRig();\r\n\r\n const action = new AddLandmarkUndoRedo(landmark.data, appObjects);\r\n\r\n action.undoAction();\r\n\r\n expect(landmarkRepo.hasForAppObject(\"landmark1\")).toEqual(false);\r\n });\r\n\r\n it(\"Redo adds the landmark back in\", () => {\r\n const { landmarkRepo, landmarkRepoAO, landmark, appObjects } =\r\n makeTestRig();\r\n\r\n const action = new AddLandmarkUndoRedo(landmark.data, appObjects);\r\n\r\n action.undoAction();\r\n action.redoAction();\r\n\r\n expect(landmarkRepo.hasForAppObject(\"landmark1\")).toEqual(true);\r\n });\r\n\r\n it(\"Dispatches state changes for both the undo and redo action\", () => {\r\n const { appObjects, mockDispatcher, landmark } = makeTestRig();\r\n\r\n const action = new AddLandmarkUndoRedo(landmark.data, 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":"AddLandmarkUndoRedo.test.js","sourceRoot":"","sources":["../../../../src/Landmarks/UseCases/AddLandmarkUndoRedo.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { LandmarkDTO } from \"..\";\r\nimport { makeAppObjectRepo } from \"@vived/core\";\r\nimport { Angle, Quaternion, Vector3 } from \"@vived/core\";\r\nimport { makeMockDispatchStateChange } from \"../../Dispatcher\";\r\nimport { OverlayColorEnums } from \"../../OverlayColor\";\r\nimport { MockUndoRedo } from \"../../UndoRedo/Mocks/MockUndoRedo\";\r\nimport { makeLandmarkRepoEntity } from \"../Entities/LandmarkRepo\";\r\nimport { AddLandmarkUndoRedo } from \"./AddLandmarkUndoRedo\";\r\n\r\nconst landmarkRepoID = \"landmarkRepo\";\r\n\r\nfunction makeDto(id: string, parentID: string): LandmarkDTO {\r\n const q = Quaternion.FromYawPitchRoll(\r\n Angle.FromDegrees(10),\r\n Angle.FromDegrees(20),\r\n Angle.FromDegrees(30)\r\n );\r\n\r\n const dto: LandmarkDTO = {\r\n id,\r\n position: new Vector3(1, 2, 3).dto,\r\n size: 5,\r\n parentID,\r\n rotation: q.dto,\r\n label: \"Callout Label\",\r\n defaultLabel: \"Custom Label\",\r\n color: OverlayColorEnums.BLUE,\r\n };\r\n return dto;\r\n}\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\r\n const landmarkRepoAO = appObjects.getOrCreate(landmarkRepoID);\r\n const landmarkRepo = makeLandmarkRepoEntity(landmarkRepoAO);\r\n\r\n const landmark = landmarkRepo.createLandmark(\"landmark1\");\r\n landmark.label.custom = \"Custom label\";\r\n\r\n landmarkRepo.add(landmark);\r\n\r\n return {\r\n mockUndo,\r\n mockDispatcher,\r\n doDispatchMock,\r\n landmarkRepo,\r\n appObjects,\r\n landmarkRepoAO,\r\n landmark,\r\n };\r\n}\r\n\r\ndescribe(\"Add Landmark Undo Redo action\", () => {\r\n it(\"Submits itself to the entity\", () => {\r\n const { mockUndo, appObjects } = makeTestRig();\r\n\r\n const landmarkDTO = makeDto(\"landmark1\", landmarkRepoID);\r\n\r\n const action = new AddLandmarkUndoRedo(landmarkDTO, appObjects);\r\n expect(mockUndo.submitAction).toHaveBeenCalledWith(action);\r\n });\r\n\r\n it(\"Undo removes the landmark\", () => {\r\n const { landmarkRepo, landmark, appObjects } = makeTestRig();\r\n\r\n const action = new AddLandmarkUndoRedo(landmark.data, appObjects);\r\n\r\n action.undoAction();\r\n\r\n expect(landmarkRepo.hasForAppObject(\"landmark1\")).toEqual(false);\r\n });\r\n\r\n it(\"Redo adds the landmark back in\", () => {\r\n const { landmarkRepo, landmarkRepoAO, landmark, appObjects } =\r\n makeTestRig();\r\n\r\n const action = new AddLandmarkUndoRedo(landmark.data, appObjects);\r\n\r\n action.undoAction();\r\n action.redoAction();\r\n\r\n expect(landmarkRepo.hasForAppObject(\"landmark1\")).toEqual(true);\r\n });\r\n\r\n it(\"Dispatches state changes for both the undo and redo action\", () => {\r\n const { appObjects, doDispatchMock, landmark } = makeTestRig();\r\n\r\n const action = new AddLandmarkUndoRedo(landmark.data, 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"]}