@vived/app 6.7.1 → 6.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/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/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/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
|
@@ -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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecordProcedureEventUC.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/RecordProcedureEventUC.ts"],"names":[],"mappings":";;;AAgBA,gEAIC;AApBD,sCAAoE;AACpE,iEAA8D;AAE9D,MAAsB,sBAAuB,SAAQ,kBAAW;;AAAhE,wDAWC;AAViB,2BAAI,GAAG,wBAAwB,CAAC;AAIzC,0BAAG,GAAG,CACX,UAAyB,EACW,EAAE,CACtC,UAAU;KACP,WAAW,CAAC,WAAW,CAAC;KACxB,YAAY,CAAyB,sBAAsB,CAAC,IAAI,CAAC,CAAC;AAGzE,SAAgB,0BAA0B,CACxC,SAAoB;IAEpB,OAAO,IAAI,yBAAyB,CAAC,SAAS,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,yBAA0B,SAAQ,sBAAsB;IAC5D,IAAY,eAAe;QACzB,OAAO,iCAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,WAAW,CAAC,OAAe;QACzB,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,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":"RecordProcedureEventUC.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/RecordProcedureEventUC.ts"],"names":[],"mappings":";;;AAgBA,gEAIC;AApBD,sCAAoE;AACpE,iEAA8D;AAE9D,MAAsB,sBAAuB,SAAQ,kBAAW;;AAAhE,wDAWC;AAViB,2BAAI,GAAG,wBAAwB,CAAC;AAIzC,0BAAG,GAAG,CACX,UAAyB,EACW,EAAE,CACtC,UAAU;KACP,WAAW,CAAC,WAAW,CAAC;KACxB,YAAY,CAAyB,sBAAsB,CAAC,IAAI,CAAC,CAAC;AAGzE,SAAgB,0BAA0B,CACxC,SAAoB;IAEpB,OAAO,IAAI,yBAAyB,CAAC,SAAS,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,yBAA0B,SAAQ,sBAAsB;IAC5D,IAAY,eAAe;QACzB,OAAO,iCAAe,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED,WAAW,CAAC,OAAe;QACzB,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,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 RecordProcedureEventUC extends AppObjectUC {\n static readonly type = \"RecordProcedureEventUC\";\n\n abstract recordEvent(eventId: string): void;\n\n static get = (\n appObjects: AppObjectRepo,\n ): RecordProcedureEventUC | undefined =>\n appObjects\n .getOrCreate(\"Procedure\")\n .getComponent<RecordProcedureEventUC>(RecordProcedureEventUC.type);\n}\n\nexport function makeRecordProcedureEventUC(\n appObject: AppObject,\n): RecordProcedureEventUC {\n return new RecordProcedureEventUCImp(appObject);\n}\n\nclass RecordProcedureEventUCImp extends RecordProcedureEventUC {\n private get procedureEntity(): ProcedureEntity | undefined {\n return ProcedureEntity.get(this.appObjects);\n }\n\n recordEvent(eventId: string): void {\n if (!eventId || eventId.trim() === \"\") {\n this.warn(\"Cannot record empty event ID\");\n return;\n }\n\n const entity = this.procedureEntity;\n if (!entity) {\n this.warn(\"ProcedureEntity not found - cannot record event\");\n return;\n }\n\n entity.recordUserEvent(eventId.trim());\n }\n\n constructor(appObject: AppObject) {\n super(appObject, RecordProcedureEventUC.type);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecordProcedureEventUC.test.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/RecordProcedureEventUC.test.ts"],"names":[],"mappings":";;AAAA,sCAAgD;AAChD,
|
|
1
|
+
{"version":3,"file":"RecordProcedureEventUC.test.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/RecordProcedureEventUC.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,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACtC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACtC,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,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC9C,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC1B,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC9C,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAC9B,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC9C,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC1B,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC1B,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,EAAE,eAAe,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAC1D,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAErC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACnB,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAEtB,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjD,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,UAAU,GAAG,IAAA,wBAAiB,GAAE,CAAC;QACvC,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,EAAE,GAAG,IAAA,mDAA0B,EAAC,SAAS,CAAC,CAAC;QACjD,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAErC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAE1B,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\nimport {\n ProcedureEntity,\n makeProcedureEntity,\n} from \"../Entities/ProcedureEntity\";\nimport {\n RecordProcedureEventUC,\n makeRecordProcedureEventUC,\n} from \"./RecordProcedureEventUC\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n const appObject = appObjects.getOrCreate(\"Procedure\");\n const procedureEntity = makeProcedureEntity(appObject);\n const uc = makeRecordProcedureEventUC(appObject);\n procedureEntity.addEventId(\"event_a\");\n procedureEntity.addEventId(\"event_b\");\n return { appObjects, appObject, procedureEntity, uc };\n}\n\ndescribe(\"RecordProcedureEventUC\", () => {\n it(\"can be retrieved via static get method\", () => {\n const { appObjects, uc } = makeTestRig();\n expect(RecordProcedureEventUC.get(appObjects)).toBe(uc);\n });\n\n it(\"records a valid event ID on the entity\", () => {\n const { procedureEntity, uc } = makeTestRig();\n uc.recordEvent(\"event_a\");\n expect(procedureEntity.userEventLog).toEqual([\"event_a\"]);\n });\n\n it(\"trims whitespace from event IDs before recording\", () => {\n const { procedureEntity, uc } = makeTestRig();\n uc.recordEvent(\" event_a \");\n expect(procedureEntity.userEventLog).toEqual([\"event_a\"]);\n });\n\n it(\"records consecutive events in order\", () => {\n const { procedureEntity, uc } = makeTestRig();\n uc.recordEvent(\"event_a\");\n uc.recordEvent(\"event_b\");\n expect(procedureEntity.userEventLog).toEqual([\"event_a\", \"event_b\"]);\n });\n\n it(\"warns and does not record empty event IDs\", () => {\n const { procedureEntity, uc, appObjects } = makeTestRig();\n appObjects.submitWarning = jest.fn();\n\n uc.recordEvent(\"\");\n uc.recordEvent(\" \");\n\n expect(procedureEntity.userEventLog).toEqual([]);\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 = makeRecordProcedureEventUC(appObject);\n appObjects.submitWarning = jest.fn();\n\n uc.recordEvent(\"event_a\");\n\n expect(appObjects.submitWarning).toHaveBeenCalled();\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecordProcedureSessionUC.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/RecordProcedureSessionUC.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"RecordProcedureSessionUC.js","sourceRoot":"","sources":["../../../../src/Procedure/UCs/RecordProcedureSessionUC.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectUC, AppObjectRepo } from \"@vived/core\";\nimport { BaseAppState } from \"../../BaseApp\";\nimport { ChallengeEntity } from \"../../Challenge\";\nimport { EventEntity } from \"../../EventSystem\";\nimport { StateMachineEntity, SerializedStates } from \"../../StateMachine\";\nimport { clearUndoStack } from \"../../UndoRedo\";\nimport { AddProcedureEventUC } from \"./AddProcedureEventUC\";\nimport { ProcedureEntity } from \"../Entities/ProcedureEntity\";\nimport { PROCEDURE_SYSTEM_NAME } from \"../types\";\n\nexport abstract class RecordProcedureSessionUC extends AppObjectUC {\n static readonly type = \"RecordProcedureSessionUC\";\n\n abstract startRecording(): void;\n abstract stopRecording(): void;\n\n static get = (\n appObjects: AppObjectRepo,\n ): RecordProcedureSessionUC | undefined =>\n appObjects\n .getOrCreate(\"Procedure\")\n .getComponent<RecordProcedureSessionUC>(RecordProcedureSessionUC.type);\n}\n\nexport function makeRecordProcedureSessionUC(\n appObject: AppObject,\n): RecordProcedureSessionUC {\n return new RecordProcedureSessionUCImp(appObject);\n}\n\nclass RecordProcedureSessionUCImp extends RecordProcedureSessionUC {\n private savedState: SerializedStates | undefined;\n\n private get procedureEntity(): ProcedureEntity | undefined {\n return ProcedureEntity.get(this.appObjects);\n }\n\n private get baseAppState(): BaseAppState | undefined {\n return BaseAppState.get(this.appObjects);\n }\n\n private get challengeEntity(): ChallengeEntity | undefined {\n return ChallengeEntity.get(this.appObjects);\n }\n\n private get eventEntity(): EventEntity | undefined {\n return EventEntity.get(this.appObjects);\n }\n\n private get stateMachine(): StateMachineEntity | undefined {\n return StateMachineEntity.get(this.appObjects);\n }\n\n startRecording = (): void => {\n if (!this.baseAppState?.isAuthoring) return;\n if (this.challengeEntity?.selectedChallenge !== \"PROCEDURE\") return;\n\n const procedureEntity = this.procedureEntity;\n if (!procedureEntity) {\n this.warn(\"ProcedureEntity not found - cannot start recording\");\n return;\n }\n\n if (procedureEntity.isRecording) return;\n\n const eventEntity = this.eventEntity;\n if (!eventEntity) {\n this.warn(\"EventEntity not found - cannot start recording\");\n return;\n }\n\n const stateMachine = this.stateMachine;\n if (stateMachine) {\n this.savedState = stateMachine.getSerializedStates();\n } else {\n this.warn(\n \"StateMachineEntity not found - scene state will not be restored on stop\",\n );\n }\n\n procedureEntity.setIsRecording(true);\n eventEntity.addEmissionListener(this.onEmission);\n this.baseAppState?.addChangeObserver(this.onAuthoringChanged);\n this.challengeEntity?.addChangeObserver(this.onChallengeChanged);\n };\n\n stopRecording = (): void => {\n const procedureEntity = this.procedureEntity;\n if (!procedureEntity?.isRecording) return;\n\n procedureEntity.setIsRecording(false);\n this.eventEntity?.removeEmissionListener(this.onEmission);\n this.baseAppState?.removeChangeObserver(this.onAuthoringChanged);\n this.challengeEntity?.removeChangeObserver(this.onChallengeChanged);\n\n if (this.savedState) {\n const stateMachine = this.stateMachine;\n if (stateMachine) {\n const merged: SerializedStates = {\n ...this.savedState,\n systems: [...this.savedState.systems],\n };\n\n const currentProcedure = stateMachine\n .getSerializedStates()\n .systems.find((s) => s.name === PROCEDURE_SYSTEM_NAME);\n\n if (currentProcedure) {\n const idx = merged.systems.findIndex(\n (s) => s.name === PROCEDURE_SYSTEM_NAME,\n );\n if (idx >= 0) {\n merged.systems[idx] = currentProcedure;\n } else {\n merged.systems.push(currentProcedure);\n }\n }\n\n stateMachine.setSerializedStates(merged, stateMachine.restoreDurationS);\n clearUndoStack(this.appObjects);\n } else {\n this.warn(\n \"StateMachineEntity not found at stop - scene state not restored\",\n );\n }\n\n this.savedState = undefined;\n }\n };\n\n private onEmission = (eventId: string): void => {\n if (!this.procedureEntity?.isRecording) return;\n AddProcedureEventUC.get(this.appObjects)?.addEvent(eventId);\n };\n\n private onAuthoringChanged = (): void => {\n if (!this.baseAppState?.isAuthoring) {\n this.stopRecording();\n }\n };\n\n private onChallengeChanged = (): void => {\n if (this.challengeEntity?.selectedChallenge !== \"PROCEDURE\") {\n this.stopRecording();\n }\n };\n\n dispose(): void {\n if (this.procedureEntity?.isRecording) {\n this.eventEntity?.removeEmissionListener(this.onEmission);\n this.baseAppState?.removeChangeObserver(this.onAuthoringChanged);\n this.challengeEntity?.removeChangeObserver(this.onChallengeChanged);\n }\n this.savedState = undefined;\n super.dispose();\n }\n\n constructor(appObject: AppObject) {\n super(appObject, RecordProcedureSessionUC.type);\n }\n}\n"]}
|
|
@@ -199,14 +199,22 @@ describe("RecordProcedureSessionUC", () => {
|
|
|
199
199
|
.mockReturnValueOnce({
|
|
200
200
|
version: 2,
|
|
201
201
|
systems: [
|
|
202
|
-
{
|
|
202
|
+
{
|
|
203
|
+
name: "amtec",
|
|
204
|
+
serializationVersion: 1,
|
|
205
|
+
state: { powerIsOn: false },
|
|
206
|
+
},
|
|
203
207
|
{ name: "procedure", serializationVersion: 1, state: { events: [] } },
|
|
204
208
|
],
|
|
205
209
|
})
|
|
206
210
|
.mockReturnValueOnce({
|
|
207
211
|
version: 2,
|
|
208
212
|
systems: [
|
|
209
|
-
{
|
|
213
|
+
{
|
|
214
|
+
name: "amtec",
|
|
215
|
+
serializationVersion: 1,
|
|
216
|
+
state: { powerIsOn: true },
|
|
217
|
+
},
|
|
210
218
|
recordedProcedure,
|
|
211
219
|
],
|
|
212
220
|
});
|
|
@@ -218,12 +226,22 @@ describe("RecordProcedureSessionUC", () => {
|
|
|
218
226
|
});
|
|
219
227
|
it("snapshot - restores equipment state from the snapshot (not current state)", () => {
|
|
220
228
|
const { uc, mockStateMachine } = makeTestRig();
|
|
221
|
-
const snapshotAmtec = {
|
|
229
|
+
const snapshotAmtec = {
|
|
230
|
+
name: "amtec",
|
|
231
|
+
serializationVersion: 1,
|
|
232
|
+
state: { powerIsOn: false },
|
|
233
|
+
};
|
|
222
234
|
mockStateMachine.getSerializedStates
|
|
223
235
|
.mockReturnValueOnce({ version: 2, systems: [snapshotAmtec] })
|
|
224
236
|
.mockReturnValueOnce({
|
|
225
237
|
version: 2,
|
|
226
|
-
systems: [
|
|
238
|
+
systems: [
|
|
239
|
+
{
|
|
240
|
+
name: "amtec",
|
|
241
|
+
serializationVersion: 1,
|
|
242
|
+
state: { powerIsOn: true },
|
|
243
|
+
},
|
|
244
|
+
],
|
|
227
245
|
});
|
|
228
246
|
uc.startRecording();
|
|
229
247
|
uc.stopRecording();
|