@vived/app 6.6.0 → 6.7.1
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/dist/cjs/BaseApp/UC/RenderCanvasUC.js +17 -36
- package/dist/cjs/BaseApp/UC/RenderCanvasUC.js.map +1 -1
- package/dist/cjs/BaseApp/UC/RenderCanvasUC.test.js +18 -18
- package/dist/cjs/BaseApp/UC/RenderCanvasUC.test.js.map +1 -1
- package/dist/cjs/Challenge/Factories/ChallengeFeatureFactory.js +9 -28
- package/dist/cjs/Challenge/Factories/ChallengeFeatureFactory.js.map +1 -1
- package/dist/cjs/Challenge/Factories/ChallengeFeatureFactory.test.js +51 -0
- package/dist/cjs/Challenge/Factories/ChallengeFeatureFactory.test.js.map +1 -0
- package/dist/cjs/EventSystem/Entities/EventEntity.js +12 -2
- package/dist/cjs/EventSystem/Entities/EventEntity.js.map +1 -1
- package/dist/cjs/EventSystem/Entities/EventEntity.test.js +45 -0
- package/dist/cjs/EventSystem/Entities/EventEntity.test.js.map +1 -1
- package/dist/cjs/EventSystem/Mocks/MockEventEntity.js +7 -2
- package/dist/cjs/EventSystem/Mocks/MockEventEntity.js.map +1 -1
- package/dist/cjs/EventSystem/types.js.map +1 -1
- package/dist/cjs/ObjectPick/Factories/setupObjectPick.js +18 -1
- package/dist/cjs/ObjectPick/Factories/setupObjectPick.js.map +1 -1
- package/dist/cjs/ObjectPick/Factories/setupObjectPick.test.js +55 -0
- package/dist/cjs/ObjectPick/Factories/setupObjectPick.test.js.map +1 -0
- package/dist/cjs/Procedure/Adapters/procedureAdapter.js +1 -0
- package/dist/cjs/Procedure/Adapters/procedureAdapter.js.map +1 -1
- package/dist/cjs/Procedure/Adapters/procedureAdapter.test.js +1 -0
- package/dist/cjs/Procedure/Adapters/procedureAdapter.test.js.map +1 -1
- package/dist/cjs/Procedure/Adapters/procedureAuthoringAdapter.js +2 -0
- package/dist/cjs/Procedure/Adapters/procedureAuthoringAdapter.js.map +1 -1
- package/dist/cjs/Procedure/Adapters/procedureAuthoringAdapter.test.js +3 -0
- package/dist/cjs/Procedure/Adapters/procedureAuthoringAdapter.test.js.map +1 -1
- package/dist/cjs/Procedure/Adapters/procedureHintAdapter.test.js +1 -0
- package/dist/cjs/Procedure/Adapters/procedureHintAdapter.test.js.map +1 -1
- package/dist/cjs/Procedure/Adapters/procedureProgressAdapter.js +2 -0
- package/dist/cjs/Procedure/Adapters/procedureProgressAdapter.js.map +1 -1
- package/dist/cjs/Procedure/Adapters/procedureProgressAdapter.test.js +3 -0
- package/dist/cjs/Procedure/Adapters/procedureProgressAdapter.test.js.map +1 -1
- package/dist/cjs/Procedure/Adapters/procedureQuizResultAdapter.js +2 -0
- package/dist/cjs/Procedure/Adapters/procedureQuizResultAdapter.js.map +1 -1
- package/dist/cjs/Procedure/Adapters/procedureQuizResultAdapter.test.js +3 -0
- package/dist/cjs/Procedure/Adapters/procedureQuizResultAdapter.test.js.map +1 -1
- package/dist/cjs/Procedure/Entities/ProcedureEntity.js +163 -24
- package/dist/cjs/Procedure/Entities/ProcedureEntity.js.map +1 -1
- package/dist/cjs/Procedure/Entities/ProcedureEntity.test.js +240 -0
- package/dist/cjs/Procedure/Entities/ProcedureEntity.test.js.map +1 -1
- package/dist/cjs/Procedure/Factories/ProcedureFeatureFactory.js +20 -0
- package/dist/cjs/Procedure/Factories/ProcedureFeatureFactory.js.map +1 -1
- package/dist/cjs/Procedure/Factories/ProcedureFeatureFactory.test.js +25 -0
- package/dist/cjs/Procedure/Factories/ProcedureFeatureFactory.test.js.map +1 -1
- package/dist/cjs/Procedure/Mocks/MockProcedureEntity.js +2 -0
- package/dist/cjs/Procedure/Mocks/MockProcedureEntity.js.map +1 -1
- package/dist/cjs/Procedure/PM/ProcedurePM.js +13 -1
- package/dist/cjs/Procedure/PM/ProcedurePM.js.map +1 -1
- package/dist/cjs/Procedure/PM/ProcedurePM.test.js +34 -0
- package/dist/cjs/Procedure/PM/ProcedurePM.test.js.map +1 -1
- package/dist/cjs/Procedure/UCs/UpdateProcedureEventsUCHook.test.js +3 -0
- package/dist/cjs/Procedure/UCs/UpdateProcedureEventsUCHook.test.js.map +1 -1
- package/dist/cjs/Procedure/types.js.map +1 -1
- package/dist/cjs/TouchController/UC/UpdateTouchInoutBound.test.js +37 -0
- package/dist/cjs/TouchController/UC/UpdateTouchInoutBound.test.js.map +1 -1
- package/dist/cjs/TouchController/UC/UpdateTouchInputBound.js +17 -4
- package/dist/cjs/TouchController/UC/UpdateTouchInputBound.js.map +1 -1
- package/dist/esm/BaseApp/UC/RenderCanvasUC.js +17 -36
- package/dist/esm/BaseApp/UC/RenderCanvasUC.js.map +1 -1
- package/dist/esm/BaseApp/UC/RenderCanvasUC.test.js +18 -18
- package/dist/esm/BaseApp/UC/RenderCanvasUC.test.js.map +1 -1
- package/dist/esm/Challenge/Factories/ChallengeFeatureFactory.js +9 -28
- package/dist/esm/Challenge/Factories/ChallengeFeatureFactory.js.map +1 -1
- package/dist/esm/Challenge/Factories/ChallengeFeatureFactory.test.js +49 -0
- package/dist/esm/Challenge/Factories/ChallengeFeatureFactory.test.js.map +1 -0
- package/dist/esm/EventSystem/Entities/EventEntity.js +12 -2
- package/dist/esm/EventSystem/Entities/EventEntity.js.map +1 -1
- package/dist/esm/EventSystem/Entities/EventEntity.test.js +45 -0
- package/dist/esm/EventSystem/Entities/EventEntity.test.js.map +1 -1
- package/dist/esm/EventSystem/Mocks/MockEventEntity.js +7 -2
- package/dist/esm/EventSystem/Mocks/MockEventEntity.js.map +1 -1
- package/dist/esm/EventSystem/types.js.map +1 -1
- package/dist/esm/ObjectPick/Factories/setupObjectPick.js +18 -1
- package/dist/esm/ObjectPick/Factories/setupObjectPick.js.map +1 -1
- package/dist/esm/ObjectPick/Factories/setupObjectPick.test.js +53 -0
- package/dist/esm/ObjectPick/Factories/setupObjectPick.test.js.map +1 -0
- package/dist/esm/Procedure/Adapters/procedureAdapter.js +1 -0
- package/dist/esm/Procedure/Adapters/procedureAdapter.js.map +1 -1
- package/dist/esm/Procedure/Adapters/procedureAdapter.test.js +1 -0
- package/dist/esm/Procedure/Adapters/procedureAdapter.test.js.map +1 -1
- package/dist/esm/Procedure/Adapters/procedureAuthoringAdapter.js +2 -0
- package/dist/esm/Procedure/Adapters/procedureAuthoringAdapter.js.map +1 -1
- package/dist/esm/Procedure/Adapters/procedureAuthoringAdapter.test.js +3 -0
- package/dist/esm/Procedure/Adapters/procedureAuthoringAdapter.test.js.map +1 -1
- package/dist/esm/Procedure/Adapters/procedureHintAdapter.test.js +1 -0
- package/dist/esm/Procedure/Adapters/procedureHintAdapter.test.js.map +1 -1
- package/dist/esm/Procedure/Adapters/procedureProgressAdapter.js +2 -0
- package/dist/esm/Procedure/Adapters/procedureProgressAdapter.js.map +1 -1
- package/dist/esm/Procedure/Adapters/procedureProgressAdapter.test.js +3 -0
- package/dist/esm/Procedure/Adapters/procedureProgressAdapter.test.js.map +1 -1
- package/dist/esm/Procedure/Adapters/procedureQuizResultAdapter.js +2 -0
- package/dist/esm/Procedure/Adapters/procedureQuizResultAdapter.js.map +1 -1
- package/dist/esm/Procedure/Adapters/procedureQuizResultAdapter.test.js +3 -0
- package/dist/esm/Procedure/Adapters/procedureQuizResultAdapter.test.js.map +1 -1
- package/dist/esm/Procedure/Entities/ProcedureEntity.js +163 -24
- package/dist/esm/Procedure/Entities/ProcedureEntity.js.map +1 -1
- package/dist/esm/Procedure/Entities/ProcedureEntity.test.js +240 -0
- package/dist/esm/Procedure/Entities/ProcedureEntity.test.js.map +1 -1
- package/dist/esm/Procedure/Factories/ProcedureFeatureFactory.js +20 -0
- package/dist/esm/Procedure/Factories/ProcedureFeatureFactory.js.map +1 -1
- package/dist/esm/Procedure/Factories/ProcedureFeatureFactory.test.js +26 -1
- package/dist/esm/Procedure/Factories/ProcedureFeatureFactory.test.js.map +1 -1
- package/dist/esm/Procedure/Mocks/MockProcedureEntity.js +2 -0
- package/dist/esm/Procedure/Mocks/MockProcedureEntity.js.map +1 -1
- package/dist/esm/Procedure/PM/ProcedurePM.js +13 -1
- package/dist/esm/Procedure/PM/ProcedurePM.js.map +1 -1
- package/dist/esm/Procedure/PM/ProcedurePM.test.js +34 -0
- package/dist/esm/Procedure/PM/ProcedurePM.test.js.map +1 -1
- package/dist/esm/Procedure/UCs/UpdateProcedureEventsUCHook.test.js +3 -0
- package/dist/esm/Procedure/UCs/UpdateProcedureEventsUCHook.test.js.map +1 -1
- package/dist/esm/Procedure/types.js.map +1 -1
- package/dist/esm/TouchController/UC/UpdateTouchInoutBound.test.js +37 -0
- package/dist/esm/TouchController/UC/UpdateTouchInoutBound.test.js.map +1 -1
- package/dist/esm/TouchController/UC/UpdateTouchInputBound.js +17 -4
- package/dist/esm/TouchController/UC/UpdateTouchInputBound.js.map +1 -1
- package/dist/types/Challenge/Factories/ChallengeFeatureFactory.d.ts +7 -16
- package/dist/types/Challenge/Factories/ChallengeFeatureFactory.d.ts.map +1 -1
- package/dist/types/Challenge/Factories/ChallengeFeatureFactory.test.d.ts +2 -0
- package/dist/types/Challenge/Factories/ChallengeFeatureFactory.test.d.ts.map +1 -0
- package/dist/types/EventSystem/Entities/EventEntity.d.ts +13 -2
- package/dist/types/EventSystem/Entities/EventEntity.d.ts.map +1 -1
- package/dist/types/EventSystem/Mocks/MockEventEntity.d.ts +3 -2
- package/dist/types/EventSystem/Mocks/MockEventEntity.d.ts.map +1 -1
- package/dist/types/EventSystem/types.d.ts +23 -0
- package/dist/types/EventSystem/types.d.ts.map +1 -1
- package/dist/types/ObjectPick/Factories/setupObjectPick.d.ts +10 -0
- package/dist/types/ObjectPick/Factories/setupObjectPick.d.ts.map +1 -1
- package/dist/types/ObjectPick/Factories/setupObjectPick.test.d.ts +2 -0
- package/dist/types/ObjectPick/Factories/setupObjectPick.test.d.ts.map +1 -0
- package/dist/types/Procedure/Adapters/procedureAdapter.d.ts.map +1 -1
- package/dist/types/Procedure/Adapters/procedureAuthoringAdapter.d.ts.map +1 -1
- package/dist/types/Procedure/Adapters/procedureProgressAdapter.d.ts.map +1 -1
- package/dist/types/Procedure/Adapters/procedureQuizResultAdapter.d.ts.map +1 -1
- package/dist/types/Procedure/Entities/ProcedureEntity.d.ts +10 -0
- package/dist/types/Procedure/Entities/ProcedureEntity.d.ts.map +1 -1
- package/dist/types/Procedure/Factories/ProcedureFeatureFactory.d.ts +6 -0
- package/dist/types/Procedure/Factories/ProcedureFeatureFactory.d.ts.map +1 -1
- package/dist/types/Procedure/Mocks/MockProcedureEntity.d.ts +3 -0
- package/dist/types/Procedure/Mocks/MockProcedureEntity.d.ts.map +1 -1
- package/dist/types/Procedure/types.d.ts +17 -1
- package/dist/types/Procedure/types.d.ts.map +1 -1
- package/dist/types/TouchController/UC/UpdateTouchInputBound.d.ts +11 -0
- package/dist/types/TouchController/UC/UpdateTouchInputBound.d.ts.map +1 -1
- package/package.json +6 -3
- package/src/EventSystem/CONTEXT.md +29 -17
- package/dist/cjs/FramedScreen/Factories/setupStandardFramedScreen.test.js +0 -31
- package/dist/cjs/FramedScreen/Factories/setupStandardFramedScreen.test.js.map +0 -1
- package/dist/cjs/StateMachine/Controller/clickRestoreScene.js +0 -14
- package/dist/cjs/StateMachine/Controller/clickRestoreScene.js.map +0 -1
- package/dist/cjs/StateMachine/Controller/clickRestoreScene.test.js +0 -26
- package/dist/cjs/StateMachine/Controller/clickRestoreScene.test.js.map +0 -1
- package/dist/cjs/TestUtils/index.js +0 -18
- package/dist/cjs/TestUtils/index.js.map +0 -1
- package/dist/cjs/TestUtils/setupFeatureForTesting.js +0 -60
- package/dist/cjs/TestUtils/setupFeatureForTesting.js.map +0 -1
- package/dist/esm/FramedScreen/Factories/setupStandardFramedScreen.test.js +0 -29
- package/dist/esm/FramedScreen/Factories/setupStandardFramedScreen.test.js.map +0 -1
- package/dist/esm/StateMachine/Controller/clickRestoreScene.js +0 -11
- package/dist/esm/StateMachine/Controller/clickRestoreScene.js.map +0 -1
- package/dist/esm/StateMachine/Controller/clickRestoreScene.test.js +0 -24
- package/dist/esm/StateMachine/Controller/clickRestoreScene.test.js.map +0 -1
- package/dist/esm/TestUtils/index.js +0 -2
- package/dist/esm/TestUtils/index.js.map +0 -1
- package/dist/esm/TestUtils/setupFeatureForTesting.js +0 -57
- package/dist/esm/TestUtils/setupFeatureForTesting.js.map +0 -1
- package/dist/types/FramedScreen/Factories/setupStandardFramedScreen.test.d.ts +0 -2
- package/dist/types/FramedScreen/Factories/setupStandardFramedScreen.test.d.ts.map +0 -1
- package/dist/types/StateMachine/Controller/clickRestoreScene.d.ts +0 -3
- package/dist/types/StateMachine/Controller/clickRestoreScene.d.ts.map +0 -1
- package/dist/types/StateMachine/Controller/clickRestoreScene.test.d.ts +0 -2
- package/dist/types/StateMachine/Controller/clickRestoreScene.test.d.ts.map +0 -1
- package/dist/types/TestUtils/index.d.ts +0 -2
- package/dist/types/TestUtils/index.d.ts.map +0 -1
- package/dist/types/TestUtils/setupFeatureForTesting.d.ts +0 -48
- package/dist/types/TestUtils/setupFeatureForTesting.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventEntity.test.js","sourceRoot":"","sources":["../../../../src/EventSystem/Entities/EventEntity.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObjectRepo, makeAppObjectRepo } from \"@vived/core\";\r\nimport { EventEntity, makeEventEntity } from \"./EventEntity\";\r\n\r\ndescribe(\"EventEntity\", () => {\r\n let appObjects: AppObjectRepo;\r\n let entity: EventEntity;\r\n let registerSingletonSpy: jest.SpyInstance;\r\n let submitWarningSpy: jest.SpyInstance;\r\n\r\n beforeEach(() => {\r\n appObjects = makeAppObjectRepo();\r\n registerSingletonSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n submitWarningSpy = jest.spyOn(appObjects, \"submitWarning\");\r\n\r\n entity = makeEventEntity(appObjects.getOrCreate(\"test-entity\"));\r\n });\r\n\r\n it(\"registers itself as a singleton\", () => {\r\n expect(registerSingletonSpy).toHaveBeenCalledWith(entity);\r\n });\r\n\r\n it(\"should be accessible through the static getter\", () => {\r\n appObjects.getOrCreate(\"another-object\");\r\n const retrievedEntity = EventEntity.get(appObjects);\r\n expect(retrievedEntity).toBe(entity);\r\n });\r\n\r\n it(\"registers new events successfully\", () => {\r\n entity.register(\"button_click\", \"Button Click Event\");\r\n\r\n const registeredEvents = entity.getRegisteredEvents();\r\n expect(registeredEvents).toHaveLength(1);\r\n expect(registeredEvents[0]).toEqual({\r\n id: \"button_click\",\r\n name: \"Button Click Event\",\r\n });\r\n });\r\n\r\n it(\"should register multiple events\", () => {\r\n entity.register(\"button_click\", \"Button Click Event\");\r\n entity.register(\"page_load\", \"Page Load Event\");\r\n\r\n const registeredEvents = entity.getRegisteredEvents();\r\n expect(registeredEvents).toHaveLength(2);\r\n\r\n const eventIds = registeredEvents.map((e) => e.id);\r\n expect(eventIds).toContain(\"button_click\");\r\n expect(eventIds).toContain(\"page_load\");\r\n });\r\n\r\n it(\"should warn on duplicate registration\", () => {\r\n entity.register(\"button_click\", \"Button Click Event\");\r\n entity.register(\"button_click\", \"Another Button Click\");\r\n\r\n expect(submitWarningSpy).toHaveBeenCalledWith(\r\n \"EventEntity\",\r\n \"Event with id 'button_click' is already registered\",\r\n );\r\n\r\n const registeredEvents = entity.getRegisteredEvents();\r\n expect(registeredEvents).toHaveLength(1);\r\n });\r\n\r\n it(\"emits known events successfully\", () => {\r\n entity.register(\"auto_cycle_clicked\", \"Auto Cycle Clicked\");\r\n entity.register(\"manual_step\", \"Manual Step\");\r\n entity.emit(\"auto_cycle_clicked\");\r\n\r\n const emittedEvents = entity.getEmittedEvents();\r\n expect(emittedEvents).toEqual([\"auto_cycle_clicked\"]);\r\n expect(entity.getLastEmittedId()).toBe(\"auto_cycle_clicked\");\r\n });\r\n\r\n it(\"maintains chronological order of emissions\", () => {\r\n entity.register(\"auto_cycle_clicked\", \"Auto Cycle Clicked\");\r\n entity.register(\"manual_step\", \"Manual Step\");\r\n entity.emit(\"auto_cycle_clicked\");\r\n entity.emit(\"manual_step\");\r\n entity.emit(\"auto_cycle_clicked\");\r\n\r\n const emittedEvents = entity.getEmittedEvents();\r\n expect(emittedEvents).toEqual([\r\n \"auto_cycle_clicked\",\r\n \"manual_step\",\r\n \"auto_cycle_clicked\",\r\n ]);\r\n expect(entity.getLastEmittedId()).toBe(\"auto_cycle_clicked\");\r\n });\r\n\r\n it(\"allows duplicate emissions\", () => {\r\n entity.register(\"auto_cycle_clicked\", \"Auto Cycle Clicked\");\r\n entity.register(\"manual_step\", \"Manual Step\");\r\n entity.emit(\"auto_cycle_clicked\");\r\n entity.emit(\"auto_cycle_clicked\");\r\n entity.emit(\"auto_cycle_clicked\");\r\n\r\n const emittedEvents = entity.getEmittedEvents();\r\n expect(emittedEvents).toHaveLength(3);\r\n expect(\r\n emittedEvents.every((id) => id === \"auto_cycle_clicked\"),\r\n ).toBe(true);\r\n });\r\n\r\n it(\"warns and ignores unknown event emissions\", () => {\r\n entity.register(\"auto_cycle_clicked\", \"Auto Cycle Clicked\");\r\n entity.register(\"manual_step\", \"Manual Step\");\r\n entity.emit(\"unknown_event\");\r\n\r\n expect(submitWarningSpy).toHaveBeenCalledWith(\r\n \"EventEntity\",\r\n \"Cannot emit unknown event with id 'unknown_event'\",\r\n );\r\n\r\n const emittedEvents = entity.getEmittedEvents();\r\n expect(emittedEvents).toHaveLength(0);\r\n expect(entity.getLastEmittedId()).toBeNull();\r\n });\r\n\r\n it(\"allows late registration after emission attempt\", () => {\r\n entity.register(\"auto_cycle_clicked\", \"Auto Cycle Clicked\");\r\n entity.register(\"manual_step\", \"Manual Step\");\r\n entity.emit(\"late_event\");\r\n expect(submitWarningSpy).toHaveBeenCalled();\r\n\r\n entity.register(\"late_event\", \"Late Event\");\r\n\r\n entity.emit(\"late_event\");\r\n const emittedEvents = entity.getEmittedEvents();\r\n expect(emittedEvents).toEqual([\"late_event\"]);\r\n });\r\n\r\n it(\"clears event log while preserving registry after reset\", () => {\r\n entity.register(\"event1\", \"Event One\");\r\n entity.register(\"event2\", \"Event Two\");\r\n entity.emit(\"event1\");\r\n entity.emit(\"event2\");\r\n entity.emit(\"event1\");\r\n expect(entity.getEmittedEvents()).toHaveLength(3);\r\n expect(entity.getLastEmittedId()).toBe(\"event1\");\r\n\r\n entity.reset();\r\n\r\n expect(entity.getEmittedEvents()).toHaveLength(0);\r\n expect(entity.getLastEmittedId()).toBeNull();\r\n\r\n const registeredEvents = entity.getRegisteredEvents();\r\n expect(registeredEvents).toHaveLength(2);\r\n expect(registeredEvents.map((e) => e.id)).toContain(\"event1\");\r\n expect(registeredEvents.map((e) => e.id)).toContain(\"event2\");\r\n });\r\n\r\n it(\"allows emissions after reset\", () => {\r\n entity.register(\"event1\", \"Event One\");\r\n entity.register(\"event2\", \"Event Two\");\r\n entity.emit(\"event1\");\r\n entity.emit(\"event2\");\r\n entity.emit(\"event1\");\r\n entity.reset();\r\n\r\n entity.emit(\"event1\");\r\n expect(entity.getEmittedEvents()).toEqual([\"event1\"]);\r\n expect(entity.getLastEmittedId()).toBe(\"event1\");\r\n });\r\n\r\n it(\"notifies observers when events are emitted\", () => {\r\n entity.register(\"test_event\", \"Test Event\");\r\n const mockObserver = jest.fn();\r\n entity.addChangeObserver(mockObserver);\r\n\r\n entity.emit(\"test_event\");\r\n\r\n expect(mockObserver).toHaveBeenCalledTimes(1);\r\n });\r\n\r\n it(\"notifies observers on reset\", () => {\r\n entity.register(\"test_event\", \"Test Event\");\r\n entity.emit(\"test_event\");\r\n\r\n const mockObserver = jest.fn();\r\n entity.addChangeObserver(mockObserver);\r\n\r\n entity.reset();\r\n\r\n expect(mockObserver).toHaveBeenCalledTimes(1);\r\n });\r\n\r\n it(\"does not notify observers for unknown event emissions\", () => {\r\n entity.register(\"test_event\", \"Test Event\");\r\n const mockObserver = jest.fn();\r\n entity.addChangeObserver(mockObserver);\r\n\r\n entity.emit(\"unknown_event\");\r\n\r\n expect(mockObserver).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"fires emission listener on every emit\", () => {\r\n entity.register(\"test_event\", \"Test Event\");\r\n const listener = jest.fn();\r\n entity.addEmissionListener(listener);\r\n\r\n entity.emit(\"test_event\");\r\n entity.emit(\"test_event\");\r\n\r\n expect(listener).toHaveBeenCalledTimes(2);\r\n expect(listener).toHaveBeenCalledWith(\"test_event\");\r\n });\r\n\r\n it(\"does not fire emission listener for unknown events\", () => {\r\n entity.register(\"test_event\", \"Test Event\");\r\n const listener = jest.fn();\r\n entity.addEmissionListener(listener);\r\n\r\n entity.emit(\"unknown_event\");\r\n\r\n expect(listener).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"allows removing emission listeners\", () => {\r\n entity.register(\"test_event\", \"Test Event\");\r\n const listener = jest.fn();\r\n entity.addEmissionListener(listener);\r\n\r\n entity.emit(\"test_event\");\r\n expect(listener).toHaveBeenCalledTimes(1);\r\n\r\n entity.removeEmissionListener(listener);\r\n entity.emit(\"test_event\");\r\n expect(listener).toHaveBeenCalledTimes(1);\r\n });\r\n\r\n it(\"returns empty arrays and null initially\", () => {\r\n expect(entity.getRegisteredEvents()).toEqual([]);\r\n expect(entity.getEmittedEvents()).toEqual([]);\r\n expect(entity.getLastEmittedId()).toBeNull();\r\n });\r\n\r\n it(\"returns copies of arrays to prevent external mutation\", () => {\r\n entity.register(\"test_event\", \"Test Event\");\r\n entity.emit(\"test_event\");\r\n\r\n const registeredEvents = entity.getRegisteredEvents();\r\n const emittedEvents = entity.getEmittedEvents();\r\n\r\n registeredEvents.push({ id: \"fake\", name: \"Fake\" });\r\n emittedEvents.push(\"fake_emission\");\r\n\r\n expect(entity.getRegisteredEvents()).toHaveLength(1);\r\n expect(entity.getEmittedEvents()).toHaveLength(1);\r\n });\r\n});\r\n"]}
|
|
1
|
+
{"version":3,"file":"EventEntity.test.js","sourceRoot":"","sources":["../../../../src/EventSystem/Entities/EventEntity.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObjectRepo, makeAppObjectRepo } from \"@vived/core\";\r\nimport { EventEntity, makeEventEntity } from \"./EventEntity\";\r\n\r\ndescribe(\"EventEntity\", () => {\r\n let appObjects: AppObjectRepo;\r\n let entity: EventEntity;\r\n let registerSingletonSpy: jest.SpyInstance;\r\n let submitWarningSpy: jest.SpyInstance;\r\n\r\n beforeEach(() => {\r\n appObjects = makeAppObjectRepo();\r\n registerSingletonSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n submitWarningSpy = jest.spyOn(appObjects, \"submitWarning\");\r\n\r\n entity = makeEventEntity(appObjects.getOrCreate(\"test-entity\"));\r\n });\r\n\r\n it(\"registers itself as a singleton\", () => {\r\n expect(registerSingletonSpy).toHaveBeenCalledWith(entity);\r\n });\r\n\r\n it(\"should be accessible through the static getter\", () => {\r\n appObjects.getOrCreate(\"another-object\");\r\n const retrievedEntity = EventEntity.get(appObjects);\r\n expect(retrievedEntity).toBe(entity);\r\n });\r\n\r\n it(\"registers new events successfully\", () => {\r\n entity.register(\"button_click\", \"Button Click Event\");\r\n\r\n const registeredEvents = entity.getRegisteredEvents();\r\n expect(registeredEvents).toHaveLength(1);\r\n expect(registeredEvents[0]).toEqual({\r\n id: \"button_click\",\r\n name: \"Button Click Event\",\r\n });\r\n });\r\n\r\n it(\"should register multiple events\", () => {\r\n entity.register(\"button_click\", \"Button Click Event\");\r\n entity.register(\"page_load\", \"Page Load Event\");\r\n\r\n const registeredEvents = entity.getRegisteredEvents();\r\n expect(registeredEvents).toHaveLength(2);\r\n\r\n const eventIds = registeredEvents.map((e) => e.id);\r\n expect(eventIds).toContain(\"button_click\");\r\n expect(eventIds).toContain(\"page_load\");\r\n });\r\n\r\n it(\"should warn on duplicate registration\", () => {\r\n entity.register(\"button_click\", \"Button Click Event\");\r\n entity.register(\"button_click\", \"Another Button Click\");\r\n\r\n expect(submitWarningSpy).toHaveBeenCalledWith(\r\n \"EventEntity\",\r\n \"Event with id 'button_click' is already registered\",\r\n );\r\n\r\n const registeredEvents = entity.getRegisteredEvents();\r\n expect(registeredEvents).toHaveLength(1);\r\n });\r\n\r\n it(\"emits known events successfully\", () => {\r\n entity.register(\"auto_cycle_clicked\", \"Auto Cycle Clicked\");\r\n entity.register(\"manual_step\", \"Manual Step\");\r\n entity.emit(\"auto_cycle_clicked\");\r\n\r\n const emittedEvents = entity.getEmittedEvents();\r\n expect(emittedEvents).toEqual([\"auto_cycle_clicked\"]);\r\n expect(entity.getLastEmittedId()).toBe(\"auto_cycle_clicked\");\r\n });\r\n\r\n it(\"maintains chronological order of emissions\", () => {\r\n entity.register(\"auto_cycle_clicked\", \"Auto Cycle Clicked\");\r\n entity.register(\"manual_step\", \"Manual Step\");\r\n entity.emit(\"auto_cycle_clicked\");\r\n entity.emit(\"manual_step\");\r\n entity.emit(\"auto_cycle_clicked\");\r\n\r\n const emittedEvents = entity.getEmittedEvents();\r\n expect(emittedEvents).toEqual([\r\n \"auto_cycle_clicked\",\r\n \"manual_step\",\r\n \"auto_cycle_clicked\",\r\n ]);\r\n expect(entity.getLastEmittedId()).toBe(\"auto_cycle_clicked\");\r\n });\r\n\r\n it(\"allows duplicate emissions\", () => {\r\n entity.register(\"auto_cycle_clicked\", \"Auto Cycle Clicked\");\r\n entity.register(\"manual_step\", \"Manual Step\");\r\n entity.emit(\"auto_cycle_clicked\");\r\n entity.emit(\"auto_cycle_clicked\");\r\n entity.emit(\"auto_cycle_clicked\");\r\n\r\n const emittedEvents = entity.getEmittedEvents();\r\n expect(emittedEvents).toHaveLength(3);\r\n expect(\r\n emittedEvents.every((id) => id === \"auto_cycle_clicked\"),\r\n ).toBe(true);\r\n });\r\n\r\n it(\"warns and ignores unknown event emissions\", () => {\r\n entity.register(\"auto_cycle_clicked\", \"Auto Cycle Clicked\");\r\n entity.register(\"manual_step\", \"Manual Step\");\r\n entity.emit(\"unknown_event\");\r\n\r\n expect(submitWarningSpy).toHaveBeenCalledWith(\r\n \"EventEntity\",\r\n \"Cannot emit unknown event with id 'unknown_event'\",\r\n );\r\n\r\n const emittedEvents = entity.getEmittedEvents();\r\n expect(emittedEvents).toHaveLength(0);\r\n expect(entity.getLastEmittedId()).toBeNull();\r\n });\r\n\r\n it(\"allows late registration after emission attempt\", () => {\r\n entity.register(\"auto_cycle_clicked\", \"Auto Cycle Clicked\");\r\n entity.register(\"manual_step\", \"Manual Step\");\r\n entity.emit(\"late_event\");\r\n expect(submitWarningSpy).toHaveBeenCalled();\r\n\r\n entity.register(\"late_event\", \"Late Event\");\r\n\r\n entity.emit(\"late_event\");\r\n const emittedEvents = entity.getEmittedEvents();\r\n expect(emittedEvents).toEqual([\"late_event\"]);\r\n });\r\n\r\n it(\"clears event log while preserving registry after reset\", () => {\r\n entity.register(\"event1\", \"Event One\");\r\n entity.register(\"event2\", \"Event Two\");\r\n entity.emit(\"event1\");\r\n entity.emit(\"event2\");\r\n entity.emit(\"event1\");\r\n expect(entity.getEmittedEvents()).toHaveLength(3);\r\n expect(entity.getLastEmittedId()).toBe(\"event1\");\r\n\r\n entity.reset();\r\n\r\n expect(entity.getEmittedEvents()).toHaveLength(0);\r\n expect(entity.getLastEmittedId()).toBeNull();\r\n\r\n const registeredEvents = entity.getRegisteredEvents();\r\n expect(registeredEvents).toHaveLength(2);\r\n expect(registeredEvents.map((e) => e.id)).toContain(\"event1\");\r\n expect(registeredEvents.map((e) => e.id)).toContain(\"event2\");\r\n });\r\n\r\n it(\"allows emissions after reset\", () => {\r\n entity.register(\"event1\", \"Event One\");\r\n entity.register(\"event2\", \"Event Two\");\r\n entity.emit(\"event1\");\r\n entity.emit(\"event2\");\r\n entity.emit(\"event1\");\r\n entity.reset();\r\n\r\n entity.emit(\"event1\");\r\n expect(entity.getEmittedEvents()).toEqual([\"event1\"]);\r\n expect(entity.getLastEmittedId()).toBe(\"event1\");\r\n });\r\n\r\n it(\"notifies observers when events are emitted\", () => {\r\n entity.register(\"test_event\", \"Test Event\");\r\n const mockObserver = jest.fn();\r\n entity.addChangeObserver(mockObserver);\r\n\r\n entity.emit(\"test_event\");\r\n\r\n expect(mockObserver).toHaveBeenCalledTimes(1);\r\n });\r\n\r\n it(\"notifies observers on reset\", () => {\r\n entity.register(\"test_event\", \"Test Event\");\r\n entity.emit(\"test_event\");\r\n\r\n const mockObserver = jest.fn();\r\n entity.addChangeObserver(mockObserver);\r\n\r\n entity.reset();\r\n\r\n expect(mockObserver).toHaveBeenCalledTimes(1);\r\n });\r\n\r\n it(\"does not notify observers for unknown event emissions\", () => {\r\n entity.register(\"test_event\", \"Test Event\");\r\n const mockObserver = jest.fn();\r\n entity.addChangeObserver(mockObserver);\r\n\r\n entity.emit(\"unknown_event\");\r\n\r\n expect(mockObserver).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"fires emission listener on every emit\", () => {\r\n entity.register(\"test_event\", \"Test Event\");\r\n const listener = jest.fn();\r\n entity.addEmissionListener(listener);\r\n\r\n entity.emit(\"test_event\");\r\n entity.emit(\"test_event\");\r\n\r\n expect(listener).toHaveBeenCalledTimes(2);\r\n expect(listener).toHaveBeenCalledWith(\"test_event\");\r\n });\r\n\r\n it(\"does not fire emission listener for unknown events\", () => {\r\n entity.register(\"test_event\", \"Test Event\");\r\n const listener = jest.fn();\r\n entity.addEmissionListener(listener);\r\n\r\n entity.emit(\"unknown_event\");\r\n\r\n expect(listener).not.toHaveBeenCalled();\r\n });\r\n\r\n it(\"allows removing emission listeners\", () => {\r\n entity.register(\"test_event\", \"Test Event\");\r\n const listener = jest.fn();\r\n entity.addEmissionListener(listener);\r\n\r\n entity.emit(\"test_event\");\r\n expect(listener).toHaveBeenCalledTimes(1);\r\n\r\n entity.removeEmissionListener(listener);\r\n entity.emit(\"test_event\");\r\n expect(listener).toHaveBeenCalledTimes(1);\r\n });\r\n\r\n it(\"returns empty arrays and null initially\", () => {\r\n expect(entity.getRegisteredEvents()).toEqual([]);\r\n expect(entity.getEmittedEvents()).toEqual([]);\r\n expect(entity.getLastEmittedId()).toBeNull();\r\n });\r\n\r\n it(\"returns copies of arrays to prevent external mutation\", () => {\r\n entity.register(\"test_event\", \"Test Event\");\r\n entity.emit(\"test_event\");\r\n\r\n const registeredEvents = entity.getRegisteredEvents();\r\n const emittedEvents = entity.getEmittedEvents();\r\n\r\n registeredEvents.push({ id: \"fake\", name: \"Fake\" });\r\n emittedEvents.push(\"fake_emission\");\r\n\r\n expect(entity.getRegisteredEvents()).toHaveLength(1);\r\n expect(entity.getEmittedEvents()).toHaveLength(1);\r\n });\r\n\r\n describe(\"event categories (#53)\", () => {\r\n it(\"stores an explicit category on the definition\", () => {\r\n entity.register(\"navigate-to-overhead\", \"Go to overhead\", {\r\n category: \"instructional\",\r\n });\r\n\r\n expect(entity.getRegisteredEvents()[0]).toEqual({\r\n id: \"navigate-to-overhead\",\r\n name: \"Go to overhead\",\r\n category: \"instructional\",\r\n });\r\n expect(entity.getEventCategory(\"navigate-to-overhead\")).toBe(\r\n \"instructional\",\r\n );\r\n });\r\n\r\n it(\"defaults an omitted category to assessed without adding a key to the definition\", () => {\r\n entity.register(\"lever\", \"Pull lever\");\r\n entity.register(\"valve\", \"Open valve\", {});\r\n\r\n expect(entity.getRegisteredEvents()).toEqual([\r\n { id: \"lever\", name: \"Pull lever\" },\r\n { id: \"valve\", name: \"Open valve\" },\r\n ]);\r\n expect(Object.keys(entity.getRegisteredEvents()[0])).toEqual([\"id\", \"name\"]);\r\n expect(entity.getEventCategory(\"lever\")).toBe(\"assessed\");\r\n expect(entity.getEventCategory(\"valve\")).toBe(\"assessed\");\r\n });\r\n\r\n it(\"treats an unregistered id as assessed\", () => {\r\n expect(entity.getEventCategory(\"legacy-step\")).toBe(\"assessed\");\r\n });\r\n\r\n it(\"keeps the first registration's category on a duplicate registration\", () => {\r\n entity.register(\"lever\", \"Pull lever\");\r\n entity.register(\"lever\", \"Pull lever again\", {\r\n category: \"instructional\",\r\n });\r\n\r\n expect(entity.getEventCategory(\"lever\")).toBe(\"assessed\");\r\n });\r\n\r\n it(\"emits an instructional event exactly like an assessed one\", () => {\r\n entity.register(\"navigate-to-overhead\", \"Go to overhead\", {\r\n category: \"instructional\",\r\n });\r\n const listener = jest.fn();\r\n entity.addEmissionListener(listener);\r\n\r\n entity.emit(\"navigate-to-overhead\");\r\n\r\n expect(listener).toHaveBeenCalledWith(\"navigate-to-overhead\");\r\n expect(entity.getEmittedEvents()).toEqual([\"navigate-to-overhead\"]);\r\n expect(entity.getLastEmittedId()).toBe(\"navigate-to-overhead\");\r\n });\r\n });\r\n});\r\n"]}
|
|
@@ -5,9 +5,14 @@ export class MockEventEntity extends EventEntity {
|
|
|
5
5
|
this._registeredEvents = [];
|
|
6
6
|
this._emittedEvents = [];
|
|
7
7
|
this._lastEmittedId = null;
|
|
8
|
-
this.register = jest.fn((id, name) => {
|
|
9
|
-
|
|
8
|
+
this.register = jest.fn((id, name, options) => {
|
|
9
|
+
const definition = { id, name };
|
|
10
|
+
if (options?.category) {
|
|
11
|
+
definition.category = options.category;
|
|
12
|
+
}
|
|
13
|
+
this._registeredEvents.push(definition);
|
|
10
14
|
});
|
|
15
|
+
this.getEventCategory = jest.fn((id) => this._registeredEvents.find((e) => e.id === id)?.category ?? "assessed");
|
|
11
16
|
this.emit = jest.fn((id) => {
|
|
12
17
|
this._emittedEvents.push(id);
|
|
13
18
|
this._lastEmittedId = id;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MockEventEntity.js","sourceRoot":"","sources":["../../../../src/EventSystem/Mocks/MockEventEntity.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MockEventEntity.js","sourceRoot":"","sources":["../../../../src/EventSystem/Mocks/MockEventEntity.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM,OAAO,eAAgB,SAAQ,WAAW;IAoC9C,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QApC7B,sBAAiB,GAAsB,EAAE,CAAC;QAC1C,mBAAc,GAAa,EAAE,CAAC;QAC9B,mBAAc,GAAkB,IAAI,CAAC;QAE7C,aAAQ,GAAG,IAAI,CAAC,EAAE,CAChB,CAAC,EAAU,EAAE,IAAY,EAAE,OAAkC,EAAE,EAAE;YAC/D,MAAM,UAAU,GAAoB,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YACjD,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;gBACtB,UAAU,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YACzC,CAAC;YACD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,CAAC,CACF,CAAC;QAEF,qBAAgB,GAAG,IAAI,CAAC,EAAE,CACxB,CAAC,EAAU,EAAiB,EAAE,CAC5B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,IAAI,UAAU,CAC1E,CAAC;QAEF,SAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,EAAU,EAAE,EAAE;YAC5B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7B,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,UAAK,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE;YACnB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,wBAAmB,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACjE,qBAAgB,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QAC3D,qBAAgB,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACtD,wBAAmB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAChC,2BAAsB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAInC,CAAC;CACF;AAED,MAAM,UAAU,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\";\r\nimport {\r\n EventCategory,\r\n EventDefinition,\r\n EventRegistrationOptions,\r\n} from \"../types\";\r\nimport { EventEntity } from \"../Entities/EventEntity\";\r\n\r\nexport class MockEventEntity extends EventEntity {\r\n private _registeredEvents: EventDefinition[] = [];\r\n private _emittedEvents: string[] = [];\r\n private _lastEmittedId: string | null = null;\r\n\r\n register = jest.fn(\r\n (id: string, name: string, options?: EventRegistrationOptions) => {\r\n const definition: EventDefinition = { id, name };\r\n if (options?.category) {\r\n definition.category = options.category;\r\n }\r\n this._registeredEvents.push(definition);\r\n },\r\n );\r\n\r\n getEventCategory = jest.fn(\r\n (id: string): EventCategory =>\r\n this._registeredEvents.find((e) => e.id === id)?.category ?? \"assessed\",\r\n );\r\n\r\n emit = jest.fn((id: string) => {\r\n this._emittedEvents.push(id);\r\n this._lastEmittedId = id;\r\n });\r\n\r\n reset = jest.fn(() => {\r\n this._emittedEvents = [];\r\n this._lastEmittedId = null;\r\n });\r\n\r\n getRegisteredEvents = jest.fn(() => [...this._registeredEvents]);\r\n getEmittedEvents = jest.fn(() => [...this._emittedEvents]);\r\n getLastEmittedId = jest.fn(() => this._lastEmittedId);\r\n addEmissionListener = jest.fn();\r\n removeEmissionListener = jest.fn();\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, EventEntity.type);\r\n }\r\n}\r\n\r\nexport function makeMockEventEntity(appObjects: AppObjectRepo) {\r\n return new MockEventEntity(appObjects.getOrCreate(\"MockEventEntity\"));\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/EventSystem/types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\r\n * TypeScript type definitions for the EventSystem feature.\r\n * Defines interfaces for event definitions and factory-related types.\r\n */\r\n\r\n/**\r\n * Represents a registered event definition with unique ID and human-readable name\r\n */\r\nexport interface EventDefinition {\r\n /** Unique identifier for the event */\r\n id: string;\r\n /** Human-readable name for the event */\r\n name: string;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/EventSystem/types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\r\n * TypeScript type definitions for the EventSystem feature.\r\n * Defines interfaces for event definitions and factory-related types.\r\n */\r\n\r\n/**\r\n * The scoring semantics of an event, named by what the event means for a quiz —\r\n * not by where it comes from (the consuming app decides, this package only knows\r\n * the rule):\r\n * - `\"assessed\"` — the event represents a task outcome; scored, counted toward\r\n * progress and shown in a quiz.\r\n * - `\"instructional\"` — guidance (e.g. arriving at a viewpoint); an ordinary step\r\n * in training, but quiz-neutral: hidden and excluded from score and progress.\r\n */\r\nexport type EventCategory = \"assessed\" | \"instructional\";\r\n\r\n/**\r\n * Optional settings accepted by `EventEntity.register(id, name, options)`.\r\n */\r\nexport interface EventRegistrationOptions {\r\n /** Defaults to `\"assessed\"` when omitted. */\r\n category?: EventCategory;\r\n}\r\n\r\n/**\r\n * Represents a registered event definition with unique ID and human-readable name\r\n */\r\nexport interface EventDefinition {\r\n /** Unique identifier for the event */\r\n id: string;\r\n /** Human-readable name for the event */\r\n name: string;\r\n /**\r\n * Present only when the registration passed a category. Absent means\r\n * `\"assessed\"` — read it through `EventEntity.getEventCategory(id)`, which\r\n * normalizes the default, rather than from this field.\r\n */\r\n category?: EventCategory;\r\n}\r\n"]}
|
|
@@ -1,10 +1,21 @@
|
|
|
1
|
+
import { ChallengeEntity } from "../../Challenge";
|
|
1
2
|
import { MouseObjectPickMC, StylusObjectPickSC, TouchObjectPickTC, } from "../Controllers";
|
|
2
3
|
import { makeObjectPickEntity } from "../Entities";
|
|
3
4
|
import { makeObjectPickPM } from "../PM";
|
|
4
5
|
import { makeAddCorrectObjectIdUC, makeClearCorrectObjectIdsUC, makeRemoveCorrectObjectIdUC, makeTrySelectObjectPickUC, makeTrySubmitObjectPickUC, makeValidateObjectPickUC, SerializeObjectPick, } from "../UseCases";
|
|
6
|
+
/**
|
|
7
|
+
* Legacy setup for the ObjectPick Feature. Prefer ObjectPickFeatureFactory.
|
|
8
|
+
*
|
|
9
|
+
* ORDERING: wire the Challenge Feature *before* calling this. ObjectPick
|
|
10
|
+
* registers itself as a Challenge kind, and it can only do so if the
|
|
11
|
+
* ChallengeEntity already exists - ChallengeFeatureFactory no longer registers
|
|
12
|
+
* kinds on their behalf. Called with no Challenge Feature present, the
|
|
13
|
+
* registration is skipped silently, which is the supported state for a
|
|
14
|
+
* composition that has declined the Challenge Feature.
|
|
15
|
+
*/
|
|
5
16
|
export function setupObjectPick(appObjects) {
|
|
6
17
|
const ao = appObjects.getOrCreate("ObjectPick");
|
|
7
|
-
makeObjectPickEntity(ao);
|
|
18
|
+
const objectPickEntity = makeObjectPickEntity(ao);
|
|
8
19
|
// UCs
|
|
9
20
|
makeAddCorrectObjectIdUC(ao);
|
|
10
21
|
makeClearCorrectObjectIdsUC(ao);
|
|
@@ -19,5 +30,11 @@ export function setupObjectPick(appObjects) {
|
|
|
19
30
|
new MouseObjectPickMC(ao);
|
|
20
31
|
new TouchObjectPickTC(ao);
|
|
21
32
|
new StylusObjectPickSC(ao);
|
|
33
|
+
// Register as a Challenge kind, matching ObjectPickFeatureFactory.finalSetup.
|
|
34
|
+
// hasSingleton is checked first because the getter warns when it misses, and
|
|
35
|
+
// a composition without the Challenge Feature is a supported state.
|
|
36
|
+
if (appObjects.hasSingleton(ChallengeEntity.type)) {
|
|
37
|
+
ChallengeEntity.get(appObjects)?.registerChallenge(objectPickEntity);
|
|
38
|
+
}
|
|
22
39
|
}
|
|
23
40
|
//# sourceMappingURL=setupObjectPick.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupObjectPick.js","sourceRoot":"","sources":["../../../../src/ObjectPick/Factories/setupObjectPick.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EACL,wBAAwB,EACxB,2BAA2B,EAC3B,2BAA2B,EAC3B,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAErB,MAAM,UAAU,eAAe,CAAC,UAAyB;IACvD,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAEhD,oBAAoB,CAAC,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"setupObjectPick.js","sourceRoot":"","sources":["../../../../src/ObjectPick/Factories/setupObjectPick.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EACL,wBAAwB,EACxB,2BAA2B,EAC3B,2BAA2B,EAC3B,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAErB;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,UAAyB;IACvD,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IAEhD,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAElD,MAAM;IACN,wBAAwB,CAAC,EAAE,CAAC,CAAC;IAC7B,2BAA2B,CAAC,EAAE,CAAC,CAAC;IAChC,2BAA2B,CAAC,EAAE,CAAC,CAAC;IAChC,yBAAyB,CAAC,EAAE,CAAC,CAAC;IAC9B,yBAAyB,CAAC,EAAE,CAAC,CAAC;IAC9B,wBAAwB,CAAC,EAAE,CAAC,CAAC;IAC7B,IAAI,mBAAmB,CAAC,EAAE,CAAC,CAAC;IAE5B,MAAM;IACN,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAErB,cAAc;IACd,IAAI,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAC1B,IAAI,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAC1B,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAE3B,8EAA8E;IAC9E,6EAA6E;IAC7E,oEAAoE;IACpE,IAAI,UAAU,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IACvE,CAAC;AACH,CAAC","sourcesContent":["import { AppObjectRepo } from \"@vived/core\";\nimport { ChallengeEntity } from \"../../Challenge\";\nimport {\n MouseObjectPickMC,\n StylusObjectPickSC,\n TouchObjectPickTC,\n} from \"../Controllers\";\nimport { makeObjectPickEntity } from \"../Entities\";\nimport { makeObjectPickPM } from \"../PM\";\nimport {\n makeAddCorrectObjectIdUC,\n makeClearCorrectObjectIdsUC,\n makeRemoveCorrectObjectIdUC,\n makeTrySelectObjectPickUC,\n makeTrySubmitObjectPickUC,\n makeValidateObjectPickUC,\n SerializeObjectPick,\n} from \"../UseCases\";\n\n/**\n * Legacy setup for the ObjectPick Feature. Prefer ObjectPickFeatureFactory.\n *\n * ORDERING: wire the Challenge Feature *before* calling this. ObjectPick\n * registers itself as a Challenge kind, and it can only do so if the\n * ChallengeEntity already exists - ChallengeFeatureFactory no longer registers\n * kinds on their behalf. Called with no Challenge Feature present, the\n * registration is skipped silently, which is the supported state for a\n * composition that has declined the Challenge Feature.\n */\nexport function setupObjectPick(appObjects: AppObjectRepo) {\n const ao = appObjects.getOrCreate(\"ObjectPick\");\n\n const objectPickEntity = makeObjectPickEntity(ao);\n\n // UCs\n makeAddCorrectObjectIdUC(ao);\n makeClearCorrectObjectIdsUC(ao);\n makeRemoveCorrectObjectIdUC(ao);\n makeTrySelectObjectPickUC(ao);\n makeTrySubmitObjectPickUC(ao);\n makeValidateObjectPickUC(ao);\n new SerializeObjectPick(ao);\n\n // PMs\n makeObjectPickPM(ao);\n\n // Controllers\n new MouseObjectPickMC(ao);\n new TouchObjectPickTC(ao);\n new StylusObjectPickSC(ao);\n\n // Register as a Challenge kind, matching ObjectPickFeatureFactory.finalSetup.\n // hasSingleton is checked first because the getter warns when it misses, and\n // a composition without the Challenge Feature is a supported state.\n if (appObjects.hasSingleton(ChallengeEntity.type)) {\n ChallengeEntity.get(appObjects)?.registerChallenge(objectPickEntity);\n }\n}\n"]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { makeAppObjectRepo } from "@vived/core";
|
|
2
|
+
import { makeBaseAppState } from "../../BaseApp/Entity/BaseAppState";
|
|
3
|
+
import { makeChallengeEntity } from "../../Challenge/Entities";
|
|
4
|
+
import { ChallengeEntity } from "../../Challenge/Entities/ChallengeEntity";
|
|
5
|
+
import { MockMouseInput } from "../../MouseInput/Mocks/MockMouseInput";
|
|
6
|
+
import { makeStateMachineEntity } from "../../StateMachine";
|
|
7
|
+
import { makeStylusEntity } from "../../Stylus/Entity/StylusEntity";
|
|
8
|
+
import { MockTouchInputEntity } from "../../TouchController/Mock/MockTouchInput";
|
|
9
|
+
import { ObjectPickEntity } from "../Entities";
|
|
10
|
+
import { setupObjectPick } from "./setupObjectPick";
|
|
11
|
+
function makeTestRig() {
|
|
12
|
+
const appObjects = makeAppObjectRepo();
|
|
13
|
+
// Boundary singletons the ObjectPick UCs and Controllers read at
|
|
14
|
+
// construction time. setupObjectPick builds all three input controllers
|
|
15
|
+
// unconditionally, so all three input entities must be present.
|
|
16
|
+
const inputAO = appObjects.getOrCreate("App");
|
|
17
|
+
makeBaseAppState(inputAO);
|
|
18
|
+
new MockMouseInput(inputAO);
|
|
19
|
+
new MockTouchInputEntity(inputAO);
|
|
20
|
+
makeStylusEntity(inputAO);
|
|
21
|
+
// SerializeObjectPick registers itself as a serialized System.
|
|
22
|
+
makeStateMachineEntity(appObjects.getOrCreate("StateMachine"));
|
|
23
|
+
const mockError = jest.fn();
|
|
24
|
+
const mockWarn = jest.fn();
|
|
25
|
+
appObjects.submitError = mockError;
|
|
26
|
+
appObjects.submitWarning = mockWarn;
|
|
27
|
+
return { appObjects, mockError, mockWarn };
|
|
28
|
+
}
|
|
29
|
+
function registeredIDs(appObjects) {
|
|
30
|
+
return ChallengeEntity.get(appObjects).allChallenges.map((challenge) => challenge.challengeID);
|
|
31
|
+
}
|
|
32
|
+
describe("setupObjectPick", () => {
|
|
33
|
+
it("Creates the ObjectPick entity", () => {
|
|
34
|
+
const { appObjects } = makeTestRig();
|
|
35
|
+
setupObjectPick(appObjects);
|
|
36
|
+
expect(ObjectPickEntity.get(appObjects)).toBeDefined();
|
|
37
|
+
});
|
|
38
|
+
it("Registers itself as a challenge kind when the Challenge feature is already wired", () => {
|
|
39
|
+
const { appObjects } = makeTestRig();
|
|
40
|
+
makeChallengeEntity(appObjects.getOrCreate("Challenge"));
|
|
41
|
+
setupObjectPick(appObjects);
|
|
42
|
+
expect(registeredIDs(appObjects)).toContain("OBJECT_PICK");
|
|
43
|
+
});
|
|
44
|
+
it("Skips the registration silently when there is no Challenge feature", () => {
|
|
45
|
+
const { appObjects, mockError, mockWarn } = makeTestRig();
|
|
46
|
+
expect(() => setupObjectPick(appObjects)).not.toThrow();
|
|
47
|
+
// hasSingleton, not .get - the getter itself warns when it misses.
|
|
48
|
+
expect(appObjects.hasSingleton(ChallengeEntity.type)).toBe(false);
|
|
49
|
+
expect(mockError).not.toHaveBeenCalled();
|
|
50
|
+
expect(mockWarn).not.toHaveBeenCalled();
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=setupObjectPick.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setupObjectPick.test.js","sourceRoot":"","sources":["../../../../src/ObjectPick/Factories/setupObjectPick.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObjectRepo, makeAppObjectRepo } from \"@vived/core\";\nimport { makeBaseAppState } from \"../../BaseApp/Entity/BaseAppState\";\nimport { makeChallengeEntity } from \"../../Challenge/Entities\";\nimport { ChallengeEntity } from \"../../Challenge/Entities/ChallengeEntity\";\nimport { MockMouseInput } from \"../../MouseInput/Mocks/MockMouseInput\";\nimport { makeStateMachineEntity } from \"../../StateMachine\";\nimport { makeStylusEntity } from \"../../Stylus/Entity/StylusEntity\";\nimport { MockTouchInputEntity } from \"../../TouchController/Mock/MockTouchInput\";\nimport { ObjectPickEntity } from \"../Entities\";\nimport { setupObjectPick } from \"./setupObjectPick\";\n\nfunction makeTestRig() {\n const appObjects = makeAppObjectRepo();\n\n // Boundary singletons the ObjectPick UCs and Controllers read at\n // construction time. setupObjectPick builds all three input controllers\n // unconditionally, so all three input entities must be present.\n const inputAO = appObjects.getOrCreate(\"App\");\n makeBaseAppState(inputAO);\n new MockMouseInput(inputAO);\n new MockTouchInputEntity(inputAO);\n makeStylusEntity(inputAO);\n\n // SerializeObjectPick registers itself as a serialized System.\n makeStateMachineEntity(appObjects.getOrCreate(\"StateMachine\"));\n\n const mockError = jest.fn();\n const mockWarn = jest.fn();\n appObjects.submitError = mockError;\n appObjects.submitWarning = mockWarn;\n\n return { appObjects, mockError, mockWarn };\n}\n\nfunction registeredIDs(appObjects: AppObjectRepo): string[] {\n return ChallengeEntity.get(appObjects)!.allChallenges.map(\n (challenge) => challenge.challengeID,\n );\n}\n\ndescribe(\"setupObjectPick\", () => {\n it(\"Creates the ObjectPick entity\", () => {\n const { appObjects } = makeTestRig();\n\n setupObjectPick(appObjects);\n\n expect(ObjectPickEntity.get(appObjects)).toBeDefined();\n });\n\n it(\"Registers itself as a challenge kind when the Challenge feature is already wired\", () => {\n const { appObjects } = makeTestRig();\n makeChallengeEntity(appObjects.getOrCreate(\"Challenge\"));\n\n setupObjectPick(appObjects);\n\n expect(registeredIDs(appObjects)).toContain(\"OBJECT_PICK\");\n });\n\n it(\"Skips the registration silently when there is no Challenge feature\", () => {\n const { appObjects, mockError, mockWarn } = makeTestRig();\n\n expect(() => setupObjectPick(appObjects)).not.toThrow();\n\n // hasSingleton, not .get - the getter itself warns when it misses.\n expect(appObjects.hasSingleton(ChallengeEntity.type)).toBe(false);\n expect(mockError).not.toHaveBeenCalled();\n expect(mockWarn).not.toHaveBeenCalled();\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"procedureAdapter.js","sourceRoot":"","sources":["../../../../src/Procedure/Adapters/procedureAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,MAAM,gBAAgB;IAAtB;QACE,cAAS,GAAgB;YACvB,QAAQ,EAAE,EAAE;YACZ,YAAY,EAAE,IAAI;YAClB,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,EAAE;YAChB,gBAAgB,EAAE,CAAC;YACnB,UAAU,EAAE,KAAK;YACjB,iBAAiB,EAAE,IAAI;YACvB,iBAAiB,EAAE,IAAI;YACvB,kBAAkB,EAAE,CAAC;YACrB,eAAe,EAAE,EAAE;YACnB,0BAA0B,EACxB,mDAAmD;YACrD,KAAK,EAAE,IAAI;YACX,WAAW,EAAE,KAAK;SACnB,CAAC;IAmBJ,CAAC;IAjBC,SAAS,CAAC,UAAyB,EAAE,KAAgC;QACnE,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,WAAW,EAAE,CAAC;YAChB,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,WAAW,CAAC,MAAM;gBAAE,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,WAAW,CACT,UAAyB,EACzB,KAAgC;QAEhC,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,WAAW,EAAE,CAAC;YAChB,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC","sourcesContent":["import { SingletonPmAdapter, AppObjectRepo } from \"@vived/core\";\r\nimport { ProcedurePM } from \"../PM/ProcedurePM\";\r\nimport { ProcedureVM } from \"../types\";\r\n\r\nclass ProcedureAdapter implements SingletonPmAdapter<ProcedureVM> {\r\n defaultVM: ProcedureVM = {\r\n eventIds: [],\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: null,\r\n progressPercentage: 0,\r\n availableEvents: [],\r\n authoringValidationMessage:\r\n \"At least one event must be added to the procedure\",\r\n score: null,\r\n isSubmitted: false,\r\n };\r\n\r\n subscribe(appObjects: AppObjectRepo, setVM: (vm: ProcedureVM) => void): void {\r\n const procedurePM = ProcedurePM.get(appObjects);\r\n if (procedurePM) {\r\n procedurePM.addView(setVM);\r\n if (procedurePM.lastVM) setVM(procedurePM.lastVM);\r\n }\r\n }\r\n\r\n unsubscribe(\r\n appObjects: AppObjectRepo,\r\n setVM: (vm: ProcedureVM) => void,\r\n ): void {\r\n const procedurePM = ProcedurePM.get(appObjects);\r\n if (procedurePM) {\r\n procedurePM.removeView(setVM);\r\n }\r\n }\r\n}\r\n\r\nexport const procedureAdapter = new ProcedureAdapter();\r\n"]}
|
|
1
|
+
{"version":3,"file":"procedureAdapter.js","sourceRoot":"","sources":["../../../../src/Procedure/Adapters/procedureAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,MAAM,gBAAgB;IAAtB;QACE,cAAS,GAAgB;YACvB,QAAQ,EAAE,EAAE;YACZ,YAAY,EAAE,IAAI;YAClB,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,EAAE;YAChB,gBAAgB,EAAE,CAAC;YACnB,UAAU,EAAE,KAAK;YACjB,iBAAiB,EAAE,IAAI;YACvB,iBAAiB,EAAE,IAAI;YACvB,kBAAkB,EAAE,CAAC;YACrB,eAAe,EAAE,EAAE;YACnB,0BAA0B,EACxB,mDAAmD;YACrD,KAAK,EAAE,IAAI;YACX,WAAW,EAAE,KAAK;YAClB,cAAc,EAAE,EAAE;SACnB,CAAC;IAmBJ,CAAC;IAjBC,SAAS,CAAC,UAAyB,EAAE,KAAgC;QACnE,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,WAAW,EAAE,CAAC;YAChB,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,WAAW,CAAC,MAAM;gBAAE,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,WAAW,CACT,UAAyB,EACzB,KAAgC;QAEhC,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,WAAW,EAAE,CAAC;YAChB,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC","sourcesContent":["import { SingletonPmAdapter, AppObjectRepo } from \"@vived/core\";\r\nimport { ProcedurePM } from \"../PM/ProcedurePM\";\r\nimport { ProcedureVM } from \"../types\";\r\n\r\nclass ProcedureAdapter implements SingletonPmAdapter<ProcedureVM> {\r\n defaultVM: ProcedureVM = {\r\n eventIds: [],\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: null,\r\n progressPercentage: 0,\r\n availableEvents: [],\r\n authoringValidationMessage:\r\n \"At least one event must be added to the procedure\",\r\n score: null,\r\n isSubmitted: false,\r\n stepCategories: {},\r\n };\r\n\r\n subscribe(appObjects: AppObjectRepo, setVM: (vm: ProcedureVM) => void): void {\r\n const procedurePM = ProcedurePM.get(appObjects);\r\n if (procedurePM) {\r\n procedurePM.addView(setVM);\r\n if (procedurePM.lastVM) setVM(procedurePM.lastVM);\r\n }\r\n }\r\n\r\n unsubscribe(\r\n appObjects: AppObjectRepo,\r\n setVM: (vm: ProcedureVM) => void,\r\n ): void {\r\n const procedurePM = ProcedurePM.get(appObjects);\r\n if (procedurePM) {\r\n procedurePM.removeView(setVM);\r\n }\r\n }\r\n}\r\n\r\nexport const procedureAdapter = new ProcedureAdapter();\r\n"]}
|
|
@@ -22,6 +22,7 @@ describe("procedureAdapter", () => {
|
|
|
22
22
|
expect(defaultVM.availableEvents).toEqual([]);
|
|
23
23
|
expect(defaultVM.score).toBeNull();
|
|
24
24
|
expect(defaultVM.isSubmitted).toBe(false);
|
|
25
|
+
expect(defaultVM.stepCategories).toEqual({});
|
|
25
26
|
});
|
|
26
27
|
it("calls addView on the PM when subscribing", () => {
|
|
27
28
|
const { mockPM, appObjects } = makeTestRig();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"procedureAdapter.test.js","sourceRoot":"","sources":["../../../../src/Procedure/Adapters/procedureAdapter.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,SAAS,WAAW;IACnB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAC/B,CAAC;AAED,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC3C,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC;QAC7C,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACvC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC/C,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC/C,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;QACnC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"procedureAdapter.test.js","sourceRoot":"","sources":["../../../../src/Procedure/Adapters/procedureAdapter.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { procedureAdapter } from \"./procedureAdapter\";\r\nimport { makeMockProcedurePM } from \"../Mocks/MockProcedurePM\";\r\n\r\nfunction makeTestRig() {\r\n\tconst appObjects = makeAppObjectRepo();\r\n\tconst mockPM = makeMockProcedurePM(appObjects);\r\n\treturn { appObjects, mockPM };\r\n}\r\n\r\ndescribe(\"procedureAdapter\", () => {\r\n\tit(\"has the correct default VM shape\", () => {\r\n\t\tconst defaultVM = procedureAdapter.defaultVM;\r\n\t\texpect(defaultVM.eventIds).toEqual([]);\r\n\t\texpect(defaultVM.orderMatters).toBe(true);\r\n\t\texpect(defaultVM.showHints).toBe(true);\r\n\t\texpect(defaultVM.isQuiz).toBe(false);\r\n\t\texpect(defaultVM.userEventLog).toEqual([]);\r\n\t\texpect(defaultVM.currentStepIndex).toBe(0);\r\n\t\texpect(defaultVM.isComplete).toBe(false);\r\n\t\texpect(defaultVM.validationMessage).toBeNull();\r\n\t\texpect(defaultVM.nextExpectedEvent).toBeNull();\r\n\t\texpect(defaultVM.progressPercentage).toBe(0);\r\n\t\texpect(defaultVM.availableEvents).toEqual([]);\r\n\t\texpect(defaultVM.score).toBeNull();\r\n\t\texpect(defaultVM.isSubmitted).toBe(false);\r\n\t\texpect(defaultVM.stepCategories).toEqual({});\r\n\t});\r\n\r\n\tit(\"calls addView on the PM when subscribing\", () => {\r\n\t\tconst { mockPM, appObjects } = makeTestRig();\r\n\t\tmockPM.addView = jest.fn();\r\n\t\tconst setVM = jest.fn();\r\n\r\n\t\tprocedureAdapter.subscribe(appObjects, setVM);\r\n\r\n\t\texpect(mockPM.addView).toHaveBeenCalledWith(setVM);\r\n\t});\r\n\r\n\tit(\"calls removeView on the PM when unsubscribing\", () => {\r\n\t\tconst { mockPM, appObjects } = makeTestRig();\r\n\t\tmockPM.removeView = jest.fn();\r\n\t\tconst setVM = jest.fn();\r\n\r\n\t\tprocedureAdapter.unsubscribe(appObjects, setVM);\r\n\r\n\t\texpect(mockPM.removeView).toHaveBeenCalledWith(setVM);\r\n\t});\r\n});\r\n"]}
|
|
@@ -7,6 +7,7 @@ function mapToAuthoringVM(vm) {
|
|
|
7
7
|
orderMatters: vm.orderMatters,
|
|
8
8
|
showHints: vm.showHints,
|
|
9
9
|
isQuiz: vm.isQuiz,
|
|
10
|
+
stepCategories: vm.stepCategories,
|
|
10
11
|
};
|
|
11
12
|
}
|
|
12
13
|
class ProcedureAuthoringAdapter {
|
|
@@ -18,6 +19,7 @@ class ProcedureAuthoringAdapter {
|
|
|
18
19
|
orderMatters: true,
|
|
19
20
|
showHints: true,
|
|
20
21
|
isQuiz: false,
|
|
22
|
+
stepCategories: {},
|
|
21
23
|
};
|
|
22
24
|
this.wrappers = new WeakMap();
|
|
23
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"procedureAuthoringAdapter.js","sourceRoot":"","sources":["../../../../src/Procedure/Adapters/procedureAuthoringAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,SAAS,gBAAgB,CAAC,EAAe;IACvC,OAAO;QACL,QAAQ,EAAE,EAAE,CAAC,QAAQ;QACrB,eAAe,EAAE,EAAE,CAAC,eAAe;QACnC,0BAA0B,EAAE,EAAE,CAAC,0BAA0B;QACzD,YAAY,EAAE,EAAE,CAAC,YAAY;QAC7B,SAAS,EAAE,EAAE,CAAC,SAAS;QACvB,MAAM,EAAE,EAAE,CAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"procedureAuthoringAdapter.js","sourceRoot":"","sources":["../../../../src/Procedure/Adapters/procedureAuthoringAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,SAAS,gBAAgB,CAAC,EAAe;IACvC,OAAO;QACL,QAAQ,EAAE,EAAE,CAAC,QAAQ;QACrB,eAAe,EAAE,EAAE,CAAC,eAAe;QACnC,0BAA0B,EAAE,EAAE,CAAC,0BAA0B;QACzD,YAAY,EAAE,EAAE,CAAC,YAAY;QAC7B,SAAS,EAAE,EAAE,CAAC,SAAS;QACvB,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,cAAc,EAAE,EAAE,CAAC,cAAc;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,yBAAyB;IAA/B;QAGE,cAAS,GAAyB;YAChC,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,EAAE;YACnB,0BAA0B,EACxB,mDAAmD;YACrD,YAAY,EAAE,IAAI;YAClB,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,KAAK;YACb,cAAc,EAAE,EAAE;SACnB,CAAC;QAEM,aAAQ,GAAG,IAAI,OAAO,EAG3B,CAAC;IA0BN,CAAC;IAxBC,SAAS,CACP,UAAyB,EACzB,KAAyC;QAEzC,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,MAAM,OAAO,GAAG,CAAC,EAAe,EAAE,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAClC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACpB,IAAI,EAAE,CAAC,MAAM;YAAE,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,WAAW,CACT,UAAyB,EACzB,KAAyC;QAEzC,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,OAAO,EAAE,CAAC;YACZ,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,yBAAyB,EAAE,CAAC","sourcesContent":["import { SingletonPmAdapter, AppObjectRepo } from \"@vived/core\";\r\nimport { ProcedurePM } from \"../PM/ProcedurePM\";\r\nimport { ProcedureAuthoringVM, ProcedureVM } from \"../types\";\r\n\r\nfunction mapToAuthoringVM(vm: ProcedureVM): ProcedureAuthoringVM {\r\n return {\r\n eventIds: vm.eventIds,\r\n availableEvents: vm.availableEvents,\r\n authoringValidationMessage: vm.authoringValidationMessage,\r\n orderMatters: vm.orderMatters,\r\n showHints: vm.showHints,\r\n isQuiz: vm.isQuiz,\r\n stepCategories: vm.stepCategories,\r\n };\r\n}\r\n\r\nclass ProcedureAuthoringAdapter\r\n implements SingletonPmAdapter<ProcedureAuthoringVM>\r\n{\r\n defaultVM: ProcedureAuthoringVM = {\r\n eventIds: [],\r\n availableEvents: [],\r\n authoringValidationMessage:\r\n \"At least one event must be added to the procedure\",\r\n orderMatters: true,\r\n showHints: true,\r\n isQuiz: false,\r\n stepCategories: {},\r\n };\r\n\r\n private wrappers = new WeakMap<\r\n (vm: ProcedureAuthoringVM) => void,\r\n (vm: ProcedureVM) => void\r\n >();\r\n\r\n subscribe(\r\n appObjects: AppObjectRepo,\r\n setVM: (vm: ProcedureAuthoringVM) => void,\r\n ): void {\r\n const pm = ProcedurePM.get(appObjects);\r\n if (!pm) return;\r\n const wrapper = (vm: ProcedureVM) => setVM(mapToAuthoringVM(vm));\r\n this.wrappers.set(setVM, wrapper);\r\n pm.addView(wrapper);\r\n if (pm.lastVM) setVM(mapToAuthoringVM(pm.lastVM));\r\n }\r\n\r\n unsubscribe(\r\n appObjects: AppObjectRepo,\r\n setVM: (vm: ProcedureAuthoringVM) => void,\r\n ): void {\r\n const pm = ProcedurePM.get(appObjects);\r\n if (!pm) return;\r\n const wrapper = this.wrappers.get(setVM);\r\n if (wrapper) {\r\n pm.removeView(wrapper);\r\n this.wrappers.delete(setVM);\r\n }\r\n }\r\n}\r\n\r\nexport const procedureAuthoringAdapter = new ProcedureAuthoringAdapter();\r\n"]}
|
|
@@ -15,6 +15,7 @@ describe("procedureAuthoringAdapter", () => {
|
|
|
15
15
|
expect(defaultVM.orderMatters).toBe(true);
|
|
16
16
|
expect(defaultVM.showHints).toBe(true);
|
|
17
17
|
expect(defaultVM.isQuiz).toBe(false);
|
|
18
|
+
expect(defaultVM.stepCategories).toEqual({});
|
|
18
19
|
});
|
|
19
20
|
it("calls addView on the PM when subscribing", () => {
|
|
20
21
|
const { mockPM, appObjects } = makeTestRig();
|
|
@@ -52,6 +53,7 @@ describe("procedureAuthoringAdapter", () => {
|
|
|
52
53
|
progressPercentage: 50,
|
|
53
54
|
score: null,
|
|
54
55
|
isSubmitted: false,
|
|
56
|
+
stepCategories: { event_a: "instructional" },
|
|
55
57
|
});
|
|
56
58
|
expect(setVM).toHaveBeenCalledWith({
|
|
57
59
|
eventIds: ["event_a"],
|
|
@@ -60,6 +62,7 @@ describe("procedureAuthoringAdapter", () => {
|
|
|
60
62
|
orderMatters: false,
|
|
61
63
|
showHints: false,
|
|
62
64
|
isQuiz: true,
|
|
65
|
+
stepCategories: { event_a: "instructional" },
|
|
63
66
|
});
|
|
64
67
|
});
|
|
65
68
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"procedureAuthoringAdapter.test.js","sourceRoot":"","sources":["../../../../src/Procedure/Adapters/procedureAuthoringAdapter.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,SAAS,WAAW;IACnB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAC/B,CAAC;AAED,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC3C,MAAM,SAAS,GAAG,yBAAyB,CAAC,SAAS,CAAC;QACtD,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACvC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,SAAS,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnE,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"procedureAuthoringAdapter.test.js","sourceRoot":"","sources":["../../../../src/Procedure/Adapters/procedureAuthoringAdapter.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { procedureAuthoringAdapter } from \"./procedureAuthoringAdapter\";\r\nimport { makeMockProcedurePM } from \"../Mocks/MockProcedurePM\";\r\n\r\nfunction makeTestRig() {\r\n\tconst appObjects = makeAppObjectRepo();\r\n\tconst mockPM = makeMockProcedurePM(appObjects);\r\n\treturn { appObjects, mockPM };\r\n}\r\n\r\ndescribe(\"procedureAuthoringAdapter\", () => {\r\n\tit(\"has the correct default VM shape\", () => {\r\n\t\tconst defaultVM = procedureAuthoringAdapter.defaultVM;\r\n\t\texpect(defaultVM.eventIds).toEqual([]);\r\n\t\texpect(defaultVM.availableEvents).toEqual([]);\r\n\t\texpect(typeof defaultVM.authoringValidationMessage).toBe(\"string\");\r\n\t\texpect(defaultVM.orderMatters).toBe(true);\r\n\t\texpect(defaultVM.showHints).toBe(true);\r\n\t\texpect(defaultVM.isQuiz).toBe(false);\r\n\t\texpect(defaultVM.stepCategories).toEqual({});\r\n\t});\r\n\r\n\tit(\"calls addView on the PM when subscribing\", () => {\r\n\t\tconst { mockPM, appObjects } = makeTestRig();\r\n\t\tmockPM.addView = jest.fn();\r\n\t\tconst setVM = jest.fn();\r\n\r\n\t\tprocedureAuthoringAdapter.subscribe(appObjects, setVM);\r\n\r\n\t\texpect(mockPM.addView).toHaveBeenCalled();\r\n\t});\r\n\r\n\tit(\"calls removeView on the PM when unsubscribing\", () => {\r\n\t\tconst { mockPM, appObjects } = makeTestRig();\r\n\t\tmockPM.removeView = jest.fn();\r\n\t\tconst setVM = jest.fn();\r\n\r\n\t\tprocedureAuthoringAdapter.subscribe(appObjects, setVM);\r\n\t\tprocedureAuthoringAdapter.unsubscribe(appObjects, setVM);\r\n\r\n\t\texpect(mockPM.removeView).toHaveBeenCalled();\r\n\t});\r\n\r\n\tit(\"maps only authoring fields from the full VM\", () => {\r\n\t\tconst { mockPM, appObjects } = makeTestRig();\r\n\t\tmockPM.addView = jest.fn();\r\n\t\tconst setVM = jest.fn();\r\n\r\n\t\tprocedureAuthoringAdapter.subscribe(appObjects, setVM);\r\n\r\n\t\tconst capturedWrapper = (mockPM.addView as jest.Mock).mock.calls[0][0];\r\n\t\tcapturedWrapper({\r\n\t\t\teventIds: [\"event_a\"],\r\n\t\t\tavailableEvents: [{ id: \"event_a\", name: \"Event A\" }],\r\n\t\t\tauthoringValidationMessage: null,\r\n\t\t\torderMatters: false,\r\n\t\t\tshowHints: false,\r\n\t\t\tisQuiz: true,\r\n\t\t\tuserEventLog: [],\r\n\t\t\tcurrentStepIndex: 0,\r\n\t\t\tisComplete: false,\r\n\t\t\tvalidationMessage: null,\r\n\t\t\tnextExpectedEvent: null,\r\n\t\t\tprogressPercentage: 50,\r\n\t\t\tscore: null,\r\n\t\t\tisSubmitted: false,\r\n\t\t\tstepCategories: { event_a: \"instructional\" },\r\n\t\t});\r\n\r\n\t\texpect(setVM).toHaveBeenCalledWith({\r\n\t\t\teventIds: [\"event_a\"],\r\n\t\t\tavailableEvents: [{ id: \"event_a\", name: \"Event A\" }],\r\n\t\t\tauthoringValidationMessage: null,\r\n\t\t\torderMatters: false,\r\n\t\t\tshowHints: false,\r\n\t\t\tisQuiz: true,\r\n\t\t\tstepCategories: { event_a: \"instructional\" },\r\n\t\t});\r\n\t});\r\n});\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"procedureHintAdapter.test.js","sourceRoot":"","sources":["../../../../src/Procedure/Adapters/procedureHintAdapter.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,SAAS,WAAW;IACnB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAC/B,CAAC;AAED,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC3C,MAAM,SAAS,GAAG,oBAAoB,CAAC,SAAS,CAAC;QACjD,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACnD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAC7C,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAExB,oBAAoB,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAElD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACxD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAC7C,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAExB,oBAAoB,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAClD,oBAAoB,CAAC,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAEpD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QACjD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAC7C,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAExB,oBAAoB,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAElD,MAAM,eAAe,GAAI,MAAM,CAAC,OAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,eAAe,CAAC;YACf,SAAS,EAAE,KAAK;YAChB,iBAAiB,EAAE,SAAS;YAC5B,QAAQ,EAAE,CAAC,SAAS,CAAC;YACrB,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,KAAK;YACb,YAAY,EAAE,EAAE;YAChB,gBAAgB,EAAE,CAAC;YACnB,UAAU,EAAE,KAAK;YACjB,iBAAiB,EAAE,IAAI;YACvB,kBAAkB,EAAE,CAAC;YACrB,eAAe,EAAE,EAAE;YACnB,0BAA0B,EAAE,IAAI;YAChC,KAAK,EAAE,IAAI;YACX,WAAW,EAAE,KAAK;
|
|
1
|
+
{"version":3,"file":"procedureHintAdapter.test.js","sourceRoot":"","sources":["../../../../src/Procedure/Adapters/procedureHintAdapter.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { procedureHintAdapter } from \"./procedureHintAdapter\";\r\nimport { makeMockProcedurePM } from \"../Mocks/MockProcedurePM\";\r\n\r\nfunction makeTestRig() {\r\n\tconst appObjects = makeAppObjectRepo();\r\n\tconst mockPM = makeMockProcedurePM(appObjects);\r\n\treturn { appObjects, mockPM };\r\n}\r\n\r\ndescribe(\"procedureHintAdapter\", () => {\r\n\tit(\"has the correct default VM shape\", () => {\r\n\t\tconst defaultVM = procedureHintAdapter.defaultVM;\r\n\t\texpect(defaultVM.showHints).toBe(true);\r\n\t\texpect(defaultVM.nextExpectedEvent).toBeNull();\r\n\t});\r\n\r\n\tit(\"calls addView on the PM when subscribing\", () => {\r\n\t\tconst { mockPM, appObjects } = makeTestRig();\r\n\t\tmockPM.addView = jest.fn();\r\n\t\tconst setVM = jest.fn();\r\n\r\n\t\tprocedureHintAdapter.subscribe(appObjects, setVM);\r\n\r\n\t\texpect(mockPM.addView).toHaveBeenCalled();\r\n\t});\r\n\r\n\tit(\"calls removeView on the PM when unsubscribing\", () => {\r\n\t\tconst { mockPM, appObjects } = makeTestRig();\r\n\t\tmockPM.removeView = jest.fn();\r\n\t\tconst setVM = jest.fn();\r\n\r\n\t\tprocedureHintAdapter.subscribe(appObjects, setVM);\r\n\t\tprocedureHintAdapter.unsubscribe(appObjects, setVM);\r\n\r\n\t\texpect(mockPM.removeView).toHaveBeenCalled();\r\n\t});\r\n\r\n\tit(\"maps only hint fields from the full VM\", () => {\r\n\t\tconst { mockPM, appObjects } = makeTestRig();\r\n\t\tmockPM.addView = jest.fn();\r\n\t\tconst setVM = jest.fn();\r\n\r\n\t\tprocedureHintAdapter.subscribe(appObjects, setVM);\r\n\r\n\t\tconst capturedWrapper = (mockPM.addView as jest.Mock).mock.calls[0][0];\r\n\t\tcapturedWrapper({\r\n\t\t\tshowHints: false,\r\n\t\t\tnextExpectedEvent: \"event_a\",\r\n\t\t\teventIds: [\"event_a\"],\r\n\t\t\torderMatters: true,\r\n\t\t\tisQuiz: false,\r\n\t\t\tuserEventLog: [],\r\n\t\t\tcurrentStepIndex: 0,\r\n\t\t\tisComplete: false,\r\n\t\t\tvalidationMessage: null,\r\n\t\t\tprogressPercentage: 0,\r\n\t\t\tavailableEvents: [],\r\n\t\t\tauthoringValidationMessage: null,\r\n\t\t\tscore: null,\r\n\t\t\tisSubmitted: false,\r\n\t\t\tstepCategories: { event_a: \"assessed\" },\r\n\t\t});\r\n\r\n\t\texpect(setVM).toHaveBeenCalledWith({\r\n\t\t\tshowHints: false,\r\n\t\t\tnextExpectedEvent: \"event_a\",\r\n\t\t});\r\n\t});\r\n});\r\n"]}
|
|
@@ -10,6 +10,7 @@ function mapToProgressVM(vm) {
|
|
|
10
10
|
progressPercentage: vm.progressPercentage,
|
|
11
11
|
isQuiz: vm.isQuiz,
|
|
12
12
|
isSubmitted: vm.isSubmitted,
|
|
13
|
+
stepCategories: vm.stepCategories,
|
|
13
14
|
};
|
|
14
15
|
}
|
|
15
16
|
class ProcedureProgressAdapter {
|
|
@@ -24,6 +25,7 @@ class ProcedureProgressAdapter {
|
|
|
24
25
|
progressPercentage: 0,
|
|
25
26
|
isQuiz: false,
|
|
26
27
|
isSubmitted: false,
|
|
28
|
+
stepCategories: {},
|
|
27
29
|
};
|
|
28
30
|
this.wrappers = new WeakMap();
|
|
29
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"procedureProgressAdapter.js","sourceRoot":"","sources":["../../../../src/Procedure/Adapters/procedureProgressAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,SAAS,eAAe,CAAC,EAAe;IACtC,OAAO;QACL,QAAQ,EAAE,EAAE,CAAC,QAAQ;QACrB,eAAe,EAAE,EAAE,CAAC,eAAe;QACnC,YAAY,EAAE,EAAE,CAAC,YAAY;QAC7B,gBAAgB,EAAE,EAAE,CAAC,gBAAgB;QACrC,UAAU,EAAE,EAAE,CAAC,UAAU;QACzB,YAAY,EAAE,EAAE,CAAC,YAAY;QAC7B,kBAAkB,EAAE,EAAE,CAAC,kBAAkB;QACzC,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,WAAW,EAAE,EAAE,CAAC,WAAW;
|
|
1
|
+
{"version":3,"file":"procedureProgressAdapter.js","sourceRoot":"","sources":["../../../../src/Procedure/Adapters/procedureProgressAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,SAAS,eAAe,CAAC,EAAe;IACtC,OAAO;QACL,QAAQ,EAAE,EAAE,CAAC,QAAQ;QACrB,eAAe,EAAE,EAAE,CAAC,eAAe;QACnC,YAAY,EAAE,EAAE,CAAC,YAAY;QAC7B,gBAAgB,EAAE,EAAE,CAAC,gBAAgB;QACrC,UAAU,EAAE,EAAE,CAAC,UAAU;QACzB,YAAY,EAAE,EAAE,CAAC,YAAY;QAC7B,kBAAkB,EAAE,EAAE,CAAC,kBAAkB;QACzC,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,WAAW,EAAE,EAAE,CAAC,WAAW;QAC3B,cAAc,EAAE,EAAE,CAAC,cAAc;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,wBAAwB;IAA9B;QAGE,cAAS,GAAwB;YAC/B,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,EAAE;YACnB,YAAY,EAAE,EAAE;YAChB,gBAAgB,EAAE,CAAC;YACnB,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,IAAI;YAClB,kBAAkB,EAAE,CAAC;YACrB,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,KAAK;YAClB,cAAc,EAAE,EAAE;SACnB,CAAC;QAEM,aAAQ,GAAG,IAAI,OAAO,EAG3B,CAAC;IA0BN,CAAC;IAxBC,SAAS,CACP,UAAyB,EACzB,KAAwC;QAExC,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,MAAM,OAAO,GAAG,CAAC,EAAe,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAClC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACpB,IAAI,EAAE,CAAC,MAAM;YAAE,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,WAAW,CACT,UAAyB,EACzB,KAAwC;QAExC,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,OAAO,EAAE,CAAC;YACZ,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,wBAAwB,EAAE,CAAC","sourcesContent":["import { SingletonPmAdapter, AppObjectRepo } from \"@vived/core\";\r\nimport { ProcedurePM } from \"../PM/ProcedurePM\";\r\nimport { ProcedureProgressVM, ProcedureVM } from \"../types\";\r\n\r\nfunction mapToProgressVM(vm: ProcedureVM): ProcedureProgressVM {\r\n return {\r\n eventIds: vm.eventIds,\r\n availableEvents: vm.availableEvents,\r\n userEventLog: vm.userEventLog,\r\n currentStepIndex: vm.currentStepIndex,\r\n isComplete: vm.isComplete,\r\n orderMatters: vm.orderMatters,\r\n progressPercentage: vm.progressPercentage,\r\n isQuiz: vm.isQuiz,\r\n isSubmitted: vm.isSubmitted,\r\n stepCategories: vm.stepCategories,\r\n };\r\n}\r\n\r\nclass ProcedureProgressAdapter\r\n implements SingletonPmAdapter<ProcedureProgressVM>\r\n{\r\n defaultVM: ProcedureProgressVM = {\r\n eventIds: [],\r\n availableEvents: [],\r\n userEventLog: [],\r\n currentStepIndex: 0,\r\n isComplete: false,\r\n orderMatters: true,\r\n progressPercentage: 0,\r\n isQuiz: false,\r\n isSubmitted: false,\r\n stepCategories: {},\r\n };\r\n\r\n private wrappers = new WeakMap<\r\n (vm: ProcedureProgressVM) => void,\r\n (vm: ProcedureVM) => void\r\n >();\r\n\r\n subscribe(\r\n appObjects: AppObjectRepo,\r\n setVM: (vm: ProcedureProgressVM) => void,\r\n ): void {\r\n const pm = ProcedurePM.get(appObjects);\r\n if (!pm) return;\r\n const wrapper = (vm: ProcedureVM) => setVM(mapToProgressVM(vm));\r\n this.wrappers.set(setVM, wrapper);\r\n pm.addView(wrapper);\r\n if (pm.lastVM) setVM(mapToProgressVM(pm.lastVM));\r\n }\r\n\r\n unsubscribe(\r\n appObjects: AppObjectRepo,\r\n setVM: (vm: ProcedureProgressVM) => void,\r\n ): void {\r\n const pm = ProcedurePM.get(appObjects);\r\n if (!pm) return;\r\n const wrapper = this.wrappers.get(setVM);\r\n if (wrapper) {\r\n pm.removeView(wrapper);\r\n this.wrappers.delete(setVM);\r\n }\r\n }\r\n}\r\n\r\nexport const procedureProgressAdapter = new ProcedureProgressAdapter();\r\n"]}
|
|
@@ -18,6 +18,7 @@ describe("procedureProgressAdapter", () => {
|
|
|
18
18
|
expect(defaultVM.progressPercentage).toBe(0);
|
|
19
19
|
expect(defaultVM.isQuiz).toBe(false);
|
|
20
20
|
expect(defaultVM.isSubmitted).toBe(false);
|
|
21
|
+
expect(defaultVM.stepCategories).toEqual({});
|
|
21
22
|
});
|
|
22
23
|
it("calls addView on the PM when subscribing", () => {
|
|
23
24
|
const { mockPM, appObjects } = makeTestRig();
|
|
@@ -55,6 +56,7 @@ describe("procedureProgressAdapter", () => {
|
|
|
55
56
|
authoringValidationMessage: null,
|
|
56
57
|
score: null,
|
|
57
58
|
showHints: false,
|
|
59
|
+
stepCategories: { event_a: "assessed" },
|
|
58
60
|
});
|
|
59
61
|
expect(setVM).toHaveBeenCalledWith({
|
|
60
62
|
eventIds: ["event_a"],
|
|
@@ -66,6 +68,7 @@ describe("procedureProgressAdapter", () => {
|
|
|
66
68
|
progressPercentage: 100,
|
|
67
69
|
isQuiz: true,
|
|
68
70
|
isSubmitted: true,
|
|
71
|
+
stepCategories: { event_a: "assessed" },
|
|
69
72
|
});
|
|
70
73
|
});
|
|
71
74
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"procedureProgressAdapter.test.js","sourceRoot":"","sources":["../../../../src/Procedure/Adapters/procedureProgressAdapter.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,SAAS,WAAW;IACnB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAC/B,CAAC;AAED,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC3C,MAAM,SAAS,GAAG,wBAAwB,CAAC,SAAS,CAAC;QACrD,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACvC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"procedureProgressAdapter.test.js","sourceRoot":"","sources":["../../../../src/Procedure/Adapters/procedureProgressAdapter.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { procedureProgressAdapter } from \"./procedureProgressAdapter\";\r\nimport { makeMockProcedurePM } from \"../Mocks/MockProcedurePM\";\r\n\r\nfunction makeTestRig() {\r\n\tconst appObjects = makeAppObjectRepo();\r\n\tconst mockPM = makeMockProcedurePM(appObjects);\r\n\treturn { appObjects, mockPM };\r\n}\r\n\r\ndescribe(\"procedureProgressAdapter\", () => {\r\n\tit(\"has the correct default VM shape\", () => {\r\n\t\tconst defaultVM = procedureProgressAdapter.defaultVM;\r\n\t\texpect(defaultVM.eventIds).toEqual([]);\r\n\t\texpect(defaultVM.availableEvents).toEqual([]);\r\n\t\texpect(defaultVM.userEventLog).toEqual([]);\r\n\t\texpect(defaultVM.currentStepIndex).toBe(0);\r\n\t\texpect(defaultVM.isComplete).toBe(false);\r\n\t\texpect(defaultVM.orderMatters).toBe(true);\r\n\t\texpect(defaultVM.progressPercentage).toBe(0);\r\n\t\texpect(defaultVM.isQuiz).toBe(false);\r\n\t\texpect(defaultVM.isSubmitted).toBe(false);\r\n\t\texpect(defaultVM.stepCategories).toEqual({});\r\n\t});\r\n\r\n\tit(\"calls addView on the PM when subscribing\", () => {\r\n\t\tconst { mockPM, appObjects } = makeTestRig();\r\n\t\tmockPM.addView = jest.fn();\r\n\t\tconst setVM = jest.fn();\r\n\r\n\t\tprocedureProgressAdapter.subscribe(appObjects, setVM);\r\n\r\n\t\texpect(mockPM.addView).toHaveBeenCalled();\r\n\t});\r\n\r\n\tit(\"calls removeView on the PM when unsubscribing\", () => {\r\n\t\tconst { mockPM, appObjects } = makeTestRig();\r\n\t\tmockPM.removeView = jest.fn();\r\n\t\tconst setVM = jest.fn();\r\n\r\n\t\tprocedureProgressAdapter.subscribe(appObjects, setVM);\r\n\t\tprocedureProgressAdapter.unsubscribe(appObjects, setVM);\r\n\r\n\t\texpect(mockPM.removeView).toHaveBeenCalled();\r\n\t});\r\n\r\n\tit(\"maps only progress fields from the full VM\", () => {\r\n\t\tconst { mockPM, appObjects } = makeTestRig();\r\n\t\tmockPM.addView = jest.fn();\r\n\t\tconst setVM = jest.fn();\r\n\r\n\t\tprocedureProgressAdapter.subscribe(appObjects, setVM);\r\n\r\n\t\tconst capturedWrapper = (mockPM.addView as jest.Mock).mock.calls[0][0];\r\n\t\tcapturedWrapper({\r\n\t\t\teventIds: [\"event_a\"],\r\n\t\t\tavailableEvents: [{ id: \"event_a\", name: \"Event A\" }],\r\n\t\t\tuserEventLog: [\"event_a\"],\r\n\t\t\tcurrentStepIndex: 1,\r\n\t\t\tisComplete: true,\r\n\t\t\torderMatters: false,\r\n\t\t\tprogressPercentage: 100,\r\n\t\t\tisQuiz: true,\r\n\t\t\tisSubmitted: true,\r\n\t\t\tvalidationMessage: null,\r\n\t\t\tnextExpectedEvent: null,\r\n\t\t\tauthoringValidationMessage: null,\r\n\t\t\tscore: null,\r\n\t\t\tshowHints: false,\r\n\t\t\tstepCategories: { event_a: \"assessed\" },\r\n\t\t});\r\n\r\n\t\texpect(setVM).toHaveBeenCalledWith({\r\n\t\t\teventIds: [\"event_a\"],\r\n\t\t\tavailableEvents: [{ id: \"event_a\", name: \"Event A\" }],\r\n\t\t\tuserEventLog: [\"event_a\"],\r\n\t\t\tcurrentStepIndex: 1,\r\n\t\t\tisComplete: true,\r\n\t\t\torderMatters: false,\r\n\t\t\tprogressPercentage: 100,\r\n\t\t\tisQuiz: true,\r\n\t\t\tisSubmitted: true,\r\n\t\t\tstepCategories: { event_a: \"assessed\" },\r\n\t\t});\r\n\t});\r\n});\r\n"]}
|
|
@@ -10,6 +10,7 @@ function mapToQuizResultVM(vm) {
|
|
|
10
10
|
userEventLog: vm.userEventLog,
|
|
11
11
|
score: vm.score,
|
|
12
12
|
isSubmitted: vm.isSubmitted,
|
|
13
|
+
stepCategories: vm.stepCategories,
|
|
13
14
|
};
|
|
14
15
|
}
|
|
15
16
|
class ProcedureQuizResultAdapter {
|
|
@@ -24,6 +25,7 @@ class ProcedureQuizResultAdapter {
|
|
|
24
25
|
userEventLog: [],
|
|
25
26
|
score: null,
|
|
26
27
|
isSubmitted: false,
|
|
28
|
+
stepCategories: {},
|
|
27
29
|
};
|
|
28
30
|
this.wrappers = new WeakMap();
|
|
29
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"procedureQuizResultAdapter.js","sourceRoot":"","sources":["../../../../src/Procedure/Adapters/procedureQuizResultAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,SAAS,iBAAiB,CAAC,EAAe;IACxC,OAAO;QACL,UAAU,EAAE,EAAE,CAAC,UAAU;QACzB,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,kBAAkB,EAAE,EAAE,CAAC,kBAAkB;QACzC,QAAQ,EAAE,EAAE,CAAC,QAAQ;QACrB,eAAe,EAAE,EAAE,CAAC,eAAe;QACnC,YAAY,EAAE,EAAE,CAAC,YAAY;QAC7B,YAAY,EAAE,EAAE,CAAC,YAAY;QAC7B,KAAK,EAAE,EAAE,CAAC,KAAK;QACf,WAAW,EAAE,EAAE,CAAC,WAAW;
|
|
1
|
+
{"version":3,"file":"procedureQuizResultAdapter.js","sourceRoot":"","sources":["../../../../src/Procedure/Adapters/procedureQuizResultAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,SAAS,iBAAiB,CAAC,EAAe;IACxC,OAAO;QACL,UAAU,EAAE,EAAE,CAAC,UAAU;QACzB,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,kBAAkB,EAAE,EAAE,CAAC,kBAAkB;QACzC,QAAQ,EAAE,EAAE,CAAC,QAAQ;QACrB,eAAe,EAAE,EAAE,CAAC,eAAe;QACnC,YAAY,EAAE,EAAE,CAAC,YAAY;QAC7B,YAAY,EAAE,EAAE,CAAC,YAAY;QAC7B,KAAK,EAAE,EAAE,CAAC,KAAK;QACf,WAAW,EAAE,EAAE,CAAC,WAAW;QAC3B,cAAc,EAAE,EAAE,CAAC,cAAc;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,0BAA0B;IAAhC;QAGE,cAAS,GAA0B;YACjC,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,KAAK;YACb,kBAAkB,EAAE,CAAC;YACrB,QAAQ,EAAE,EAAE;YACZ,eAAe,EAAE,EAAE;YACnB,YAAY,EAAE,IAAI;YAClB,YAAY,EAAE,EAAE;YAChB,KAAK,EAAE,IAAI;YACX,WAAW,EAAE,KAAK;YAClB,cAAc,EAAE,EAAE;SACnB,CAAC;QAEM,aAAQ,GAAG,IAAI,OAAO,EAG3B,CAAC;IA0BN,CAAC;IAxBC,SAAS,CACP,UAAyB,EACzB,KAA0C;QAE1C,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,MAAM,OAAO,GAAG,CAAC,EAAe,EAAE,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAClC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACpB,IAAI,EAAE,CAAC,MAAM;YAAE,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,WAAW,CACT,UAAyB,EACzB,KAA0C;QAE1C,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,OAAO,EAAE,CAAC;YACZ,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,0BAA0B,EAAE,CAAC","sourcesContent":["import { SingletonPmAdapter, AppObjectRepo } from \"@vived/core\";\r\nimport { ProcedurePM } from \"../PM/ProcedurePM\";\r\nimport { ProcedureQuizResultVM, ProcedureVM } from \"../types\";\r\n\r\nfunction mapToQuizResultVM(vm: ProcedureVM): ProcedureQuizResultVM {\r\n return {\r\n isComplete: vm.isComplete,\r\n isQuiz: vm.isQuiz,\r\n progressPercentage: vm.progressPercentage,\r\n eventIds: vm.eventIds,\r\n availableEvents: vm.availableEvents,\r\n orderMatters: vm.orderMatters,\r\n userEventLog: vm.userEventLog,\r\n score: vm.score,\r\n isSubmitted: vm.isSubmitted,\r\n stepCategories: vm.stepCategories,\r\n };\r\n}\r\n\r\nclass ProcedureQuizResultAdapter\r\n implements SingletonPmAdapter<ProcedureQuizResultVM>\r\n{\r\n defaultVM: ProcedureQuizResultVM = {\r\n isComplete: false,\r\n isQuiz: false,\r\n progressPercentage: 0,\r\n eventIds: [],\r\n availableEvents: [],\r\n orderMatters: true,\r\n userEventLog: [],\r\n score: null,\r\n isSubmitted: false,\r\n stepCategories: {},\r\n };\r\n\r\n private wrappers = new WeakMap<\r\n (vm: ProcedureQuizResultVM) => void,\r\n (vm: ProcedureVM) => void\r\n >();\r\n\r\n subscribe(\r\n appObjects: AppObjectRepo,\r\n setVM: (vm: ProcedureQuizResultVM) => void,\r\n ): void {\r\n const pm = ProcedurePM.get(appObjects);\r\n if (!pm) return;\r\n const wrapper = (vm: ProcedureVM) => setVM(mapToQuizResultVM(vm));\r\n this.wrappers.set(setVM, wrapper);\r\n pm.addView(wrapper);\r\n if (pm.lastVM) setVM(mapToQuizResultVM(pm.lastVM));\r\n }\r\n\r\n unsubscribe(\r\n appObjects: AppObjectRepo,\r\n setVM: (vm: ProcedureQuizResultVM) => void,\r\n ): void {\r\n const pm = ProcedurePM.get(appObjects);\r\n if (!pm) return;\r\n const wrapper = this.wrappers.get(setVM);\r\n if (wrapper) {\r\n pm.removeView(wrapper);\r\n this.wrappers.delete(setVM);\r\n }\r\n }\r\n}\r\n\r\nexport const procedureQuizResultAdapter = new ProcedureQuizResultAdapter();\r\n"]}
|