@vived/app 6.7.1 → 6.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +145 -1
- package/dist/cjs/BaseApp/UC/RenderCanvasUC.js.map +1 -1
- package/dist/cjs/BaseApp/UC/RenderCanvasUC.test.js.map +1 -1
- package/dist/cjs/Challenge/Factories/ChallengeFeatureFactory.js.map +1 -1
- package/dist/cjs/Challenge/Factories/ChallengeFeatureFactory.test.js.map +1 -1
- package/dist/cjs/Dispatcher/Factories/DispatcherFeatureFactory.js +4 -3
- package/dist/cjs/Dispatcher/Factories/DispatcherFeatureFactory.js.map +1 -1
- package/dist/cjs/Dispatcher/Factories/DispatcherFeatureFactory.test.js +35 -0
- package/dist/cjs/Dispatcher/Factories/DispatcherFeatureFactory.test.js.map +1 -0
- package/dist/cjs/Dispatcher/Factories/setupDispatchers.js +1 -0
- package/dist/cjs/Dispatcher/Factories/setupDispatchers.js.map +1 -1
- package/dist/cjs/Dispatcher/Factories/setupDispatchers.test.js +33 -0
- package/dist/cjs/Dispatcher/Factories/setupDispatchers.test.js.map +1 -0
- package/dist/cjs/EventSystem/Entities/EventEntity.js.map +1 -1
- package/dist/cjs/EventSystem/Entities/EventEntity.test.js +4 -1
- package/dist/cjs/EventSystem/Entities/EventEntity.test.js.map +1 -1
- package/dist/cjs/EventSystem/Entities/index.js.map +1 -1
- package/dist/cjs/EventSystem/EventSystem.integration.test.js.map +1 -1
- package/dist/cjs/EventSystem/Factories/EventSystemFeatureFactory.js.map +1 -1
- package/dist/cjs/EventSystem/Factories/EventSystemFeatureFactory.test.js.map +1 -1
- package/dist/cjs/EventSystem/Factories/index.js.map +1 -1
- package/dist/cjs/EventSystem/Mocks/MockEventEntity.js.map +1 -1
- package/dist/cjs/EventSystem/Mocks/index.js.map +1 -1
- package/dist/cjs/EventSystem/index.js.map +1 -1
- package/dist/cjs/EventSystem/types.js.map +1 -1
- package/dist/cjs/LabelDrop/Factories/LabelDropFeatureFactory.js.map +1 -1
- package/dist/cjs/LabelDrop/UseCases/SubmitLabelDropResultUC.js.map +1 -1
- package/dist/cjs/LabelDrop/UseCases/SubmitLabelDropResultUC.test.js.map +1 -1
- package/dist/cjs/LabelDrop/UseCases/index.js.map +1 -1
- package/dist/cjs/Procedure/Adapters/index.js.map +1 -1
- package/dist/cjs/Procedure/Adapters/procedureAdapter.js.map +1 -1
- package/dist/cjs/Procedure/Adapters/procedureAdapter.test.js.map +1 -1
- package/dist/cjs/Procedure/Adapters/procedureAuthoringAdapter.js.map +1 -1
- package/dist/cjs/Procedure/Adapters/procedureAuthoringAdapter.test.js.map +1 -1
- package/dist/cjs/Procedure/Adapters/procedureHintAdapter.js.map +1 -1
- package/dist/cjs/Procedure/Adapters/procedureHintAdapter.test.js.map +1 -1
- package/dist/cjs/Procedure/Adapters/procedureProgressAdapter.js.map +1 -1
- package/dist/cjs/Procedure/Adapters/procedureProgressAdapter.test.js.map +1 -1
- package/dist/cjs/Procedure/Adapters/procedureQuizResultAdapter.js.map +1 -1
- package/dist/cjs/Procedure/Adapters/procedureQuizResultAdapter.test.js +3 -1
- package/dist/cjs/Procedure/Adapters/procedureQuizResultAdapter.test.js.map +1 -1
- package/dist/cjs/Procedure/Entities/HintRegistry.js.map +1 -1
- package/dist/cjs/Procedure/Entities/HintRegistry.test.js.map +1 -1
- package/dist/cjs/Procedure/Entities/ProcedureEntity.js.map +1 -1
- package/dist/cjs/Procedure/Entities/ProcedureEntity.test.js +1 -12
- package/dist/cjs/Procedure/Entities/ProcedureEntity.test.js.map +1 -1
- package/dist/cjs/Procedure/Entities/index.js.map +1 -1
- package/dist/cjs/Procedure/Factories/ProcedureFeatureFactory.js.map +1 -1
- package/dist/cjs/Procedure/Factories/ProcedureFeatureFactory.test.js +3 -1
- package/dist/cjs/Procedure/Factories/ProcedureFeatureFactory.test.js.map +1 -1
- package/dist/cjs/Procedure/Factories/index.js.map +1 -1
- package/dist/cjs/Procedure/Mocks/MockProcedureEntity.js.map +1 -1
- package/dist/cjs/Procedure/Mocks/MockProcedurePM.js.map +1 -1
- package/dist/cjs/Procedure/Mocks/index.js.map +1 -1
- package/dist/cjs/Procedure/PM/ProcedurePM.js.map +1 -1
- package/dist/cjs/Procedure/PM/ProcedurePM.test.js +1 -1
- package/dist/cjs/Procedure/PM/ProcedurePM.test.js.map +1 -1
- package/dist/cjs/Procedure/PM/index.js.map +1 -1
- package/dist/cjs/Procedure/ProcedureEventSystem.integration.test.js.map +1 -1
- package/dist/cjs/Procedure/UCs/AddProcedureEventUC.js.map +1 -1
- package/dist/cjs/Procedure/UCs/AddProcedureEventUC.test.js +1 -4
- package/dist/cjs/Procedure/UCs/AddProcedureEventUC.test.js.map +1 -1
- package/dist/cjs/Procedure/UCs/MoveProcedureEventDownUC.js.map +1 -1
- package/dist/cjs/Procedure/UCs/MoveProcedureEventDownUC.test.js.map +1 -1
- package/dist/cjs/Procedure/UCs/MoveProcedureEventUpUC.js.map +1 -1
- package/dist/cjs/Procedure/UCs/MoveProcedureEventUpUC.test.js.map +1 -1
- package/dist/cjs/Procedure/UCs/RecordProcedureEventUC.js.map +1 -1
- package/dist/cjs/Procedure/UCs/RecordProcedureEventUC.test.js.map +1 -1
- package/dist/cjs/Procedure/UCs/RecordProcedureSessionUC.js.map +1 -1
- package/dist/cjs/Procedure/UCs/RecordProcedureSessionUC.test.js +22 -4
- package/dist/cjs/Procedure/UCs/RecordProcedureSessionUC.test.js.map +1 -1
- package/dist/cjs/Procedure/UCs/RemoveProcedureEventUC.js.map +1 -1
- package/dist/cjs/Procedure/UCs/RemoveProcedureEventUC.test.js.map +1 -1
- package/dist/cjs/Procedure/UCs/ResetProcedureProgressUC.js.map +1 -1
- package/dist/cjs/Procedure/UCs/ResetProcedureProgressUC.test.js.map +1 -1
- package/dist/cjs/Procedure/UCs/SerializeProcedure.js.map +1 -1
- package/dist/cjs/Procedure/UCs/SerializeProcedure.test.js +6 -1
- package/dist/cjs/Procedure/UCs/SerializeProcedure.test.js.map +1 -1
- package/dist/cjs/Procedure/UCs/SetProcedureIsQuizUC.js.map +1 -1
- package/dist/cjs/Procedure/UCs/SetProcedureIsQuizUC.test.js.map +1 -1
- package/dist/cjs/Procedure/UCs/SetProcedureOrderMattersUC.js.map +1 -1
- package/dist/cjs/Procedure/UCs/SetProcedureOrderMattersUC.test.js.map +1 -1
- package/dist/cjs/Procedure/UCs/SetProcedureShowHintsUC.js.map +1 -1
- package/dist/cjs/Procedure/UCs/SetProcedureShowHintsUC.test.js.map +1 -1
- package/dist/cjs/Procedure/UCs/SubmitProcedureQuizUC.js.map +1 -1
- package/dist/cjs/Procedure/UCs/SubmitProcedureQuizUC.test.js.map +1 -1
- package/dist/cjs/Procedure/UCs/UpdateProcedureEventsUCHook.js.map +1 -1
- package/dist/cjs/Procedure/UCs/UpdateProcedureEventsUCHook.test.js.map +1 -1
- package/dist/cjs/Procedure/UCs/index.js.map +1 -1
- package/dist/cjs/Procedure/index.js.map +1 -1
- package/dist/cjs/Procedure/types.js.map +1 -1
- package/dist/cjs/RequestHandler/UC/SetThemeColorUC.test.js +9 -0
- package/dist/cjs/RequestHandler/UC/SetThemeColorUC.test.js.map +1 -1
- package/dist/cjs/ThemeColors/Entities/ThemeColors.js +24 -0
- package/dist/cjs/ThemeColors/Entities/ThemeColors.js.map +1 -1
- package/dist/cjs/ThemeColors/Entities/ThemeColors.test.js +20 -0
- package/dist/cjs/ThemeColors/Entities/ThemeColors.test.js.map +1 -1
- package/dist/cjs/TouchController/UC/UpdateTouchInoutBound.test.js.map +1 -1
- package/dist/cjs/TouchController/UC/UpdateTouchInputBound.js.map +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/BaseApp/UC/RenderCanvasUC.js.map +1 -1
- package/dist/esm/BaseApp/UC/RenderCanvasUC.test.js.map +1 -1
- package/dist/esm/Challenge/Factories/ChallengeFeatureFactory.js.map +1 -1
- package/dist/esm/Challenge/Factories/ChallengeFeatureFactory.test.js.map +1 -1
- package/dist/esm/Dispatcher/Factories/DispatcherFeatureFactory.js +5 -4
- package/dist/esm/Dispatcher/Factories/DispatcherFeatureFactory.js.map +1 -1
- package/dist/esm/Dispatcher/Factories/DispatcherFeatureFactory.test.js +33 -0
- package/dist/esm/Dispatcher/Factories/DispatcherFeatureFactory.test.js.map +1 -0
- package/dist/esm/Dispatcher/Factories/setupDispatchers.js +2 -1
- package/dist/esm/Dispatcher/Factories/setupDispatchers.js.map +1 -1
- package/dist/esm/Dispatcher/Factories/setupDispatchers.test.js +31 -0
- package/dist/esm/Dispatcher/Factories/setupDispatchers.test.js.map +1 -0
- package/dist/esm/EventSystem/Entities/EventEntity.js.map +1 -1
- package/dist/esm/EventSystem/Entities/EventEntity.test.js +4 -1
- package/dist/esm/EventSystem/Entities/EventEntity.test.js.map +1 -1
- package/dist/esm/EventSystem/Entities/index.js.map +1 -1
- package/dist/esm/EventSystem/EventSystem.integration.test.js.map +1 -1
- package/dist/esm/EventSystem/Factories/EventSystemFeatureFactory.js.map +1 -1
- package/dist/esm/EventSystem/Factories/EventSystemFeatureFactory.test.js.map +1 -1
- package/dist/esm/EventSystem/Factories/index.js.map +1 -1
- package/dist/esm/EventSystem/Mocks/MockEventEntity.js.map +1 -1
- package/dist/esm/EventSystem/Mocks/index.js.map +1 -1
- package/dist/esm/EventSystem/index.js.map +1 -1
- package/dist/esm/EventSystem/types.js.map +1 -1
- package/dist/esm/LabelDrop/Factories/LabelDropFeatureFactory.js.map +1 -1
- package/dist/esm/LabelDrop/UseCases/SubmitLabelDropResultUC.js.map +1 -1
- package/dist/esm/LabelDrop/UseCases/SubmitLabelDropResultUC.test.js.map +1 -1
- package/dist/esm/LabelDrop/UseCases/index.js.map +1 -1
- package/dist/esm/Procedure/Adapters/index.js.map +1 -1
- package/dist/esm/Procedure/Adapters/procedureAdapter.js.map +1 -1
- package/dist/esm/Procedure/Adapters/procedureAdapter.test.js.map +1 -1
- package/dist/esm/Procedure/Adapters/procedureAuthoringAdapter.js.map +1 -1
- package/dist/esm/Procedure/Adapters/procedureAuthoringAdapter.test.js.map +1 -1
- package/dist/esm/Procedure/Adapters/procedureHintAdapter.js.map +1 -1
- package/dist/esm/Procedure/Adapters/procedureHintAdapter.test.js.map +1 -1
- package/dist/esm/Procedure/Adapters/procedureProgressAdapter.js.map +1 -1
- package/dist/esm/Procedure/Adapters/procedureProgressAdapter.test.js.map +1 -1
- package/dist/esm/Procedure/Adapters/procedureQuizResultAdapter.js.map +1 -1
- package/dist/esm/Procedure/Adapters/procedureQuizResultAdapter.test.js +3 -1
- package/dist/esm/Procedure/Adapters/procedureQuizResultAdapter.test.js.map +1 -1
- package/dist/esm/Procedure/Entities/HintRegistry.js.map +1 -1
- package/dist/esm/Procedure/Entities/HintRegistry.test.js.map +1 -1
- package/dist/esm/Procedure/Entities/ProcedureEntity.js.map +1 -1
- package/dist/esm/Procedure/Entities/ProcedureEntity.test.js +1 -12
- package/dist/esm/Procedure/Entities/ProcedureEntity.test.js.map +1 -1
- package/dist/esm/Procedure/Entities/index.js.map +1 -1
- package/dist/esm/Procedure/Factories/ProcedureFeatureFactory.js.map +1 -1
- package/dist/esm/Procedure/Factories/ProcedureFeatureFactory.test.js +5 -3
- package/dist/esm/Procedure/Factories/ProcedureFeatureFactory.test.js.map +1 -1
- package/dist/esm/Procedure/Factories/index.js.map +1 -1
- package/dist/esm/Procedure/Mocks/MockProcedureEntity.js.map +1 -1
- package/dist/esm/Procedure/Mocks/MockProcedurePM.js.map +1 -1
- package/dist/esm/Procedure/Mocks/index.js.map +1 -1
- package/dist/esm/Procedure/PM/ProcedurePM.js.map +1 -1
- package/dist/esm/Procedure/PM/ProcedurePM.test.js +2 -2
- package/dist/esm/Procedure/PM/ProcedurePM.test.js.map +1 -1
- package/dist/esm/Procedure/PM/index.js.map +1 -1
- package/dist/esm/Procedure/ProcedureEventSystem.integration.test.js +2 -2
- package/dist/esm/Procedure/ProcedureEventSystem.integration.test.js.map +1 -1
- package/dist/esm/Procedure/UCs/AddProcedureEventUC.js.map +1 -1
- package/dist/esm/Procedure/UCs/AddProcedureEventUC.test.js +3 -6
- package/dist/esm/Procedure/UCs/AddProcedureEventUC.test.js.map +1 -1
- package/dist/esm/Procedure/UCs/MoveProcedureEventDownUC.js.map +1 -1
- package/dist/esm/Procedure/UCs/MoveProcedureEventDownUC.test.js +2 -2
- package/dist/esm/Procedure/UCs/MoveProcedureEventDownUC.test.js.map +1 -1
- package/dist/esm/Procedure/UCs/MoveProcedureEventUpUC.js.map +1 -1
- package/dist/esm/Procedure/UCs/MoveProcedureEventUpUC.test.js +2 -2
- package/dist/esm/Procedure/UCs/MoveProcedureEventUpUC.test.js.map +1 -1
- package/dist/esm/Procedure/UCs/RecordProcedureEventUC.js.map +1 -1
- package/dist/esm/Procedure/UCs/RecordProcedureEventUC.test.js +2 -2
- package/dist/esm/Procedure/UCs/RecordProcedureEventUC.test.js.map +1 -1
- package/dist/esm/Procedure/UCs/RecordProcedureSessionUC.js.map +1 -1
- package/dist/esm/Procedure/UCs/RecordProcedureSessionUC.test.js +22 -4
- package/dist/esm/Procedure/UCs/RecordProcedureSessionUC.test.js.map +1 -1
- package/dist/esm/Procedure/UCs/RemoveProcedureEventUC.js.map +1 -1
- package/dist/esm/Procedure/UCs/RemoveProcedureEventUC.test.js +2 -2
- package/dist/esm/Procedure/UCs/RemoveProcedureEventUC.test.js.map +1 -1
- package/dist/esm/Procedure/UCs/ResetProcedureProgressUC.js.map +1 -1
- package/dist/esm/Procedure/UCs/ResetProcedureProgressUC.test.js +2 -2
- package/dist/esm/Procedure/UCs/ResetProcedureProgressUC.test.js.map +1 -1
- package/dist/esm/Procedure/UCs/SerializeProcedure.js.map +1 -1
- package/dist/esm/Procedure/UCs/SerializeProcedure.test.js +8 -3
- package/dist/esm/Procedure/UCs/SerializeProcedure.test.js.map +1 -1
- package/dist/esm/Procedure/UCs/SetProcedureIsQuizUC.js.map +1 -1
- package/dist/esm/Procedure/UCs/SetProcedureIsQuizUC.test.js +1 -1
- package/dist/esm/Procedure/UCs/SetProcedureIsQuizUC.test.js.map +1 -1
- package/dist/esm/Procedure/UCs/SetProcedureOrderMattersUC.js.map +1 -1
- package/dist/esm/Procedure/UCs/SetProcedureOrderMattersUC.test.js +1 -1
- package/dist/esm/Procedure/UCs/SetProcedureOrderMattersUC.test.js.map +1 -1
- package/dist/esm/Procedure/UCs/SetProcedureShowHintsUC.js.map +1 -1
- package/dist/esm/Procedure/UCs/SetProcedureShowHintsUC.test.js +1 -1
- package/dist/esm/Procedure/UCs/SetProcedureShowHintsUC.test.js.map +1 -1
- package/dist/esm/Procedure/UCs/SubmitProcedureQuizUC.js.map +1 -1
- package/dist/esm/Procedure/UCs/SubmitProcedureQuizUC.test.js +2 -2
- package/dist/esm/Procedure/UCs/SubmitProcedureQuizUC.test.js.map +1 -1
- package/dist/esm/Procedure/UCs/UpdateProcedureEventsUCHook.js.map +1 -1
- package/dist/esm/Procedure/UCs/UpdateProcedureEventsUCHook.test.js +1 -1
- package/dist/esm/Procedure/UCs/UpdateProcedureEventsUCHook.test.js.map +1 -1
- package/dist/esm/Procedure/UCs/index.js.map +1 -1
- package/dist/esm/Procedure/index.js.map +1 -1
- package/dist/esm/Procedure/types.js.map +1 -1
- package/dist/esm/RequestHandler/UC/SetThemeColorUC.test.js +9 -0
- package/dist/esm/RequestHandler/UC/SetThemeColorUC.test.js.map +1 -1
- package/dist/esm/ThemeColors/Entities/ThemeColors.js +24 -0
- package/dist/esm/ThemeColors/Entities/ThemeColors.js.map +1 -1
- package/dist/esm/ThemeColors/Entities/ThemeColors.test.js +20 -0
- package/dist/esm/ThemeColors/Entities/ThemeColors.test.js.map +1 -1
- package/dist/esm/TouchController/UC/UpdateTouchInoutBound.test.js.map +1 -1
- package/dist/esm/TouchController/UC/UpdateTouchInputBound.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/types/Dispatcher/Factories/DispatcherFeatureFactory.d.ts +3 -3
- package/dist/types/Dispatcher/Factories/DispatcherFeatureFactory.d.ts.map +1 -1
- package/dist/types/Dispatcher/Factories/DispatcherFeatureFactory.test.d.ts +2 -0
- package/dist/types/Dispatcher/Factories/DispatcherFeatureFactory.test.d.ts.map +1 -0
- package/dist/types/Dispatcher/Factories/setupDispatchers.d.ts.map +1 -1
- package/dist/types/Dispatcher/Factories/setupDispatchers.test.d.ts +2 -0
- package/dist/types/Dispatcher/Factories/setupDispatchers.test.d.ts.map +1 -0
- package/dist/types/Procedure/Entities/ProcedureEntity.d.ts.map +1 -1
- package/dist/types/Procedure/Mocks/MockProcedureEntity.d.ts.map +1 -1
- package/dist/types/Procedure/UCs/AddProcedureEventUC.d.ts.map +1 -1
- package/dist/types/Procedure/UCs/RecordProcedureSessionUC.d.ts.map +1 -1
- package/dist/types/Procedure/UCs/SetProcedureIsQuizUC.d.ts.map +1 -1
- package/dist/types/Procedure/UCs/SubmitProcedureQuizUC.d.ts.map +1 -1
- package/dist/types/Procedure/types.d.ts.map +1 -1
- package/dist/types/ThemeColors/Entities/ThemeColors.d.ts +12 -0
- package/dist/types/ThemeColors/Entities/ThemeColors.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/Dispatcher/README.md +9 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProcedureFeatureFactory.js","sourceRoot":"","sources":["../../../../src/Procedure/Factories/ProcedureFeatureFactory.ts"],"names":[],"mappings":"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","sourcesContent":["import { DomainFactory, AppObjectRepo } from \"@vived/core\";\
|
|
1
|
+
{"version":3,"file":"ProcedureFeatureFactory.js","sourceRoot":"","sources":["../../../../src/Procedure/Factories/ProcedureFeatureFactory.ts"],"names":[],"mappings":";;;AAsHA,kEAKC;AA3HD,sCAA2D;AAC3D,+CAAkD;AAClD,wEAAqE;AACrE,iEAGqC;AACrC,2DAA4D;AAC5D,oEAAqE;AACrE,0EAA2E;AAC3E,8EAA+E;AAC/E,kEAAmE;AACnE,0EAA2E;AAC3E,0EAA2E;AAC3E,8EAA+E;AAC/E,kFAAmF;AACnF,4EAA6E;AAC7E,sEAAuE;AACvE,wEAAyE;AACzE,oFAAqF;AACrF,8EAA+E;AAC/E,mDAAiE;AAEjE,MAAa,uBAAwB,SAAQ,oBAAa;IAA1D;;QACE,gBAAW,GAAG,yBAAyB,CAAC;IAuF1C,CAAC;IArFC,aAAa;QACX,IAAA,qCAAmB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,IAAA,+BAAgB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED,QAAQ;QACN,IAAA,6CAAuB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,IAAA,mDAA0B,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAA,uDAA4B,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAA,2CAAsB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvC,IAAA,mDAA0B,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAA,mDAA0B,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAA,uDAA4B,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAA,2DAA8B,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/C,IAAA,qDAA2B,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAA,+CAAwB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,IAAA,iDAAyB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAA,6DAA+B,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChD,IAAA,uDAA4B,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IAED,QAAQ;QACN,IAAA,6BAAe,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAED,UAAU;QACR,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,0BAA0B,EAAE,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACK,uBAAuB;QAC7B,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAClD,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;YACtE,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,yBAAW,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CACP,0EAA0E,CAC3E,CAAC;YACF,OAAO;QACT,CAAC;QAED,eAAe,CAAC,sBAAsB,CAAC,CAAC,OAAO,EAAE,EAAE,CACjD,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,CACtC,CAAC;IACJ,CAAC;IAEO,0BAA0B;QAChC,MAAM,eAAe,GAAG,2BAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7D,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAElD,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CACP,oFAAoF,CACrF,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;YACnE,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,eAAe,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,2CAA2C,KAAK,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,kBAAkB;QAChB,OAAO,iCAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,cAAc;QACZ,OAAO,yBAAW,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;CACF;AAxFD,0DAwFC;AAEY,QAAA,0BAA0B,GAAG;IACxC,mBAAmB,EAAE,iCAAe,CAAC,IAAI;IACzC,eAAe,EAAE,yBAAW,CAAC,IAAI;CAClC,CAAC;AAEF,SAAgB,2BAA2B,CACzC,UAAyB;IAEzB,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACtD,OAAO,IAAI,uBAAuB,CAAC,SAAS,CAAC,CAAC;AAChD,CAAC","sourcesContent":["import { DomainFactory, AppObjectRepo } from \"@vived/core\";\nimport { ChallengeEntity } from \"../../Challenge\";\nimport { EventEntity } from \"../../EventSystem/Entities/EventEntity\";\nimport {\n makeProcedureEntity,\n ProcedureEntity,\n} from \"../Entities/ProcedureEntity\";\nimport { makeHintRegistry } from \"../Entities/HintRegistry\";\nimport { makeAddProcedureEventUC } from \"../UCs/AddProcedureEventUC\";\nimport { makeRecordProcedureEventUC } from \"../UCs/RecordProcedureEventUC\";\nimport { makeResetProcedureProgressUC } from \"../UCs/ResetProcedureProgressUC\";\nimport { makeSerializeProcedure } from \"../UCs/SerializeProcedure\";\nimport { makeRemoveProcedureEventUC } from \"../UCs/RemoveProcedureEventUC\";\nimport { makeMoveProcedureEventUpUC } from \"../UCs/MoveProcedureEventUpUC\";\nimport { makeMoveProcedureEventDownUC } from \"../UCs/MoveProcedureEventDownUC\";\nimport { makeSetProcedureOrderMattersUC } from \"../UCs/SetProcedureOrderMattersUC\";\nimport { makeSetProcedureShowHintsUC } from \"../UCs/SetProcedureShowHintsUC\";\nimport { makeSetProcedureIsQuizUC } from \"../UCs/SetProcedureIsQuizUC\";\nimport { makeSubmitProcedureQuizUC } from \"../UCs/SubmitProcedureQuizUC\";\nimport { makeUpdateProcedureEventsUCHook } from \"../UCs/UpdateProcedureEventsUCHook\";\nimport { makeRecordProcedureSessionUC } from \"../UCs/RecordProcedureSessionUC\";\nimport { makeProcedurePM, ProcedurePM } from \"../PM/ProcedurePM\";\n\nexport class ProcedureFeatureFactory extends DomainFactory {\n factoryName = \"ProcedureFeatureFactory\";\n\n setupEntities(): void {\n makeProcedureEntity(this.appObject);\n makeHintRegistry(this.appObject);\n }\n\n setupUCs(): void {\n makeAddProcedureEventUC(this.appObject);\n makeRecordProcedureEventUC(this.appObject);\n makeResetProcedureProgressUC(this.appObject);\n makeSerializeProcedure(this.appObject);\n makeRemoveProcedureEventUC(this.appObject);\n makeMoveProcedureEventUpUC(this.appObject);\n makeMoveProcedureEventDownUC(this.appObject);\n makeSetProcedureOrderMattersUC(this.appObject);\n makeSetProcedureShowHintsUC(this.appObject);\n makeSetProcedureIsQuizUC(this.appObject);\n makeSubmitProcedureQuizUC(this.appObject);\n makeUpdateProcedureEventsUCHook(this.appObject);\n makeRecordProcedureSessionUC(this.appObject);\n }\n\n setupPMs(): void {\n makeProcedurePM(this.appObject);\n }\n\n finalSetup(): void {\n this.wireEventCategoryLookup();\n this.registerProcedureChallenge();\n }\n\n /**\n * Classification is derived at evaluation time from the EventSystem Registry\n * (#53): hand the entity a lookup rather than copying categories into it, so\n * events registered later (and slides authored earlier) are classified too.\n */\n private wireEventCategoryLookup(): void {\n const procedureEntity = this.getProcedureEntity();\n if (!procedureEntity) {\n this.warn(\"ProcedureEntity not found - cannot wire event categories\");\n return;\n }\n\n const eventEntity = EventEntity.get(this.appObjects);\n if (!eventEntity) {\n this.warn(\n \"EventEntity not found - every procedure step will be treated as assessed\",\n );\n return;\n }\n\n procedureEntity.setEventCategoryLookup((eventId) =>\n eventEntity.getEventCategory(eventId),\n );\n }\n\n private registerProcedureChallenge(): void {\n const challengeEntity = ChallengeEntity.get(this.appObjects);\n const procedureEntity = this.getProcedureEntity();\n\n if (!challengeEntity) {\n this.warn(\n \"ChallengeEntity not found - Procedure challenge will not be available in selection\",\n );\n return;\n }\n\n if (!procedureEntity) {\n this.warn(\"ProcedureEntity not found - cannot register challenge\");\n return;\n }\n\n try {\n challengeEntity.registerChallenge(procedureEntity);\n } catch (error) {\n this.warn(`Failed to register Procedure challenge: ${error}`);\n }\n }\n\n getProcedureEntity(): ProcedureEntity | undefined {\n return ProcedureEntity.get(this.appObjects);\n }\n\n getProcedurePM(): ProcedurePM | undefined {\n return ProcedurePM.get(this.appObjects);\n }\n}\n\nexport const ProcedureFeatureComponents = {\n procedureEntityType: ProcedureEntity.type,\n procedurePMType: ProcedurePM.type,\n};\n\nexport function makeProcedureFeatureFactory(\n appObjects: AppObjectRepo,\n): ProcedureFeatureFactory {\n const appObject = appObjects.getOrCreate(\"Procedure\");\n return new ProcedureFeatureFactory(appObject);\n}\n"]}
|
|
@@ -28,7 +28,9 @@ describe("ProcedureFeatureFactory", () => {
|
|
|
28
28
|
let factory;
|
|
29
29
|
beforeEach(() => {
|
|
30
30
|
jest.clearAllMocks();
|
|
31
|
-
jest
|
|
31
|
+
jest
|
|
32
|
+
.mocked(Challenge_1.ChallengeEntity.get)
|
|
33
|
+
.mockReturnValue(mockChallengeEntityInstance);
|
|
32
34
|
appObjects = (0, core_1.makeAppObjectRepo)();
|
|
33
35
|
// Create a real EventEntity singleton so PM and UCs can find it
|
|
34
36
|
const eventAppObject = appObjects.getOrCreate("EventSystem");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProcedureFeatureFactory.test.js","sourceRoot":"","sources":["../../../../src/Procedure/Factories/ProcedureFeatureFactory.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObjectRepo, makeAppObjectRepo, DomainFactoryRepo } from \"@vived/core\";\r\nimport { ChallengeEntity } from \"../../Challenge\";\r\nimport { EventEntity, makeEventEntity } from \"../../EventSystem/Entities/EventEntity\";\r\nimport {\r\n makeProcedureFeatureFactory,\r\n ProcedureFeatureFactory,\r\n} from \"./ProcedureFeatureFactory\";\r\nimport { ProcedureEntity } from \"../Entities/ProcedureEntity\";\r\nimport { AddProcedureEventUC } from \"../UCs/AddProcedureEventUC\";\r\nimport { SerializeProcedure } from \"../UCs/SerializeProcedure\";\r\nimport { SetProcedureOrderMattersUC } from \"../UCs/SetProcedureOrderMattersUC\";\r\nimport { SetProcedureShowHintsUC } from \"../UCs/SetProcedureShowHintsUC\";\r\nimport { SetProcedureIsQuizUC } from \"../UCs/SetProcedureIsQuizUC\";\r\n\r\njest.mock(\"../../Challenge\", () => ({\r\n ChallengeEntity: {\r\n get: jest.fn(),\r\n },\r\n}));\r\n\r\nconst mockRegisterChallenge = jest.fn();\r\nconst mockChallengeEntityInstance = {\r\n registerChallenge: mockRegisterChallenge,\r\n addChangeObserver: jest.fn(),\r\n removeChangeObserver: jest.fn(),\r\n selectedChallenge: null,\r\n};\r\n\r\ndescribe(\"ProcedureFeatureFactory\", () => {\r\n let appObjects: AppObjectRepo;\r\n let domainFactoryRepo: DomainFactoryRepo;\r\n let factory: ProcedureFeatureFactory;\r\n\r\n beforeEach(() => {\r\n jest.clearAllMocks();\r\n\r\n jest.mocked(ChallengeEntity.get).mockReturnValue(\r\n mockChallengeEntityInstance as any,\r\n );\r\n\r\n appObjects = makeAppObjectRepo();\r\n\r\n // Create a real EventEntity singleton so PM and UCs can find it\r\n const eventAppObject = appObjects.getOrCreate(\"EventSystem\");\r\n const eventEntity = makeEventEntity(eventAppObject);\r\n appObjects.registerSingleton(eventEntity);\r\n\r\n domainFactoryRepo = new DomainFactoryRepo(\r\n appObjects.getOrCreate(\"DomainFactory\"),\r\n );\r\n factory = makeProcedureFeatureFactory(appObjects);\r\n\r\n domainFactoryRepo.setupDomain();\r\n });\r\n\r\n it(\"creates factory with correct name\", () => {\r\n expect(factory.factoryName).toBe(\"ProcedureFeatureFactory\");\r\n });\r\n\r\n it(\"uses correct AppObject name\", () => {\r\n const procedureAppObject = appObjects.getOrCreate(\"Procedure\");\r\n expect(procedureAppObject).toBeDefined();\r\n });\r\n\r\n it(\"creates ProcedureEntity singleton\", () => {\r\n expect(factory.getProcedureEntity()).toBeDefined();\r\n expect(factory.getProcedureEntity()?.challengeID).toBe(\"PROCEDURE\");\r\n });\r\n\r\n it(\"registers ProcedureEntity as singleton\", () => {\r\n const entity = ProcedureEntity.get(appObjects);\r\n expect(entity).toBeDefined();\r\n expect(entity).toBe(factory.getProcedureEntity());\r\n });\r\n\r\n it(\"creates all required Use Cases\", () => {\r\n const addEventUC = AddProcedureEventUC.get(appObjects);\r\n expect(addEventUC).toBeDefined();\r\n\r\n const serializeUC = SerializeProcedure.get(appObjects);\r\n expect(serializeUC).toBeDefined();\r\n\r\n const setOrderMattersUC = SetProcedureOrderMattersUC.get(appObjects);\r\n expect(setOrderMattersUC).toBeDefined();\r\n\r\n const setShowHintsUC = SetProcedureShowHintsUC.get(appObjects);\r\n expect(setShowHintsUC).toBeDefined();\r\n\r\n const setIsQuizUC = SetProcedureIsQuizUC.get(appObjects);\r\n expect(setIsQuizUC).toBeDefined();\r\n });\r\n\r\n it(\"Use Cases can find their entity\", () => {\r\n const addEventUC = AddProcedureEventUC.get(appObjects);\r\n const entity = factory.getProcedureEntity();\r\n\r\n addEventUC!.addEvent(\"test_event\");\r\n expect(entity!.eventIds).toContain(\"test_event\");\r\n });\r\n\r\n it(\"configuration Use Cases can modify entity properties\", () => {\r\n const entity = factory.getProcedureEntity()!;\r\n const setOrderMattersUC = SetProcedureOrderMattersUC.get(appObjects)!;\r\n const setShowHintsUC = SetProcedureShowHintsUC.get(appObjects)!;\r\n const setIsQuizUC = SetProcedureIsQuizUC.get(appObjects)!;\r\n\r\n expect(entity.orderMatters).toBe(true);\r\n expect(entity.showHints).toBe(true);\r\n expect(entity.isQuiz).toBe(false);\r\n\r\n setOrderMattersUC.setOrderMatters(false);\r\n expect(entity.orderMatters).toBe(false);\r\n\r\n setShowHintsUC.setShowHints(false);\r\n expect(entity.showHints).toBe(false);\r\n\r\n setIsQuizUC.setIsQuiz(true);\r\n expect(entity.isQuiz).toBe(true);\r\n });\r\n\r\n it(\"creates ProcedurePM singleton\", () => {\r\n expect(factory.getProcedurePM()).toBeDefined();\r\n });\r\n\r\n it(\"PM can access entity state\", () => {\r\n const pm = factory.getProcedurePM();\r\n const entity = factory.getProcedureEntity();\r\n\r\n entity!.addEventId(\"test_event\");\r\n\r\n const vm = pm!.lastVM;\r\n expect(vm!.eventIds).toContain(\"test_event\");\r\n });\r\n\r\n it(\"registers procedure challenge with ChallengeEntity\", () => {\r\n expect(mockRegisterChallenge).toHaveBeenCalledWith(\r\n factory.getProcedureEntity(),\r\n );\r\n });\r\n\r\n it(\"injects the EventEntity category lookup into the entity (#53)\", () => {\r\n const eventEntity = EventEntity.get(appObjects)!;\r\n const entity = factory.getProcedureEntity()!;\r\n\r\n // Registered after setup: the lookup is evaluated at call time, not cached.\r\n eventEntity.register(\"navigate-to-overhead\", \"Go to overhead\", {\r\n category: \"instructional\",\r\n });\r\n eventEntity.register(\"lever\", \"Pull lever\");\r\n\r\n expect(entity.getEventCategory(\"navigate-to-overhead\")).toBe(\r\n \"instructional\",\r\n );\r\n expect(entity.getEventCategory(\"lever\")).toBe(\"assessed\");\r\n expect(entity.getEventCategory(\"never-registered\")).toBe(\"assessed\");\r\n });\r\n\r\n it(\"warns and falls back to an assessed lookup when EventEntity is absent (#53)\", () => {\r\n const submitWarningSpy = jest.fn();\r\n const newAppObjects = makeAppObjectRepo();\r\n newAppObjects.submitWarning = submitWarningSpy;\r\n\r\n // No EventEntity registered on this repo: the category lookup cannot wire.\r\n const newDomainFactoryRepo = new DomainFactoryRepo(\r\n newAppObjects.getOrCreate(\"DomainFactory\"),\r\n );\r\n const newFactory = makeProcedureFeatureFactory(newAppObjects);\r\n newDomainFactoryRepo.setupDomain();\r\n\r\n expect(submitWarningSpy).toHaveBeenCalledWith(\r\n expect.stringContaining(\"Procedure\"),\r\n expect.stringContaining(\"EventEntity not found\"),\r\n );\r\n\r\n // The entity keeps its default lookup, so every step is treated as assessed.\r\n const entity = newFactory.getProcedureEntity()!;\r\n expect(entity.getEventCategory(\"anything\")).toBe(\"assessed\");\r\n });\r\n\r\n it(\"handles missing ChallengeEntity gracefully\", () => {\r\n jest.mocked(ChallengeEntity.get).mockReturnValueOnce(undefined);\r\n\r\n const submitWarningSpy = jest.fn();\r\n const newAppObjects = makeAppObjectRepo();\r\n newAppObjects.submitWarning = submitWarningSpy;\r\n\r\n const newDomainFactoryRepo = new DomainFactoryRepo(\r\n newAppObjects.getOrCreate(\"DomainFactory\"),\r\n );\r\n makeProcedureFeatureFactory(newAppObjects);\r\n newDomainFactoryRepo.setupDomain();\r\n\r\n expect(submitWarningSpy).toHaveBeenCalledWith(\r\n expect.stringContaining(\"Procedure\"),\r\n expect.stringContaining(\"ChallengeEntity not found\"),\r\n );\r\n });\r\n\r\n it(\"all components can communicate\", () => {\r\n const entity = factory.getProcedureEntity()!;\r\n const pm = factory.getProcedurePM()!;\r\n const addEventUC = AddProcedureEventUC.get(appObjects)!;\r\n\r\n addEventUC.addEvent(\"integration_test_event\");\r\n\r\n expect(entity.eventIds).toContain(\"integration_test_event\");\r\n\r\n const vm = pm.lastVM!;\r\n expect(vm.eventIds).toContain(\"integration_test_event\");\r\n });\r\n\r\n it(\"provides access to created components\", () => {\r\n expect(factory.getProcedureEntity()).toBeInstanceOf(Object);\r\n expect(factory.getProcedurePM()).toBeInstanceOf(Object);\r\n });\r\n\r\n it(\"returns undefined for components when not properly initialized\", () => {\r\n const isolatedAppObjects = makeAppObjectRepo();\r\n const isolatedAppObject = isolatedAppObjects.getOrCreate(\"Isolated\");\r\n const isolatedFactory = new ProcedureFeatureFactory(isolatedAppObject);\r\n\r\n expect(isolatedFactory.getProcedureEntity()).toBeUndefined();\r\n });\r\n});\r\n"]}
|
|
1
|
+
{"version":3,"file":"ProcedureFeatureFactory.test.js","sourceRoot":"","sources":["../../../../src/Procedure/Factories/ProcedureFeatureFactory.test.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AppObjectRepo,\n makeAppObjectRepo,\n DomainFactoryRepo,\n} from \"@vived/core\";\nimport { ChallengeEntity } from \"../../Challenge\";\nimport {\n EventEntity,\n makeEventEntity,\n} from \"../../EventSystem/Entities/EventEntity\";\nimport {\n makeProcedureFeatureFactory,\n ProcedureFeatureFactory,\n} from \"./ProcedureFeatureFactory\";\nimport { ProcedureEntity } from \"../Entities/ProcedureEntity\";\nimport { AddProcedureEventUC } from \"../UCs/AddProcedureEventUC\";\nimport { SerializeProcedure } from \"../UCs/SerializeProcedure\";\nimport { SetProcedureOrderMattersUC } from \"../UCs/SetProcedureOrderMattersUC\";\nimport { SetProcedureShowHintsUC } from \"../UCs/SetProcedureShowHintsUC\";\nimport { SetProcedureIsQuizUC } from \"../UCs/SetProcedureIsQuizUC\";\n\njest.mock(\"../../Challenge\", () => ({\n ChallengeEntity: {\n get: jest.fn(),\n },\n}));\n\nconst mockRegisterChallenge = jest.fn();\nconst mockChallengeEntityInstance = {\n registerChallenge: mockRegisterChallenge,\n addChangeObserver: jest.fn(),\n removeChangeObserver: jest.fn(),\n selectedChallenge: null,\n};\n\ndescribe(\"ProcedureFeatureFactory\", () => {\n let appObjects: AppObjectRepo;\n let domainFactoryRepo: DomainFactoryRepo;\n let factory: ProcedureFeatureFactory;\n\n beforeEach(() => {\n jest.clearAllMocks();\n\n jest\n .mocked(ChallengeEntity.get)\n .mockReturnValue(mockChallengeEntityInstance as any);\n\n appObjects = makeAppObjectRepo();\n\n // Create a real EventEntity singleton so PM and UCs can find it\n const eventAppObject = appObjects.getOrCreate(\"EventSystem\");\n const eventEntity = makeEventEntity(eventAppObject);\n appObjects.registerSingleton(eventEntity);\n\n domainFactoryRepo = new DomainFactoryRepo(\n appObjects.getOrCreate(\"DomainFactory\"),\n );\n factory = makeProcedureFeatureFactory(appObjects);\n\n domainFactoryRepo.setupDomain();\n });\n\n it(\"creates factory with correct name\", () => {\n expect(factory.factoryName).toBe(\"ProcedureFeatureFactory\");\n });\n\n it(\"uses correct AppObject name\", () => {\n const procedureAppObject = appObjects.getOrCreate(\"Procedure\");\n expect(procedureAppObject).toBeDefined();\n });\n\n it(\"creates ProcedureEntity singleton\", () => {\n expect(factory.getProcedureEntity()).toBeDefined();\n expect(factory.getProcedureEntity()?.challengeID).toBe(\"PROCEDURE\");\n });\n\n it(\"registers ProcedureEntity as singleton\", () => {\n const entity = ProcedureEntity.get(appObjects);\n expect(entity).toBeDefined();\n expect(entity).toBe(factory.getProcedureEntity());\n });\n\n it(\"creates all required Use Cases\", () => {\n const addEventUC = AddProcedureEventUC.get(appObjects);\n expect(addEventUC).toBeDefined();\n\n const serializeUC = SerializeProcedure.get(appObjects);\n expect(serializeUC).toBeDefined();\n\n const setOrderMattersUC = SetProcedureOrderMattersUC.get(appObjects);\n expect(setOrderMattersUC).toBeDefined();\n\n const setShowHintsUC = SetProcedureShowHintsUC.get(appObjects);\n expect(setShowHintsUC).toBeDefined();\n\n const setIsQuizUC = SetProcedureIsQuizUC.get(appObjects);\n expect(setIsQuizUC).toBeDefined();\n });\n\n it(\"Use Cases can find their entity\", () => {\n const addEventUC = AddProcedureEventUC.get(appObjects);\n const entity = factory.getProcedureEntity();\n\n addEventUC!.addEvent(\"test_event\");\n expect(entity!.eventIds).toContain(\"test_event\");\n });\n\n it(\"configuration Use Cases can modify entity properties\", () => {\n const entity = factory.getProcedureEntity()!;\n const setOrderMattersUC = SetProcedureOrderMattersUC.get(appObjects)!;\n const setShowHintsUC = SetProcedureShowHintsUC.get(appObjects)!;\n const setIsQuizUC = SetProcedureIsQuizUC.get(appObjects)!;\n\n expect(entity.orderMatters).toBe(true);\n expect(entity.showHints).toBe(true);\n expect(entity.isQuiz).toBe(false);\n\n setOrderMattersUC.setOrderMatters(false);\n expect(entity.orderMatters).toBe(false);\n\n setShowHintsUC.setShowHints(false);\n expect(entity.showHints).toBe(false);\n\n setIsQuizUC.setIsQuiz(true);\n expect(entity.isQuiz).toBe(true);\n });\n\n it(\"creates ProcedurePM singleton\", () => {\n expect(factory.getProcedurePM()).toBeDefined();\n });\n\n it(\"PM can access entity state\", () => {\n const pm = factory.getProcedurePM();\n const entity = factory.getProcedureEntity();\n\n entity!.addEventId(\"test_event\");\n\n const vm = pm!.lastVM;\n expect(vm!.eventIds).toContain(\"test_event\");\n });\n\n it(\"registers procedure challenge with ChallengeEntity\", () => {\n expect(mockRegisterChallenge).toHaveBeenCalledWith(\n factory.getProcedureEntity(),\n );\n });\n\n it(\"injects the EventEntity category lookup into the entity (#53)\", () => {\n const eventEntity = EventEntity.get(appObjects)!;\n const entity = factory.getProcedureEntity()!;\n\n // Registered after setup: the lookup is evaluated at call time, not cached.\n eventEntity.register(\"navigate-to-overhead\", \"Go to overhead\", {\n category: \"instructional\",\n });\n eventEntity.register(\"lever\", \"Pull lever\");\n\n expect(entity.getEventCategory(\"navigate-to-overhead\")).toBe(\n \"instructional\",\n );\n expect(entity.getEventCategory(\"lever\")).toBe(\"assessed\");\n expect(entity.getEventCategory(\"never-registered\")).toBe(\"assessed\");\n });\n\n it(\"warns and falls back to an assessed lookup when EventEntity is absent (#53)\", () => {\n const submitWarningSpy = jest.fn();\n const newAppObjects = makeAppObjectRepo();\n newAppObjects.submitWarning = submitWarningSpy;\n\n // No EventEntity registered on this repo: the category lookup cannot wire.\n const newDomainFactoryRepo = new DomainFactoryRepo(\n newAppObjects.getOrCreate(\"DomainFactory\"),\n );\n const newFactory = makeProcedureFeatureFactory(newAppObjects);\n newDomainFactoryRepo.setupDomain();\n\n expect(submitWarningSpy).toHaveBeenCalledWith(\n expect.stringContaining(\"Procedure\"),\n expect.stringContaining(\"EventEntity not found\"),\n );\n\n // The entity keeps its default lookup, so every step is treated as assessed.\n const entity = newFactory.getProcedureEntity()!;\n expect(entity.getEventCategory(\"anything\")).toBe(\"assessed\");\n });\n\n it(\"handles missing ChallengeEntity gracefully\", () => {\n jest.mocked(ChallengeEntity.get).mockReturnValueOnce(undefined);\n\n const submitWarningSpy = jest.fn();\n const newAppObjects = makeAppObjectRepo();\n newAppObjects.submitWarning = submitWarningSpy;\n\n const newDomainFactoryRepo = new DomainFactoryRepo(\n newAppObjects.getOrCreate(\"DomainFactory\"),\n );\n makeProcedureFeatureFactory(newAppObjects);\n newDomainFactoryRepo.setupDomain();\n\n expect(submitWarningSpy).toHaveBeenCalledWith(\n expect.stringContaining(\"Procedure\"),\n expect.stringContaining(\"ChallengeEntity not found\"),\n );\n });\n\n it(\"all components can communicate\", () => {\n const entity = factory.getProcedureEntity()!;\n const pm = factory.getProcedurePM()!;\n const addEventUC = AddProcedureEventUC.get(appObjects)!;\n\n addEventUC.addEvent(\"integration_test_event\");\n\n expect(entity.eventIds).toContain(\"integration_test_event\");\n\n const vm = pm.lastVM!;\n expect(vm.eventIds).toContain(\"integration_test_event\");\n });\n\n it(\"provides access to created components\", () => {\n expect(factory.getProcedureEntity()).toBeInstanceOf(Object);\n expect(factory.getProcedurePM()).toBeInstanceOf(Object);\n });\n\n it(\"returns undefined for components when not properly initialized\", () => {\n const isolatedAppObjects = makeAppObjectRepo();\n const isolatedAppObject = isolatedAppObjects.getOrCreate(\"Isolated\");\n const isolatedFactory = new ProcedureFeatureFactory(isolatedAppObject);\n\n expect(isolatedFactory.getProcedureEntity()).toBeUndefined();\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Procedure/Factories/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C","sourcesContent":["export * from \"./ProcedureFeatureFactory\";\
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Procedure/Factories/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C","sourcesContent":["export * from \"./ProcedureFeatureFactory\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MockProcedureEntity.js","sourceRoot":"","sources":["../../../../src/Procedure/Mocks/MockProcedureEntity.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"MockProcedureEntity.js","sourceRoot":"","sources":["../../../../src/Procedure/Mocks/MockProcedureEntity.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectRepo } from \"@vived/core\";\nimport { EventCategory } from \"../../EventSystem/types\";\nimport { ProcedureEntity } from \"../Entities/ProcedureEntity\";\n\nexport class MockProcedureEntity extends ProcedureEntity {\n private _eventIds: string[] = [];\n private _orderMatters = true;\n private _showHints = true;\n private _isQuiz = false;\n private _isRecording = false;\n private _userEventLog: string[] = [];\n private _currentStepIndex = 0;\n private _isComplete = false;\n private _validationMessage: string | null = null;\n private _score: {\n percentage: number;\n comparison: {\n eventId: string;\n expected: boolean;\n actual: boolean;\n correct: boolean;\n }[];\n } | null = null;\n private _isSubmitted = false;\n\n get helpHeading(): string {\n return \"Procedure Challenge\";\n }\n get consumerHelpText(): string {\n return \"\";\n }\n get eventIds() {\n return this._eventIds;\n }\n get orderMatters() {\n return this._orderMatters;\n }\n get showHints() {\n return this._showHints;\n }\n get isQuiz() {\n return this._isQuiz;\n }\n get isRecording() {\n return this._isRecording;\n }\n get userEventLog() {\n return this._userEventLog;\n }\n get currentStepIndex() {\n return this._currentStepIndex;\n }\n get isComplete() {\n return this._isComplete;\n }\n get validationMessage() {\n return this._validationMessage;\n }\n get score() {\n return this._score;\n }\n get isSubmitted() {\n return this._isSubmitted;\n }\n\n addEventId = jest.fn((id: string) => {\n this._eventIds.push(id);\n });\n removeEventId = jest.fn();\n clearEventIds = jest.fn(() => {\n this._eventIds = [];\n });\n recordUserEvent = jest.fn();\n validateProgress = jest.fn(() => null);\n getNextExpectedEvent = jest.fn(() => null);\n reset = jest.fn(() => {\n this._userEventLog = [];\n this._currentStepIndex = 0;\n });\n moveEventUp = jest.fn();\n moveEventDown = jest.fn();\n getAuthoringValidationMessage = jest.fn(() => null);\n setOrderMatters = jest.fn((v: boolean) => {\n this._orderMatters = v;\n });\n setShowHints = jest.fn((v: boolean) => {\n this._showHints = v;\n });\n setIsQuiz = jest.fn((v: boolean) => {\n this._isQuiz = v;\n });\n setIsRecording = jest.fn((v: boolean) => {\n this._isRecording = v;\n });\n setEventCategoryLookup = jest.fn();\n getEventCategory = jest.fn((): EventCategory => \"assessed\");\n getProgressPercentage = jest.fn(() => 0);\n calculateScore = jest.fn(() => ({ percentage: 0, comparison: [] }));\n submit = jest.fn();\n\n constructor(appObject: AppObject) {\n super(appObject, ProcedureEntity.type);\n }\n}\n\nexport function makeMockProcedureEntity(appObjects: AppObjectRepo) {\n return new MockProcedureEntity(appObjects.getOrCreate(\"MockProcedureEntity\"));\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MockProcedurePM.js","sourceRoot":"","sources":["../../../../src/Procedure/Mocks/MockProcedurePM.ts"],"names":[],"mappings":";;;AAWA,kDAEC;AAZD,mDAAgD;AAEhD,MAAa,eAAgB,SAAQ,yBAAW;IAG9C,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,yBAAW,CAAC,IAAI,CAAC,CAAC;QAHrC,gBAAW,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IAInC,CAAC;CACF;AAND,0CAMC;AAED,SAAgB,mBAAmB,CAAC,UAAyB;IAC3D,OAAO,IAAI,eAAe,CAAC,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACxE,CAAC","sourcesContent":["import { AppObject, AppObjectRepo } from \"@vived/core\";\
|
|
1
|
+
{"version":3,"file":"MockProcedurePM.js","sourceRoot":"","sources":["../../../../src/Procedure/Mocks/MockProcedurePM.ts"],"names":[],"mappings":";;;AAWA,kDAEC;AAZD,mDAAgD;AAEhD,MAAa,eAAgB,SAAQ,yBAAW;IAG9C,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,yBAAW,CAAC,IAAI,CAAC,CAAC;QAHrC,gBAAW,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IAInC,CAAC;CACF;AAND,0CAMC;AAED,SAAgB,mBAAmB,CAAC,UAAyB;IAC3D,OAAO,IAAI,eAAe,CAAC,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACxE,CAAC","sourcesContent":["import { AppObject, AppObjectRepo } from \"@vived/core\";\nimport { ProcedurePM } from \"../PM/ProcedurePM\";\n\nexport class MockProcedurePM extends ProcedurePM {\n vmsAreEqual = jest.fn(() => false);\n\n constructor(appObject: AppObject) {\n super(appObject, ProcedurePM.type);\n }\n}\n\nexport function makeMockProcedurePM(appObjects: AppObjectRepo) {\n return new MockProcedurePM(appObjects.getOrCreate(\"MockProcedurePM\"));\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Procedure/Mocks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,oDAAkC","sourcesContent":["export * from \"./MockProcedureEntity\";\
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Procedure/Mocks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,oDAAkC","sourcesContent":["export * from \"./MockProcedureEntity\";\nexport * from \"./MockProcedurePM\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProcedurePM.js","sourceRoot":"","sources":["../../../../src/Procedure/PM/ProcedurePM.ts"],"names":[],"mappings":"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","sourcesContent":["import {\
|
|
1
|
+
{"version":3,"file":"ProcedurePM.js","sourceRoot":"","sources":["../../../../src/Procedure/PM/ProcedurePM.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AppObject,\n AppObjectPM,\n AppObjectRepo,\n getSingletonComponent,\n} from \"@vived/core\";\nimport { ProcedureEntity } from \"../Entities/ProcedureEntity\";\nimport { EventCategory, EventEntity } from \"../../EventSystem\";\nimport { ProcedureVM } from \"../types\";\n\nexport abstract class ProcedurePM extends AppObjectPM<ProcedureVM> {\n static readonly type = \"ProcedurePM\";\n\n static get = (appObjects: AppObjectRepo): ProcedurePM | undefined =>\n getSingletonComponent(ProcedurePM.type, appObjects);\n}\n\nexport function makeProcedurePM(appObject: AppObject): ProcedurePM {\n return new ProcedurePMImp(appObject);\n}\n\nclass ProcedurePMImp extends ProcedurePM {\n private get procedureEntity(): ProcedureEntity | undefined {\n return ProcedureEntity.get(this.appObjects);\n }\n\n private get eventEntity(): EventEntity | undefined {\n return EventEntity.get(this.appObjects);\n }\n\n vmsAreEqual(a: ProcedureVM, b: ProcedureVM): boolean {\n return (\n JSON.stringify(a.eventIds) === JSON.stringify(b.eventIds) &&\n a.orderMatters === b.orderMatters &&\n a.showHints === b.showHints &&\n a.isQuiz === b.isQuiz &&\n a.isRecording === b.isRecording &&\n JSON.stringify(a.userEventLog) === JSON.stringify(b.userEventLog) &&\n a.currentStepIndex === b.currentStepIndex &&\n a.isComplete === b.isComplete &&\n a.validationMessage === b.validationMessage &&\n a.nextExpectedEvent === b.nextExpectedEvent &&\n a.progressPercentage === b.progressPercentage &&\n JSON.stringify(a.availableEvents) === JSON.stringify(b.availableEvents) &&\n JSON.stringify(a.score) === JSON.stringify(b.score) &&\n a.isSubmitted === b.isSubmitted &&\n JSON.stringify(a.stepCategories) === JSON.stringify(b.stepCategories)\n );\n }\n\n onEntityChange = (): void => {\n const procedureEntity = this.procedureEntity;\n if (!procedureEntity) {\n this.doUpdateView(this.getDefaultVM());\n return;\n }\n\n const eventEntity = this.eventEntity;\n const availableEvents = eventEntity\n ? eventEntity.getRegisteredEvents()\n : [];\n\n // Resolved through the entity's injected lookup at VM-build time, so a\n // registration that lands after authoring is reflected on the next change.\n // Null-prototype map: event ids are arbitrary developer-chosen strings, and\n // a plain object would drop the id \"__proto__\" (its setter swallows the\n // assignment) — Object.create(null) makes every accepted id representable.\n const stepCategories: Record<string, EventCategory> = Object.create(null);\n for (const eventId of procedureEntity.eventIds) {\n stepCategories[eventId] = procedureEntity.getEventCategory(eventId);\n }\n\n const viewModel: ProcedureVM = {\n eventIds: procedureEntity.eventIds,\n orderMatters: procedureEntity.orderMatters,\n showHints: procedureEntity.showHints,\n isQuiz: procedureEntity.isQuiz,\n isRecording: procedureEntity.isRecording,\n userEventLog: procedureEntity.userEventLog,\n currentStepIndex: procedureEntity.currentStepIndex,\n isComplete: procedureEntity.isComplete,\n validationMessage: procedureEntity.validationMessage,\n nextExpectedEvent: procedureEntity.getNextExpectedEvent(),\n progressPercentage: procedureEntity.getProgressPercentage(),\n availableEvents,\n authoringValidationMessage:\n procedureEntity.getAuthoringValidationMessage(),\n score: procedureEntity.score,\n isSubmitted: procedureEntity.isSubmitted,\n stepCategories,\n };\n\n this.doUpdateView(viewModel);\n };\n\n private getDefaultVM(): ProcedureVM {\n return {\n eventIds: [],\n orderMatters: true,\n showHints: true,\n isQuiz: false,\n isRecording: false,\n userEventLog: [],\n currentStepIndex: 0,\n isComplete: false,\n validationMessage: null,\n nextExpectedEvent: null,\n progressPercentage: 0,\n availableEvents: [],\n authoringValidationMessage:\n \"At least one event must be added to the procedure\",\n score: null,\n isSubmitted: false,\n stepCategories: {},\n };\n }\n\n dispose = (): void => {\n super.dispose();\n this.procedureEntity?.removeChangeObserver(this.onEntityChange);\n this.eventEntity?.removeChangeObserver(this.onEntityChange);\n };\n\n constructor(appObject: AppObject) {\n super(appObject, ProcedurePM.type);\n\n this.appObjects.registerSingleton(this);\n\n this.procedureEntity?.addChangeObserver(this.onEntityChange);\n this.eventEntity?.addChangeObserver(this.onEntityChange);\n\n this.onEntityChange();\n }\n}\n"]}
|
|
@@ -125,7 +125,7 @@ describe("ProcedurePM", () => {
|
|
|
125
125
|
lever: "assessed",
|
|
126
126
|
});
|
|
127
127
|
});
|
|
128
|
-
it(
|
|
128
|
+
it('represents an event id of "__proto__" as its own category entry (#53)', () => {
|
|
129
129
|
const protoKey = "__proto__";
|
|
130
130
|
procedureEntity.setEventCategoryLookup((eventId) => eventId === protoKey ? "instructional" : "assessed");
|
|
131
131
|
procedureEntity.addEventId(protoKey);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProcedurePM.test.js","sourceRoot":"","sources":["../../../../src/Procedure/PM/ProcedurePM.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObjectRepo, makeAppObjectRepo } from \"@vived/core\";\r\nimport { ProcedureEntity, makeProcedureEntity } from \"../Entities/ProcedureEntity\";\r\nimport { ProcedurePM, makeProcedurePM } from \"./ProcedurePM\";\r\nimport { ProcedureVM } from \"../types\";\r\n\r\ndescribe(\"ProcedurePM\", () => {\r\n let appObjects: AppObjectRepo;\r\n let procedureEntity: ProcedureEntity;\r\n let procedurePM: ProcedurePM;\r\n\r\n beforeEach(() => {\r\n appObjects = makeAppObjectRepo();\r\n const appObject = appObjects.getOrCreate(\"Procedure\");\r\n\r\n procedureEntity = makeProcedureEntity(appObject);\r\n procedurePM = makeProcedurePM(appObject);\r\n });\r\n\r\n it(\"can be retrieved via static get method\", () => {\r\n const retrieved = ProcedurePM.get(appObjects);\r\n expect(retrieved).toBe(procedurePM);\r\n });\r\n\r\n it(\"registers itself as singleton\", () => {\r\n expect(ProcedurePM.get(appObjects)).toBe(procedurePM);\r\n });\r\n\r\n it(\"generates correct initial view model\", () => {\r\n const vm = procedurePM.lastVM;\r\n\r\n expect(vm).toBeDefined();\r\n expect(vm!.eventIds).toEqual([]);\r\n expect(vm!.orderMatters).toBe(true);\r\n expect(vm!.showHints).toBe(true);\r\n expect(vm!.isQuiz).toBe(false);\r\n expect(vm!.userEventLog).toEqual([]);\r\n expect(vm!.currentStepIndex).toBe(0);\r\n expect(vm!.isComplete).toBe(false);\r\n expect(vm!.validationMessage).toBe(null);\r\n expect(vm!.nextExpectedEvent).toBe(null);\r\n expect(vm!.progressPercentage).toBe(0);\r\n expect(vm!.availableEvents).toEqual([]);\r\n expect(vm!.stepCategories).toEqual({});\r\n });\r\n\r\n it(\"reflects entity state changes in view model\", () => {\r\n procedureEntity.addEventId(\"test_event_1\");\r\n procedureEntity.addEventId(\"test_event_2\");\r\n procedureEntity.setOrderMatters(false);\r\n procedureEntity.setShowHints(false);\r\n procedureEntity.setIsQuiz(true);\r\n\r\n const vm = procedurePM.lastVM;\r\n\r\n expect(vm!.eventIds).toEqual([\"test_event_1\", \"test_event_2\"]);\r\n expect(vm!.orderMatters).toBe(false);\r\n expect(vm!.showHints).toBe(false);\r\n expect(vm!.isQuiz).toBe(true);\r\n });\r\n\r\n it(\"updates view model when user progress changes\", () => {\r\n procedureEntity.addEventId(\"event_1\");\r\n procedureEntity.addEventId(\"event_2\");\r\n\r\n procedureEntity.recordUserEvent(\"event_1\");\r\n\r\n const vm = procedurePM.lastVM;\r\n expect(vm!.userEventLog).toEqual([\"event_1\"]);\r\n expect(vm!.currentStepIndex).toBe(1);\r\n expect(vm!.progressPercentage).toBe(50);\r\n });\r\n\r\n it(\"correctly identifies equal view models\", () => {\r\n const vm1: ProcedureVM = {\r\n eventIds: [\"event_1\"],\r\n orderMatters: true,\r\n showHints: true,\r\n isQuiz: false,\r\n isRecording: false,\r\n userEventLog: [],\r\n currentStepIndex: 0,\r\n isComplete: false,\r\n validationMessage: null,\r\n nextExpectedEvent: \"event_1\",\r\n progressPercentage: 0,\r\n availableEvents: [],\r\n authoringValidationMessage: null,\r\n score: null,\r\n isSubmitted: false,\r\n stepCategories: { event_1: \"assessed\" },\r\n };\r\n\r\n const vm2: ProcedureVM = { ...vm1 };\r\n\r\n expect(procedurePM.vmsAreEqual(vm1, vm2)).toBe(true);\r\n });\r\n\r\n it(\"correctly identifies different view models\", () => {\r\n const vm1: ProcedureVM = {\r\n eventIds: [\"event_1\"],\r\n orderMatters: true,\r\n showHints: true,\r\n isQuiz: false,\r\n isRecording: false,\r\n userEventLog: [],\r\n currentStepIndex: 0,\r\n isComplete: false,\r\n validationMessage: null,\r\n nextExpectedEvent: \"event_1\",\r\n progressPercentage: 0,\r\n availableEvents: [],\r\n authoringValidationMessage: null,\r\n score: null,\r\n isSubmitted: false,\r\n stepCategories: { event_1: \"assessed\" },\r\n };\r\n\r\n const vm2: ProcedureVM = {\r\n ...vm1,\r\n orderMatters: false,\r\n };\r\n\r\n expect(procedurePM.vmsAreEqual(vm1, vm2)).toBe(false);\r\n });\r\n\r\n it(\"treats a changed step category as a different view model (#53)\", () => {\r\n const vm1: ProcedureVM = {\r\n ...procedurePM.lastVM!,\r\n eventIds: [\"event_1\"],\r\n stepCategories: { event_1: \"assessed\" },\r\n };\r\n const vm2: ProcedureVM = {\r\n ...vm1,\r\n stepCategories: { event_1: \"instructional\" },\r\n };\r\n\r\n expect(procedurePM.vmsAreEqual(vm1, vm2)).toBe(false);\r\n });\r\n\r\n it(\"maps each authored step to its category through the entity's lookup (#53)\", () => {\r\n procedureEntity.setEventCategoryLookup((eventId) =>\r\n eventId === \"navigate-to-overhead\" ? \"instructional\" : \"assessed\",\r\n );\r\n procedureEntity.addEventId(\"navigate-to-overhead\");\r\n procedureEntity.addEventId(\"lever\");\r\n\r\n expect(procedurePM.lastVM!.stepCategories).toEqual({\r\n \"navigate-to-overhead\": \"instructional\",\r\n lever: \"assessed\",\r\n });\r\n });\r\n\r\n it(\"represents an event id of \\\"__proto__\\\" as its own category entry (#53)\", () => {\r\n const protoKey = \"__proto__\";\r\n procedureEntity.setEventCategoryLookup((eventId) =>\r\n eventId === protoKey ? \"instructional\" : \"assessed\",\r\n );\r\n procedureEntity.addEventId(protoKey);\r\n procedureEntity.addEventId(\"lever\");\r\n\r\n const vm = procedurePM.lastVM!;\r\n // A plain-object dictionary would drop this key; the null-prototype map keeps it.\r\n expect(vm.stepCategories[protoKey]).toBe(\"instructional\");\r\n expect(vm.stepCategories.lever).toBe(\"assessed\");\r\n });\r\n\r\n it(\"provides default view model when entity is missing\", () => {\r\n const isolatedAppObjects = makeAppObjectRepo();\r\n const isolatedAppObject = isolatedAppObjects.getOrCreate(\"Isolated\");\r\n const isolatedPM = makeProcedurePM(isolatedAppObject);\r\n\r\n const vm = isolatedPM.lastVM;\r\n\r\n expect(vm).toBeDefined();\r\n expect(vm!.eventIds).toEqual([]);\r\n expect(vm!.orderMatters).toBe(true);\r\n expect(vm!.showHints).toBe(true);\r\n expect(vm!.isQuiz).toBe(false);\r\n });\r\n\r\n it(\"notifies subscribers when entity changes\", () => {\r\n let notificationCount = 0;\r\n let lastVM: ProcedureVM | null = null;\r\n\r\n const mockView = (vm: ProcedureVM) => {\r\n notificationCount++;\r\n lastVM = vm;\r\n };\r\n\r\n procedurePM.addView(mockView);\r\n\r\n expect(notificationCount).toBeGreaterThan(0);\r\n const initialCount = notificationCount;\r\n\r\n procedureEntity.addEventId(\"new_event\");\r\n\r\n expect(notificationCount).toBeGreaterThan(initialCount);\r\n expect(lastVM!.eventIds).toContain(\"new_event\");\r\n\r\n procedurePM.removeView(mockView);\r\n });\r\n});\r\n"]}
|
|
1
|
+
{"version":3,"file":"ProcedurePM.test.js","sourceRoot":"","sources":["../../../../src/Procedure/PM/ProcedurePM.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObjectRepo, makeAppObjectRepo } from \"@vived/core\";\nimport {\n ProcedureEntity,\n makeProcedureEntity,\n} from \"../Entities/ProcedureEntity\";\nimport { ProcedurePM, makeProcedurePM } from \"./ProcedurePM\";\nimport { ProcedureVM } from \"../types\";\n\ndescribe(\"ProcedurePM\", () => {\n let appObjects: AppObjectRepo;\n let procedureEntity: ProcedureEntity;\n let procedurePM: ProcedurePM;\n\n beforeEach(() => {\n appObjects = makeAppObjectRepo();\n const appObject = appObjects.getOrCreate(\"Procedure\");\n\n procedureEntity = makeProcedureEntity(appObject);\n procedurePM = makeProcedurePM(appObject);\n });\n\n it(\"can be retrieved via static get method\", () => {\n const retrieved = ProcedurePM.get(appObjects);\n expect(retrieved).toBe(procedurePM);\n });\n\n it(\"registers itself as singleton\", () => {\n expect(ProcedurePM.get(appObjects)).toBe(procedurePM);\n });\n\n it(\"generates correct initial view model\", () => {\n const vm = procedurePM.lastVM;\n\n expect(vm).toBeDefined();\n expect(vm!.eventIds).toEqual([]);\n expect(vm!.orderMatters).toBe(true);\n expect(vm!.showHints).toBe(true);\n expect(vm!.isQuiz).toBe(false);\n expect(vm!.userEventLog).toEqual([]);\n expect(vm!.currentStepIndex).toBe(0);\n expect(vm!.isComplete).toBe(false);\n expect(vm!.validationMessage).toBe(null);\n expect(vm!.nextExpectedEvent).toBe(null);\n expect(vm!.progressPercentage).toBe(0);\n expect(vm!.availableEvents).toEqual([]);\n expect(vm!.stepCategories).toEqual({});\n });\n\n it(\"reflects entity state changes in view model\", () => {\n procedureEntity.addEventId(\"test_event_1\");\n procedureEntity.addEventId(\"test_event_2\");\n procedureEntity.setOrderMatters(false);\n procedureEntity.setShowHints(false);\n procedureEntity.setIsQuiz(true);\n\n const vm = procedurePM.lastVM;\n\n expect(vm!.eventIds).toEqual([\"test_event_1\", \"test_event_2\"]);\n expect(vm!.orderMatters).toBe(false);\n expect(vm!.showHints).toBe(false);\n expect(vm!.isQuiz).toBe(true);\n });\n\n it(\"updates view model when user progress changes\", () => {\n procedureEntity.addEventId(\"event_1\");\n procedureEntity.addEventId(\"event_2\");\n\n procedureEntity.recordUserEvent(\"event_1\");\n\n const vm = procedurePM.lastVM;\n expect(vm!.userEventLog).toEqual([\"event_1\"]);\n expect(vm!.currentStepIndex).toBe(1);\n expect(vm!.progressPercentage).toBe(50);\n });\n\n it(\"correctly identifies equal view models\", () => {\n const vm1: ProcedureVM = {\n eventIds: [\"event_1\"],\n orderMatters: true,\n showHints: true,\n isQuiz: false,\n isRecording: false,\n userEventLog: [],\n currentStepIndex: 0,\n isComplete: false,\n validationMessage: null,\n nextExpectedEvent: \"event_1\",\n progressPercentage: 0,\n availableEvents: [],\n authoringValidationMessage: null,\n score: null,\n isSubmitted: false,\n stepCategories: { event_1: \"assessed\" },\n };\n\n const vm2: ProcedureVM = { ...vm1 };\n\n expect(procedurePM.vmsAreEqual(vm1, vm2)).toBe(true);\n });\n\n it(\"correctly identifies different view models\", () => {\n const vm1: ProcedureVM = {\n eventIds: [\"event_1\"],\n orderMatters: true,\n showHints: true,\n isQuiz: false,\n isRecording: false,\n userEventLog: [],\n currentStepIndex: 0,\n isComplete: false,\n validationMessage: null,\n nextExpectedEvent: \"event_1\",\n progressPercentage: 0,\n availableEvents: [],\n authoringValidationMessage: null,\n score: null,\n isSubmitted: false,\n stepCategories: { event_1: \"assessed\" },\n };\n\n const vm2: ProcedureVM = {\n ...vm1,\n orderMatters: false,\n };\n\n expect(procedurePM.vmsAreEqual(vm1, vm2)).toBe(false);\n });\n\n it(\"treats a changed step category as a different view model (#53)\", () => {\n const vm1: ProcedureVM = {\n ...procedurePM.lastVM!,\n eventIds: [\"event_1\"],\n stepCategories: { event_1: \"assessed\" },\n };\n const vm2: ProcedureVM = {\n ...vm1,\n stepCategories: { event_1: \"instructional\" },\n };\n\n expect(procedurePM.vmsAreEqual(vm1, vm2)).toBe(false);\n });\n\n it(\"maps each authored step to its category through the entity's lookup (#53)\", () => {\n procedureEntity.setEventCategoryLookup((eventId) =>\n eventId === \"navigate-to-overhead\" ? \"instructional\" : \"assessed\",\n );\n procedureEntity.addEventId(\"navigate-to-overhead\");\n procedureEntity.addEventId(\"lever\");\n\n expect(procedurePM.lastVM!.stepCategories).toEqual({\n \"navigate-to-overhead\": \"instructional\",\n lever: \"assessed\",\n });\n });\n\n it('represents an event id of \"__proto__\" as its own category entry (#53)', () => {\n const protoKey = \"__proto__\";\n procedureEntity.setEventCategoryLookup((eventId) =>\n eventId === protoKey ? \"instructional\" : \"assessed\",\n );\n procedureEntity.addEventId(protoKey);\n procedureEntity.addEventId(\"lever\");\n\n const vm = procedurePM.lastVM!;\n // A plain-object dictionary would drop this key; the null-prototype map keeps it.\n expect(vm.stepCategories[protoKey]).toBe(\"instructional\");\n expect(vm.stepCategories.lever).toBe(\"assessed\");\n });\n\n it(\"provides default view model when entity is missing\", () => {\n const isolatedAppObjects = makeAppObjectRepo();\n const isolatedAppObject = isolatedAppObjects.getOrCreate(\"Isolated\");\n const isolatedPM = makeProcedurePM(isolatedAppObject);\n\n const vm = isolatedPM.lastVM;\n\n expect(vm).toBeDefined();\n expect(vm!.eventIds).toEqual([]);\n expect(vm!.orderMatters).toBe(true);\n expect(vm!.showHints).toBe(true);\n expect(vm!.isQuiz).toBe(false);\n });\n\n it(\"notifies subscribers when entity changes\", () => {\n let notificationCount = 0;\n let lastVM: ProcedureVM | null = null;\n\n const mockView = (vm: ProcedureVM) => {\n notificationCount++;\n lastVM = vm;\n };\n\n procedurePM.addView(mockView);\n\n expect(notificationCount).toBeGreaterThan(0);\n const initialCount = notificationCount;\n\n procedureEntity.addEventId(\"new_event\");\n\n expect(notificationCount).toBeGreaterThan(initialCount);\n expect(lastVM!.eventIds).toContain(\"new_event\");\n\n procedurePM.removeView(mockView);\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Procedure/PM/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B","sourcesContent":["export * from \"./ProcedurePM\";\
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Procedure/PM/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B","sourcesContent":["export * from \"./ProcedurePM\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProcedureEventSystem.integration.test.js","sourceRoot":"","sources":["../../../src/Procedure/ProcedureEventSystem.integration.test.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n\tAppObject,\r\n\tAppObjectEntity,\r\n\tAppObjectRepo,\r\n\tmakeAppObjectRepo,\r\n} from \"@vived/core\";\r\nimport { ProcedureEntity, makeProcedureEntity } from \"./Entities/ProcedureEntity\";\r\nimport { EventEntity, makeEventEntity } from \"../EventSystem/Entities/EventEntity\";\r\nimport {\r\n\tUpdateProcedureEventsUCHook,\r\n\tmakeUpdateProcedureEventsUCHook,\r\n} from \"./UCs/UpdateProcedureEventsUCHook\";\r\nimport {\r\n\tResetProcedureProgressUC,\r\n\tmakeResetProcedureProgressUC,\r\n} from \"./UCs/ResetProcedureProgressUC\";\r\n\r\nclass MockBaseAppState extends AppObjectEntity {\r\n\tstatic readonly type = \"BaseAppState\";\r\n\tprivate _isAuthoring = false;\r\n\tprivate observers: (() => void)[] = [];\r\n\r\n\tget isAuthoring(): boolean {\r\n\t\treturn this._isAuthoring;\r\n\t}\r\n\r\n\tset isAuthoring(val: boolean) {\r\n\t\tthis._isAuthoring = val;\r\n\t\tthis.notifyObservers();\r\n\t}\r\n\r\n\taddChangeObserver = (observer: () => void): void => {\r\n\t\tthis.observers.push(observer);\r\n\t};\r\n\r\n\tremoveChangeObserver = (observer: () => void): void => {\r\n\t\tconst index = this.observers.indexOf(observer);\r\n\t\tif (index >= 0) {\r\n\t\t\tthis.observers.splice(index, 1);\r\n\t\t}\r\n\t};\r\n\r\n\tprivate notifyObservers(): void {\r\n\t\tthis.observers.forEach((observer) => observer());\r\n\t}\r\n\r\n\tstatic get(appObjects: AppObjectRepo): MockBaseAppState | undefined {\r\n\t\treturn appObjects.getSingleton(MockBaseAppState.type) as\r\n\t\t\t| MockBaseAppState\r\n\t\t\t| undefined;\r\n\t}\r\n\r\n\tconstructor(appObject: AppObject) {\r\n\t\tsuper(appObject, MockBaseAppState.type);\r\n\t}\r\n}\r\n\r\nclass MockChallengeEntity extends AppObjectEntity {\r\n\tstatic readonly type = \"ChallengeEntity\";\r\n\tprivate _selectedChallenge = \"PROCEDURE\";\r\n\tprivate observers: (() => void)[] = [];\r\n\r\n\tget selectedChallenge(): string {\r\n\t\treturn this._selectedChallenge;\r\n\t}\r\n\r\n\tset selectedChallenge(id: string) {\r\n\t\tthis._selectedChallenge = id;\r\n\t\tthis.notifyObservers();\r\n\t}\r\n\r\n\taddChangeObserver = (observer: () => void): void => {\r\n\t\tthis.observers.push(observer);\r\n\t};\r\n\r\n\tremoveChangeObserver = (observer: () => void): void => {\r\n\t\tconst index = this.observers.indexOf(observer);\r\n\t\tif (index >= 0) {\r\n\t\t\tthis.observers.splice(index, 1);\r\n\t\t}\r\n\t};\r\n\r\n\tprivate notifyObservers(): void {\r\n\t\tthis.observers.forEach((observer) => observer());\r\n\t}\r\n\r\n\tstatic get(appObjects: AppObjectRepo): MockChallengeEntity | undefined {\r\n\t\treturn appObjects.getSingleton(MockChallengeEntity.type) as\r\n\t\t\t| MockChallengeEntity\r\n\t\t\t| undefined;\r\n\t}\r\n\r\n\tconstructor(appObject: AppObject) {\r\n\t\tsuper(appObject, MockChallengeEntity.type);\r\n\t}\r\n}\r\n\r\ndescribe(\"Procedure Event System Integration\", () => {\r\n\tlet appObjects: AppObjectRepo;\r\n\tlet procedureEntity: ProcedureEntity;\r\n\tlet eventEntity: EventEntity;\r\n\tlet updateHook: UpdateProcedureEventsUCHook;\r\n\tlet resetUC: ResetProcedureProgressUC;\r\n\tlet mockBaseAppState: MockBaseAppState;\r\n\tlet mockChallengeEntity: MockChallengeEntity;\r\n\r\n\tbeforeEach(() => {\r\n\t\tappObjects = makeAppObjectRepo();\r\n\t\tconst appObject = appObjects.getOrCreate(\"Procedure\");\r\n\r\n\t\tmockBaseAppState = new MockBaseAppState(appObjects.getOrCreate(\"MockBaseAppState\"));\r\n\t\tmockChallengeEntity = new MockChallengeEntity(appObjects.getOrCreate(\"MockChallengeEntity\"));\r\n\r\n\t\tappObjects.registerSingleton(mockBaseAppState);\r\n\t\tappObjects.registerSingleton(mockChallengeEntity);\r\n\r\n\t\tprocedureEntity = makeProcedureEntity(appObject);\r\n\t\teventEntity = makeEventEntity(appObject);\r\n\r\n\t\tupdateHook = makeUpdateProcedureEventsUCHook(appObject);\r\n\t\tresetUC = makeResetProcedureProgressUC(appObject);\r\n\t});\r\n\r\n\tit(\"automatically records relevant events in procedure progress\", () => {\r\n\t\tprocedureEntity.addEventId(\"step1\");\r\n\t\tprocedureEntity.addEventId(\"step2\");\r\n\t\tprocedureEntity.addEventId(\"step3\");\r\n\t\teventEntity.register(\"step1\", \"Complete Step 1\");\r\n\t\teventEntity.register(\"step2\", \"Complete Step 2\");\r\n\t\teventEntity.register(\"step3\", \"Complete Step 3\");\r\n\t\teventEntity.register(\"unrelated\", \"Unrelated Event\");\r\n\r\n\t\texpect(procedureEntity.userEventLog).toEqual([]);\r\n\t\texpect(procedureEntity.getProgressPercentage()).toBe(0);\r\n\r\n\t\teventEntity.emit(\"step1\");\r\n\r\n\t\texpect(procedureEntity.userEventLog).toContain(\"step1\");\r\n\t\texpect(procedureEntity.getProgressPercentage()).toBeGreaterThan(0);\r\n\t});\r\n\r\n\tit(\"ignores events not relevant to current procedure\", () => {\r\n\t\tprocedureEntity.addEventId(\"step1\");\r\n\t\tprocedureEntity.addEventId(\"step2\");\r\n\t\tprocedureEntity.addEventId(\"step3\");\r\n\t\teventEntity.register(\"step1\", \"Complete Step 1\");\r\n\t\teventEntity.register(\"step2\", \"Complete Step 2\");\r\n\t\teventEntity.register(\"step3\", \"Complete Step 3\");\r\n\t\teventEntity.register(\"unrelated\", \"Unrelated Event\");\r\n\r\n\t\texpect(procedureEntity.userEventLog).toEqual([]);\r\n\r\n\t\teventEntity.emit(\"unrelated\");\r\n\r\n\t\texpect(procedureEntity.userEventLog).toEqual([]);\r\n\t\texpect(procedureEntity.getProgressPercentage()).toBe(0);\r\n\t});\r\n\r\n\tit(\"handles multiple event emissions correctly\", () => {\r\n\t\tprocedureEntity.addEventId(\"step1\");\r\n\t\tprocedureEntity.addEventId(\"step2\");\r\n\t\tprocedureEntity.addEventId(\"step3\");\r\n\t\teventEntity.register(\"step1\", \"Complete Step 1\");\r\n\t\teventEntity.register(\"step2\", \"Complete Step 2\");\r\n\t\teventEntity.register(\"step3\", \"Complete Step 3\");\r\n\t\teventEntity.register(\"unrelated\", \"Unrelated Event\");\r\n\r\n\t\teventEntity.emit(\"step1\");\r\n\t\teventEntity.emit(\"step2\");\r\n\t\teventEntity.emit(\"unrelated\");\r\n\t\teventEntity.emit(\"step3\");\r\n\r\n\t\texpect(procedureEntity.userEventLog).toEqual([\"step1\", \"step2\", \"step3\"]);\r\n\t\texpect(procedureEntity.isComplete).toBe(true);\r\n\t\texpect(procedureEntity.getProgressPercentage()).toBe(100);\r\n\t});\r\n\r\n\tit(\"respects procedure ordering when orderMatters is true\", () => {\r\n\t\tprocedureEntity.addEventId(\"step1\");\r\n\t\tprocedureEntity.addEventId(\"step2\");\r\n\t\tprocedureEntity.addEventId(\"step3\");\r\n\t\teventEntity.register(\"step1\", \"Complete Step 1\");\r\n\t\teventEntity.register(\"step2\", \"Complete Step 2\");\r\n\t\teventEntity.register(\"step3\", \"Complete Step 3\");\r\n\t\teventEntity.register(\"unrelated\", \"Unrelated Event\");\r\n\r\n\t\tprocedureEntity.setOrderMatters(true);\r\n\r\n\t\teventEntity.emit(\"step2\");\r\n\t\teventEntity.emit(\"step1\");\r\n\t\teventEntity.emit(\"step2\");\r\n\r\n\t\texpect(procedureEntity.userEventLog).toEqual([\"step2\", \"step1\", \"step2\"]);\r\n\t\texpect(procedureEntity.getProgressPercentage()).toBe(Math.round((2 / 3) * 100));\r\n\t});\r\n\r\n\tit(\"allows any order when orderMatters is false\", () => {\r\n\t\tprocedureEntity.addEventId(\"step1\");\r\n\t\tprocedureEntity.addEventId(\"step2\");\r\n\t\tprocedureEntity.addEventId(\"step3\");\r\n\t\teventEntity.register(\"step1\", \"Complete Step 1\");\r\n\t\teventEntity.register(\"step2\", \"Complete Step 2\");\r\n\t\teventEntity.register(\"step3\", \"Complete Step 3\");\r\n\r\n\t\tprocedureEntity.setOrderMatters(false);\r\n\r\n\t\teventEntity.emit(\"step3\");\r\n\t\teventEntity.emit(\"step1\");\r\n\t\teventEntity.emit(\"step2\");\r\n\r\n\t\texpect(procedureEntity.userEventLog).toEqual([\"step3\", \"step1\", \"step2\"]);\r\n\t\texpect(procedureEntity.isComplete).toBe(true);\r\n\t});\r\n\r\n\tit(\"resets procedure progress while preserving configuration\", () => {\r\n\t\tprocedureEntity.addEventId(\"reset_test1\");\r\n\t\tprocedureEntity.addEventId(\"reset_test2\");\r\n\t\teventEntity.register(\"reset_test1\", \"Reset Test 1\");\r\n\t\teventEntity.register(\"reset_test2\", \"Reset Test 2\");\r\n\t\teventEntity.emit(\"reset_test1\");\r\n\t\texpect(procedureEntity.userEventLog).toContain(\"reset_test1\");\r\n\r\n\t\texpect(procedureEntity.userEventLog.length).toBeGreaterThan(0);\r\n\t\texpect(procedureEntity.getProgressPercentage()).toBeGreaterThan(0);\r\n\r\n\t\tresetUC.resetProgress();\r\n\r\n\t\texpect(procedureEntity.userEventLog).toEqual([]);\r\n\t\texpect(procedureEntity.getProgressPercentage()).toBe(0);\r\n\t\texpect(procedureEntity.eventIds).toEqual([\"reset_test1\", \"reset_test2\"]);\r\n\t});\r\n\r\n\tit(\"demonstrates reset behavior with event processing\", () => {\r\n\t\tprocedureEntity.addEventId(\"reset_test1\");\r\n\t\tprocedureEntity.addEventId(\"reset_test2\");\r\n\t\teventEntity.register(\"reset_test1\", \"Reset Test 1\");\r\n\t\teventEntity.register(\"reset_test2\", \"Reset Test 2\");\r\n\t\teventEntity.emit(\"reset_test1\");\r\n\t\texpect(procedureEntity.userEventLog).toContain(\"reset_test1\");\r\n\r\n\t\tresetUC.resetProgress();\r\n\t\texpect(procedureEntity.userEventLog).toEqual([]);\r\n\r\n\t\tprocedureEntity.recordUserEvent(\"reset_test1\");\r\n\t\texpect(procedureEntity.userEventLog).toEqual([\"reset_test1\"]);\r\n\t\texpect(procedureEntity.getProgressPercentage()).toBe(50);\r\n\t});\r\n\r\n\tit(\"can be disposed safely\", () => {\r\n\t\tupdateHook.dispose();\r\n\t\texpect(updateHook).toBeDefined();\r\n\t});\r\n\r\n\tit(\"handles missing dependencies gracefully\", () => {\r\n\t\tconst newAppObjects = makeAppObjectRepo();\r\n\t\tconst newAppObject = newAppObjects.getOrCreate(\"Test\");\r\n\r\n\t\tconst isolatedHook = makeUpdateProcedureEventsUCHook(newAppObject);\r\n\r\n\t\texpect(isolatedHook).toBeDefined();\r\n\t\tisolatedHook.dispose();\r\n\t});\r\n\r\n\tit(\"continues working after entity reset\", () => {\r\n\t\tprocedureEntity.addEventId(\"resilience_test\");\r\n\t\teventEntity.register(\"resilience_test\", \"Resilience Test\");\r\n\r\n\t\teventEntity.emit(\"resilience_test\");\r\n\t\texpect(procedureEntity.userEventLog).toContain(\"resilience_test\");\r\n\r\n\t\teventEntity.reset();\r\n\t\tprocedureEntity.reset();\r\n\r\n\t\teventEntity.register(\"resilience_test\", \"Resilience Test\");\r\n\t\tprocedureEntity.addEventId(\"resilience_test\");\r\n\r\n\t\teventEntity.emit(\"resilience_test\");\r\n\t\texpect(procedureEntity.userEventLog).toContain(\"resilience_test\");\r\n\t});\r\n});\r\n"]}
|
|
1
|
+
{"version":3,"file":"ProcedureEventSystem.integration.test.js","sourceRoot":"","sources":["../../../src/Procedure/ProcedureEventSystem.integration.test.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n AppObject,\n AppObjectEntity,\n AppObjectRepo,\n makeAppObjectRepo,\n} from \"@vived/core\";\nimport {\n ProcedureEntity,\n makeProcedureEntity,\n} from \"./Entities/ProcedureEntity\";\nimport {\n EventEntity,\n makeEventEntity,\n} from \"../EventSystem/Entities/EventEntity\";\nimport {\n UpdateProcedureEventsUCHook,\n makeUpdateProcedureEventsUCHook,\n} from \"./UCs/UpdateProcedureEventsUCHook\";\nimport {\n ResetProcedureProgressUC,\n makeResetProcedureProgressUC,\n} from \"./UCs/ResetProcedureProgressUC\";\n\nclass MockBaseAppState extends AppObjectEntity {\n static readonly type = \"BaseAppState\";\n private _isAuthoring = false;\n private observers: (() => void)[] = [];\n\n get isAuthoring(): boolean {\n return this._isAuthoring;\n }\n\n set isAuthoring(val: boolean) {\n this._isAuthoring = val;\n this.notifyObservers();\n }\n\n addChangeObserver = (observer: () => void): void => {\n this.observers.push(observer);\n };\n\n removeChangeObserver = (observer: () => void): void => {\n const index = this.observers.indexOf(observer);\n if (index >= 0) {\n this.observers.splice(index, 1);\n }\n };\n\n private notifyObservers(): void {\n this.observers.forEach((observer) => observer());\n }\n\n static get(appObjects: AppObjectRepo): MockBaseAppState | undefined {\n return appObjects.getSingleton(MockBaseAppState.type) as\n | MockBaseAppState\n | undefined;\n }\n\n constructor(appObject: AppObject) {\n super(appObject, MockBaseAppState.type);\n }\n}\n\nclass MockChallengeEntity extends AppObjectEntity {\n static readonly type = \"ChallengeEntity\";\n private _selectedChallenge = \"PROCEDURE\";\n private observers: (() => void)[] = [];\n\n get selectedChallenge(): string {\n return this._selectedChallenge;\n }\n\n set selectedChallenge(id: string) {\n this._selectedChallenge = id;\n this.notifyObservers();\n }\n\n addChangeObserver = (observer: () => void): void => {\n this.observers.push(observer);\n };\n\n removeChangeObserver = (observer: () => void): void => {\n const index = this.observers.indexOf(observer);\n if (index >= 0) {\n this.observers.splice(index, 1);\n }\n };\n\n private notifyObservers(): void {\n this.observers.forEach((observer) => observer());\n }\n\n static get(appObjects: AppObjectRepo): MockChallengeEntity | undefined {\n return appObjects.getSingleton(MockChallengeEntity.type) as\n | MockChallengeEntity\n | undefined;\n }\n\n constructor(appObject: AppObject) {\n super(appObject, MockChallengeEntity.type);\n }\n}\n\ndescribe(\"Procedure Event System Integration\", () => {\n let appObjects: AppObjectRepo;\n let procedureEntity: ProcedureEntity;\n let eventEntity: EventEntity;\n let updateHook: UpdateProcedureEventsUCHook;\n let resetUC: ResetProcedureProgressUC;\n let mockBaseAppState: MockBaseAppState;\n let mockChallengeEntity: MockChallengeEntity;\n\n beforeEach(() => {\n appObjects = makeAppObjectRepo();\n const appObject = appObjects.getOrCreate(\"Procedure\");\n\n mockBaseAppState = new MockBaseAppState(\n appObjects.getOrCreate(\"MockBaseAppState\"),\n );\n mockChallengeEntity = new MockChallengeEntity(\n appObjects.getOrCreate(\"MockChallengeEntity\"),\n );\n\n appObjects.registerSingleton(mockBaseAppState);\n appObjects.registerSingleton(mockChallengeEntity);\n\n procedureEntity = makeProcedureEntity(appObject);\n eventEntity = makeEventEntity(appObject);\n\n updateHook = makeUpdateProcedureEventsUCHook(appObject);\n resetUC = makeResetProcedureProgressUC(appObject);\n });\n\n it(\"automatically records relevant events in procedure progress\", () => {\n procedureEntity.addEventId(\"step1\");\n procedureEntity.addEventId(\"step2\");\n procedureEntity.addEventId(\"step3\");\n eventEntity.register(\"step1\", \"Complete Step 1\");\n eventEntity.register(\"step2\", \"Complete Step 2\");\n eventEntity.register(\"step3\", \"Complete Step 3\");\n eventEntity.register(\"unrelated\", \"Unrelated Event\");\n\n expect(procedureEntity.userEventLog).toEqual([]);\n expect(procedureEntity.getProgressPercentage()).toBe(0);\n\n eventEntity.emit(\"step1\");\n\n expect(procedureEntity.userEventLog).toContain(\"step1\");\n expect(procedureEntity.getProgressPercentage()).toBeGreaterThan(0);\n });\n\n it(\"ignores events not relevant to current procedure\", () => {\n procedureEntity.addEventId(\"step1\");\n procedureEntity.addEventId(\"step2\");\n procedureEntity.addEventId(\"step3\");\n eventEntity.register(\"step1\", \"Complete Step 1\");\n eventEntity.register(\"step2\", \"Complete Step 2\");\n eventEntity.register(\"step3\", \"Complete Step 3\");\n eventEntity.register(\"unrelated\", \"Unrelated Event\");\n\n expect(procedureEntity.userEventLog).toEqual([]);\n\n eventEntity.emit(\"unrelated\");\n\n expect(procedureEntity.userEventLog).toEqual([]);\n expect(procedureEntity.getProgressPercentage()).toBe(0);\n });\n\n it(\"handles multiple event emissions correctly\", () => {\n procedureEntity.addEventId(\"step1\");\n procedureEntity.addEventId(\"step2\");\n procedureEntity.addEventId(\"step3\");\n eventEntity.register(\"step1\", \"Complete Step 1\");\n eventEntity.register(\"step2\", \"Complete Step 2\");\n eventEntity.register(\"step3\", \"Complete Step 3\");\n eventEntity.register(\"unrelated\", \"Unrelated Event\");\n\n eventEntity.emit(\"step1\");\n eventEntity.emit(\"step2\");\n eventEntity.emit(\"unrelated\");\n eventEntity.emit(\"step3\");\n\n expect(procedureEntity.userEventLog).toEqual([\"step1\", \"step2\", \"step3\"]);\n expect(procedureEntity.isComplete).toBe(true);\n expect(procedureEntity.getProgressPercentage()).toBe(100);\n });\n\n it(\"respects procedure ordering when orderMatters is true\", () => {\n procedureEntity.addEventId(\"step1\");\n procedureEntity.addEventId(\"step2\");\n procedureEntity.addEventId(\"step3\");\n eventEntity.register(\"step1\", \"Complete Step 1\");\n eventEntity.register(\"step2\", \"Complete Step 2\");\n eventEntity.register(\"step3\", \"Complete Step 3\");\n eventEntity.register(\"unrelated\", \"Unrelated Event\");\n\n procedureEntity.setOrderMatters(true);\n\n eventEntity.emit(\"step2\");\n eventEntity.emit(\"step1\");\n eventEntity.emit(\"step2\");\n\n expect(procedureEntity.userEventLog).toEqual([\"step2\", \"step1\", \"step2\"]);\n expect(procedureEntity.getProgressPercentage()).toBe(\n Math.round((2 / 3) * 100),\n );\n });\n\n it(\"allows any order when orderMatters is false\", () => {\n procedureEntity.addEventId(\"step1\");\n procedureEntity.addEventId(\"step2\");\n procedureEntity.addEventId(\"step3\");\n eventEntity.register(\"step1\", \"Complete Step 1\");\n eventEntity.register(\"step2\", \"Complete Step 2\");\n eventEntity.register(\"step3\", \"Complete Step 3\");\n\n procedureEntity.setOrderMatters(false);\n\n eventEntity.emit(\"step3\");\n eventEntity.emit(\"step1\");\n eventEntity.emit(\"step2\");\n\n expect(procedureEntity.userEventLog).toEqual([\"step3\", \"step1\", \"step2\"]);\n expect(procedureEntity.isComplete).toBe(true);\n });\n\n it(\"resets procedure progress while preserving configuration\", () => {\n procedureEntity.addEventId(\"reset_test1\");\n procedureEntity.addEventId(\"reset_test2\");\n eventEntity.register(\"reset_test1\", \"Reset Test 1\");\n eventEntity.register(\"reset_test2\", \"Reset Test 2\");\n eventEntity.emit(\"reset_test1\");\n expect(procedureEntity.userEventLog).toContain(\"reset_test1\");\n\n expect(procedureEntity.userEventLog.length).toBeGreaterThan(0);\n expect(procedureEntity.getProgressPercentage()).toBeGreaterThan(0);\n\n resetUC.resetProgress();\n\n expect(procedureEntity.userEventLog).toEqual([]);\n expect(procedureEntity.getProgressPercentage()).toBe(0);\n expect(procedureEntity.eventIds).toEqual([\"reset_test1\", \"reset_test2\"]);\n });\n\n it(\"demonstrates reset behavior with event processing\", () => {\n procedureEntity.addEventId(\"reset_test1\");\n procedureEntity.addEventId(\"reset_test2\");\n eventEntity.register(\"reset_test1\", \"Reset Test 1\");\n eventEntity.register(\"reset_test2\", \"Reset Test 2\");\n eventEntity.emit(\"reset_test1\");\n expect(procedureEntity.userEventLog).toContain(\"reset_test1\");\n\n resetUC.resetProgress();\n expect(procedureEntity.userEventLog).toEqual([]);\n\n procedureEntity.recordUserEvent(\"reset_test1\");\n expect(procedureEntity.userEventLog).toEqual([\"reset_test1\"]);\n expect(procedureEntity.getProgressPercentage()).toBe(50);\n });\n\n it(\"can be disposed safely\", () => {\n updateHook.dispose();\n expect(updateHook).toBeDefined();\n });\n\n it(\"handles missing dependencies gracefully\", () => {\n const newAppObjects = makeAppObjectRepo();\n const newAppObject = newAppObjects.getOrCreate(\"Test\");\n\n const isolatedHook = makeUpdateProcedureEventsUCHook(newAppObject);\n\n expect(isolatedHook).toBeDefined();\n isolatedHook.dispose();\n });\n\n it(\"continues working after entity reset\", () => {\n procedureEntity.addEventId(\"resilience_test\");\n eventEntity.register(\"resilience_test\", \"Resilience Test\");\n\n eventEntity.emit(\"resilience_test\");\n expect(procedureEntity.userEventLog).toContain(\"resilience_test\");\n\n eventEntity.reset();\n procedureEntity.reset();\n\n eventEntity.register(\"resilience_test\", \"Resilience Test\");\n procedureEntity.addEventId(\"resilience_test\");\n\n eventEntity.emit(\"resilience_test\");\n expect(procedureEntity.userEventLog).toContain(\"resilience_test\");\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddProcedureEventUC.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/AddProcedureEventUC.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"AddProcedureEventUC.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/AddProcedureEventUC.ts"],"names":[],"mappings":";;;AAcA,0DAIC;AAlBD,sCAAoE;AACpE,iEAA8D;AAE9D,MAAsB,mBAAoB,SAAQ,kBAAW;;AAA7D,kDASC;AARiB,wBAAI,GAAG,qBAAqB,CAAC;AAItC,uBAAG,GAAG,CAAC,UAAyB,EAAmC,EAAE,CAC1E,UAAU;KACP,WAAW,CAAC,WAAW,CAAC;KACxB,YAAY,CAAsB,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAGnE,SAAgB,uBAAuB,CACrC,SAAoB;IAEpB,OAAO,IAAI,sBAAsB,CAAC,SAAS,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,sBAAuB,SAAQ,mBAAmB;IACtD,IAAY,eAAe;QACzB,OAAO,iCAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,QAAQ,CAAC,OAAe;QACtB,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectUC, AppObjectRepo } from \"@vived/core\";\nimport { ProcedureEntity } from \"../Entities/ProcedureEntity\";\n\nexport abstract class AddProcedureEventUC extends AppObjectUC {\n static readonly type = \"AddProcedureEventUC\";\n\n abstract addEvent(eventId: string): void;\n\n static get = (appObjects: AppObjectRepo): AddProcedureEventUC | undefined =>\n appObjects\n .getOrCreate(\"Procedure\")\n .getComponent<AddProcedureEventUC>(AddProcedureEventUC.type);\n}\n\nexport function makeAddProcedureEventUC(\n appObject: AppObject,\n): AddProcedureEventUC {\n return new AddProcedureEventUCImp(appObject);\n}\n\nclass AddProcedureEventUCImp extends AddProcedureEventUC {\n private get procedureEntity(): ProcedureEntity | undefined {\n return ProcedureEntity.get(this.appObjects);\n }\n\n addEvent(eventId: string): void {\n if (!eventId || eventId.trim() === \"\") {\n this.warn(\"Cannot add empty event ID to procedure\");\n return;\n }\n\n const entity = this.procedureEntity;\n if (!entity) {\n this.warn(\"ProcedureEntity not found - cannot add event\");\n return;\n }\n\n entity.addEventId(eventId.trim());\n }\n\n constructor(appObject: AppObject) {\n super(appObject, AddProcedureEventUC.type);\n }\n}\n"]}
|
|
@@ -25,10 +25,7 @@ describe("AddProcedureEventUC", () => {
|
|
|
25
25
|
it("successfully adds valid event IDs", () => {
|
|
26
26
|
addEventUC.addEvent("test_event_1");
|
|
27
27
|
addEventUC.addEvent("test_event_2");
|
|
28
|
-
expect(procedureEntity.eventIds).toEqual([
|
|
29
|
-
"test_event_1",
|
|
30
|
-
"test_event_2",
|
|
31
|
-
]);
|
|
28
|
+
expect(procedureEntity.eventIds).toEqual(["test_event_1", "test_event_2"]);
|
|
32
29
|
});
|
|
33
30
|
it("trims whitespace from event IDs", () => {
|
|
34
31
|
addEventUC.addEvent(" test_event ");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddProcedureEventUC.test.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/AddProcedureEventUC.test.ts"],"names":[],"mappings":";;AAAA,sCAA+D;AAC/D,
|
|
1
|
+
{"version":3,"file":"AddProcedureEventUC.test.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/AddProcedureEventUC.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObjectRepo, makeAppObjectRepo } from \"@vived/core\";\nimport {\n ProcedureEntity,\n makeProcedureEntity,\n} from \"../Entities/ProcedureEntity\";\nimport {\n AddProcedureEventUC,\n makeAddProcedureEventUC,\n} from \"./AddProcedureEventUC\";\n\ndescribe(\"AddProcedureEventUC\", () => {\n let appObjects: AppObjectRepo;\n let procedureEntity: ProcedureEntity;\n let addEventUC: AddProcedureEventUC;\n\n beforeEach(() => {\n appObjects = makeAppObjectRepo();\n const appObject = appObjects.getOrCreate(\"Procedure\");\n\n procedureEntity = makeProcedureEntity(appObject);\n addEventUC = makeAddProcedureEventUC(appObject);\n });\n\n it(\"can be retrieved via static get method\", () => {\n const retrieved = AddProcedureEventUC.get(appObjects);\n expect(retrieved).toBe(addEventUC);\n });\n\n it(\"registers itself on the AppObject\", () => {\n const appObject = appObjects.getOrCreate(\"Procedure\");\n const retrieved = appObject.getComponent<AddProcedureEventUC>(\n AddProcedureEventUC.type,\n );\n expect(retrieved).toBe(addEventUC);\n });\n\n it(\"successfully adds valid event IDs\", () => {\n addEventUC.addEvent(\"test_event_1\");\n addEventUC.addEvent(\"test_event_2\");\n\n expect(procedureEntity.eventIds).toEqual([\"test_event_1\", \"test_event_2\"]);\n });\n\n it(\"trims whitespace from event IDs\", () => {\n addEventUC.addEvent(\" test_event \");\n\n expect(procedureEntity.eventIds).toEqual([\"test_event\"]);\n });\n\n it(\"delegates to ProcedureEntity for validation\", () => {\n addEventUC.addEvent(\"test_event\");\n addEventUC.addEvent(\"test_event\");\n\n expect(procedureEntity.eventIds).toEqual([\"test_event\"]);\n expect(procedureEntity.validationMessage).toContain(\n \"already in the procedure\",\n );\n });\n\n it(\"handles empty event IDs gracefully\", () => {\n appObjects.submitWarning = jest.fn();\n\n addEventUC.addEvent(\"\");\n addEventUC.addEvent(\" \");\n\n expect(procedureEntity.eventIds).toEqual([]);\n expect(appObjects.submitWarning).toHaveBeenCalled();\n });\n\n it(\"handles missing ProcedureEntity gracefully\", () => {\n const isolatedAppObjects = makeAppObjectRepo();\n const isolatedAppObject = isolatedAppObjects.getOrCreate(\"Isolated\");\n const isolatedUC = makeAddProcedureEventUC(isolatedAppObject);\n\n isolatedAppObjects.submitWarning = jest.fn();\n\n isolatedUC.addEvent(\"test_event\");\n\n expect(isolatedAppObjects.submitWarning).toHaveBeenCalled();\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MoveProcedureEventDownUC.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/MoveProcedureEventDownUC.ts"],"names":[],"mappings":";;;AAgBA,oEAIC;AApBD,sCAAoE;AACpE,iEAA8D;AAE9D,MAAsB,wBAAyB,SAAQ,kBAAW;;AAAlE,4DAWC;AAViB,6BAAI,GAAG,0BAA0B,CAAC;AAI3C,4BAAG,GAAG,CACX,UAAyB,EACa,EAAE,CACxC,UAAU;KACP,WAAW,CAAC,WAAW,CAAC;KACxB,YAAY,CAA2B,wBAAwB,CAAC,IAAI,CAAC,CAAC;AAG7E,SAAgB,4BAA4B,CAC1C,SAAoB;IAEpB,OAAO,IAAI,2BAA2B,CAAC,SAAS,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,2BAA4B,SAAQ,wBAAwB;IAChE,IAAY,eAAe;QACzB,OAAO,iCAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,aAAa,CAAC,KAAa;QACzB,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QAED,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectUC, AppObjectRepo } from \"@vived/core\";\
|
|
1
|
+
{"version":3,"file":"MoveProcedureEventDownUC.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/MoveProcedureEventDownUC.ts"],"names":[],"mappings":";;;AAgBA,oEAIC;AApBD,sCAAoE;AACpE,iEAA8D;AAE9D,MAAsB,wBAAyB,SAAQ,kBAAW;;AAAlE,4DAWC;AAViB,6BAAI,GAAG,0BAA0B,CAAC;AAI3C,4BAAG,GAAG,CACX,UAAyB,EACa,EAAE,CACxC,UAAU;KACP,WAAW,CAAC,WAAW,CAAC;KACxB,YAAY,CAA2B,wBAAwB,CAAC,IAAI,CAAC,CAAC;AAG7E,SAAgB,4BAA4B,CAC1C,SAAoB;IAEpB,OAAO,IAAI,2BAA2B,CAAC,SAAS,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,2BAA4B,SAAQ,wBAAwB;IAChE,IAAY,eAAe;QACzB,OAAO,iCAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,aAAa,CAAC,KAAa;QACzB,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QAED,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectUC, AppObjectRepo } from \"@vived/core\";\nimport { ProcedureEntity } from \"../Entities/ProcedureEntity\";\n\nexport abstract class MoveProcedureEventDownUC extends AppObjectUC {\n static readonly type = \"MoveProcedureEventDownUC\";\n\n abstract moveEventDown(index: number): void;\n\n static get = (\n appObjects: AppObjectRepo,\n ): MoveProcedureEventDownUC | undefined =>\n appObjects\n .getOrCreate(\"Procedure\")\n .getComponent<MoveProcedureEventDownUC>(MoveProcedureEventDownUC.type);\n}\n\nexport function makeMoveProcedureEventDownUC(\n appObject: AppObject,\n): MoveProcedureEventDownUC {\n return new MoveProcedureEventDownUCImp(appObject);\n}\n\nclass MoveProcedureEventDownUCImp extends MoveProcedureEventDownUC {\n private get procedureEntity(): ProcedureEntity | undefined {\n return ProcedureEntity.get(this.appObjects);\n }\n\n moveEventDown(index: number): void {\n if (index < 0) {\n this.warn(\"Cannot move event down - invalid index\");\n return;\n }\n\n const entity = this.procedureEntity;\n if (!entity) {\n this.warn(\"ProcedureEntity not found - cannot move event down\");\n return;\n }\n\n entity.moveEventDown(index);\n }\n\n constructor(appObject: AppObject) {\n super(appObject, MoveProcedureEventDownUC.type);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MoveProcedureEventDownUC.test.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/MoveProcedureEventDownUC.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAChD,
|
|
1
|
+
{"version":3,"file":"MoveProcedureEventDownUC.test.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/MoveProcedureEventDownUC.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAChD,iEAGqC;AACrC,yEAGoC;AAEpC,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IACvC,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,eAAe,GAAG,IAAA,qCAAmB,EAAC,SAAS,CAAC,CAAC;IACvD,MAAM,EAAE,GAAG,IAAA,uDAA4B,EAAC,SAAS,CAAC,CAAC;IACnD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;AACxD,CAAC;AAED,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QACzC,MAAM,CAAC,mDAAwB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC9C,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACtC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACtC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAEtC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAEpB,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC9C,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACtC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAEtC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAEpB,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QACzC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAErC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAErB,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;QACvC,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,EAAE,GAAG,IAAA,uDAA4B,EAAC,SAAS,CAAC,CAAC;QACnD,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAErC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAEpB,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport {\n ProcedureEntity,\n makeProcedureEntity,\n} from \"../Entities/ProcedureEntity\";\nimport {\n MoveProcedureEventDownUC,\n makeMoveProcedureEventDownUC,\n} from \"./MoveProcedureEventDownUC\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const appObject = appObjects.getOrCreate(\"Procedure\");\n const procedureEntity = makeProcedureEntity(appObject);\n const uc = makeMoveProcedureEventDownUC(appObject);\n return { appObjects, appObject, procedureEntity, uc };\n}\n\ndescribe(\"MoveProcedureEventDownUC\", () => {\n it(\"can be retrieved via static get method\", () => {\n const { appObjects, uc } = makeTestRig();\n expect(MoveProcedureEventDownUC.get(appObjects)).toBe(uc);\n });\n\n it(\"moves an event down in the list\", () => {\n const { procedureEntity, uc } = makeTestRig();\n procedureEntity.addEventId(\"event_a\");\n procedureEntity.addEventId(\"event_b\");\n procedureEntity.addEventId(\"event_c\");\n\n uc.moveEventDown(1);\n\n expect(procedureEntity.eventIds).toEqual([\"event_a\", \"event_c\", \"event_b\"]);\n });\n\n it(\"moves an event at the last index (no-op at bottom)\", () => {\n const { procedureEntity, uc } = makeTestRig();\n procedureEntity.addEventId(\"event_a\");\n procedureEntity.addEventId(\"event_b\");\n\n uc.moveEventDown(1);\n\n expect(procedureEntity.eventIds).toEqual([\"event_a\", \"event_b\"]);\n });\n\n it(\"warns and does not throw for negative index\", () => {\n const { uc, appObjects } = makeTestRig();\n appObjects.submitWarning = jest.fn();\n\n uc.moveEventDown(-1);\n\n expect(appObjects.submitWarning).toHaveBeenCalled();\n });\n\n it(\"warns when ProcedureEntity is not found\", () => {\n const appObjects = makeAppObjectRepo();\n const appObject = appObjects.getOrCreate(\"Procedure\");\n const uc = makeMoveProcedureEventDownUC(appObject);\n appObjects.submitWarning = jest.fn();\n\n uc.moveEventDown(0);\n\n expect(appObjects.submitWarning).toHaveBeenCalled();\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MoveProcedureEventUpUC.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/MoveProcedureEventUpUC.ts"],"names":[],"mappings":";;;AAgBA,gEAIC;AApBD,sCAAoE;AACpE,iEAA8D;AAE9D,MAAsB,sBAAuB,SAAQ,kBAAW;;AAAhE,wDAWC;AAViB,2BAAI,GAAG,wBAAwB,CAAC;AAIzC,0BAAG,GAAG,CACX,UAAyB,EACW,EAAE,CACtC,UAAU;KACP,WAAW,CAAC,WAAW,CAAC;KACxB,YAAY,CAAyB,sBAAsB,CAAC,IAAI,CAAC,CAAC;AAGzE,SAAgB,0BAA0B,CACxC,SAAoB;IAEpB,OAAO,IAAI,yBAAyB,CAAC,SAAS,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,yBAA0B,SAAQ,sBAAsB;IAC5D,IAAY,eAAe;QACzB,OAAO,iCAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectUC, AppObjectRepo } from \"@vived/core\";\
|
|
1
|
+
{"version":3,"file":"MoveProcedureEventUpUC.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/MoveProcedureEventUpUC.ts"],"names":[],"mappings":";;;AAgBA,gEAIC;AApBD,sCAAoE;AACpE,iEAA8D;AAE9D,MAAsB,sBAAuB,SAAQ,kBAAW;;AAAhE,wDAWC;AAViB,2BAAI,GAAG,wBAAwB,CAAC;AAIzC,0BAAG,GAAG,CACX,UAAyB,EACW,EAAE,CACtC,UAAU;KACP,WAAW,CAAC,WAAW,CAAC;KACxB,YAAY,CAAyB,sBAAsB,CAAC,IAAI,CAAC,CAAC;AAGzE,SAAgB,0BAA0B,CACxC,SAAoB;IAEpB,OAAO,IAAI,yBAAyB,CAAC,SAAS,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,yBAA0B,SAAQ,sBAAsB;IAC5D,IAAY,eAAe;QACzB,OAAO,iCAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;CACF","sourcesContent":["import { AppObject, AppObjectUC, AppObjectRepo } from \"@vived/core\";\nimport { ProcedureEntity } from \"../Entities/ProcedureEntity\";\n\nexport abstract class MoveProcedureEventUpUC extends AppObjectUC {\n static readonly type = \"MoveProcedureEventUpUC\";\n\n abstract moveEventUp(index: number): void;\n\n static get = (\n appObjects: AppObjectRepo,\n ): MoveProcedureEventUpUC | undefined =>\n appObjects\n .getOrCreate(\"Procedure\")\n .getComponent<MoveProcedureEventUpUC>(MoveProcedureEventUpUC.type);\n}\n\nexport function makeMoveProcedureEventUpUC(\n appObject: AppObject,\n): MoveProcedureEventUpUC {\n return new MoveProcedureEventUpUCImp(appObject);\n}\n\nclass MoveProcedureEventUpUCImp extends MoveProcedureEventUpUC {\n private get procedureEntity(): ProcedureEntity | undefined {\n return ProcedureEntity.get(this.appObjects);\n }\n\n moveEventUp(index: number): void {\n if (index < 0) {\n this.warn(\"Cannot move event up - invalid index\");\n return;\n }\n\n const entity = this.procedureEntity;\n if (!entity) {\n this.warn(\"ProcedureEntity not found - cannot move event up\");\n return;\n }\n\n entity.moveEventUp(index);\n }\n\n constructor(appObject: AppObject) {\n super(appObject, MoveProcedureEventUpUC.type);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MoveProcedureEventUpUC.test.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/MoveProcedureEventUpUC.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAChD,
|
|
1
|
+
{"version":3,"file":"MoveProcedureEventUpUC.test.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/MoveProcedureEventUpUC.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAChD,iEAGqC;AACrC,qEAGkC;AAElC,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;IACvC,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,eAAe,GAAG,IAAA,qCAAmB,EAAC,SAAS,CAAC,CAAC;IACvD,MAAM,EAAE,GAAG,IAAA,mDAA0B,EAAC,SAAS,CAAC,CAAC;IACjD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;AACxD,CAAC;AAED,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QACzC,MAAM,CAAC,+CAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC9C,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACtC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACtC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAEtC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAElB,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC9C,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACtC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAEtC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAElB,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QACzC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAErC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnB,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;QACvC,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,EAAE,GAAG,IAAA,mDAA0B,EAAC,SAAS,CAAC,CAAC;QACjD,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAErC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAElB,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport {\n ProcedureEntity,\n makeProcedureEntity,\n} from \"../Entities/ProcedureEntity\";\nimport {\n MoveProcedureEventUpUC,\n makeMoveProcedureEventUpUC,\n} from \"./MoveProcedureEventUpUC\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const appObject = appObjects.getOrCreate(\"Procedure\");\n const procedureEntity = makeProcedureEntity(appObject);\n const uc = makeMoveProcedureEventUpUC(appObject);\n return { appObjects, appObject, procedureEntity, uc };\n}\n\ndescribe(\"MoveProcedureEventUpUC\", () => {\n it(\"can be retrieved via static get method\", () => {\n const { appObjects, uc } = makeTestRig();\n expect(MoveProcedureEventUpUC.get(appObjects)).toBe(uc);\n });\n\n it(\"moves an event up in the list\", () => {\n const { procedureEntity, uc } = makeTestRig();\n procedureEntity.addEventId(\"event_a\");\n procedureEntity.addEventId(\"event_b\");\n procedureEntity.addEventId(\"event_c\");\n\n uc.moveEventUp(1);\n\n expect(procedureEntity.eventIds).toEqual([\"event_b\", \"event_a\", \"event_c\"]);\n });\n\n it(\"moves an event at index 0 (no-op at top)\", () => {\n const { procedureEntity, uc } = makeTestRig();\n procedureEntity.addEventId(\"event_a\");\n procedureEntity.addEventId(\"event_b\");\n\n uc.moveEventUp(0);\n\n expect(procedureEntity.eventIds).toEqual([\"event_a\", \"event_b\"]);\n });\n\n it(\"warns and does not throw for negative index\", () => {\n const { uc, appObjects } = makeTestRig();\n appObjects.submitWarning = jest.fn();\n\n uc.moveEventUp(-1);\n\n expect(appObjects.submitWarning).toHaveBeenCalled();\n });\n\n it(\"warns when ProcedureEntity is not found\", () => {\n const appObjects = makeAppObjectRepo();\n const appObject = appObjects.getOrCreate(\"Procedure\");\n const uc = makeMoveProcedureEventUpUC(appObject);\n appObjects.submitWarning = jest.fn();\n\n uc.moveEventUp(0);\n\n expect(appObjects.submitWarning).toHaveBeenCalled();\n });\n});\n"]}
|