@vived/host 4.0.3 → 4.2.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/dist/cjs/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.js +24 -0
- package/dist/cjs/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.js.map +1 -0
- package/dist/cjs/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.test.js +30 -0
- package/dist/cjs/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.test.js.map +1 -0
- package/dist/cjs/ChallengeResults/Adapters/index.js +1 -0
- package/dist/cjs/ChallengeResults/Adapters/index.js.map +1 -1
- package/dist/cjs/ChallengeResults/Factories/index.js +1 -1
- package/dist/cjs/ChallengeResults/Factories/index.js.map +1 -1
- package/dist/cjs/ChallengeResults/Factories/setupChallengeResults.js +14 -0
- package/dist/cjs/ChallengeResults/Factories/setupChallengeResults.js.map +1 -0
- package/dist/cjs/ChallengeResults/Factories/setupChallengeResultsForSandbox.js +1 -0
- package/dist/cjs/ChallengeResults/Factories/setupChallengeResultsForSandbox.js.map +1 -1
- package/dist/cjs/ChallengeResults/Mocks/MockHasChallengeResultsPM.js +16 -0
- package/dist/cjs/ChallengeResults/Mocks/MockHasChallengeResultsPM.js.map +1 -0
- package/dist/cjs/ChallengeResults/Mocks/index.js +1 -0
- package/dist/cjs/ChallengeResults/Mocks/index.js.map +1 -1
- package/dist/cjs/ChallengeResults/PMs/ChallengeResultsListPM.js +2 -0
- package/dist/cjs/ChallengeResults/PMs/ChallengeResultsListPM.js.map +1 -1
- package/dist/cjs/ChallengeResults/PMs/ChallengeResultsListPM.test.js +4 -2
- package/dist/cjs/ChallengeResults/PMs/ChallengeResultsListPM.test.js.map +1 -1
- package/dist/cjs/ChallengeResults/PMs/HasChallengeResultsPM.js +37 -0
- package/dist/cjs/ChallengeResults/PMs/HasChallengeResultsPM.js.map +1 -0
- package/dist/cjs/ChallengeResults/PMs/HasChallengeResultsPM.test.js +32 -0
- package/dist/cjs/ChallengeResults/PMs/HasChallengeResultsPM.test.js.map +1 -0
- package/dist/cjs/ChallengeResults/PMs/index.js +1 -0
- package/dist/cjs/ChallengeResults/PMs/index.js.map +1 -1
- package/dist/cjs/StateMachine/Adapters/hostStateAdapter.js +24 -0
- package/dist/cjs/StateMachine/Adapters/hostStateAdapter.js.map +1 -0
- package/dist/cjs/StateMachine/Adapters/hostStateAdapter.test.js +49 -0
- package/dist/cjs/StateMachine/Adapters/hostStateAdapter.test.js.map +1 -0
- package/dist/cjs/StateMachine/Adapters/index.js +1 -0
- package/dist/cjs/StateMachine/Adapters/index.js.map +1 -1
- package/dist/cjs/StateMachine/Controllers/editStateName.js +13 -0
- package/dist/cjs/StateMachine/Controllers/editStateName.js.map +1 -0
- package/dist/cjs/StateMachine/Controllers/editStateName.test.js +49 -0
- package/dist/cjs/StateMachine/Controllers/editStateName.test.js.map +1 -0
- package/dist/cjs/StateMachine/Controllers/index.js +1 -0
- package/dist/cjs/StateMachine/Controllers/index.js.map +1 -1
- package/dist/cjs/StateMachine/Entities/HostStateMachine.js +67 -24
- package/dist/cjs/StateMachine/Entities/HostStateMachine.js.map +1 -1
- package/dist/cjs/StateMachine/Entities/HostStateMachine.test.js +174 -0
- package/dist/cjs/StateMachine/Entities/HostStateMachine.test.js.map +1 -1
- package/dist/cjs/StateMachine/Mocks/MockEditStateNameUC.js +12 -0
- package/dist/cjs/StateMachine/Mocks/MockEditStateNameUC.js.map +1 -0
- package/dist/cjs/StateMachine/Mocks/MockHostStatePM.js +23 -0
- package/dist/cjs/StateMachine/Mocks/MockHostStatePM.js.map +1 -0
- package/dist/cjs/StateMachine/PMs/HostStateMachinePM.js +21 -15
- package/dist/cjs/StateMachine/PMs/HostStateMachinePM.js.map +1 -1
- package/dist/cjs/StateMachine/PMs/HostStateMachinePM.test.js +65 -56
- package/dist/cjs/StateMachine/PMs/HostStateMachinePM.test.js.map +1 -1
- package/dist/cjs/StateMachine/PMs/HostStatePM.js +136 -0
- package/dist/cjs/StateMachine/PMs/HostStatePM.js.map +1 -0
- package/dist/cjs/StateMachine/PMs/HostStatePM.test.js +405 -0
- package/dist/cjs/StateMachine/PMs/HostStatePM.test.js.map +1 -0
- package/dist/cjs/StateMachine/PMs/index.js +1 -0
- package/dist/cjs/StateMachine/PMs/index.js.map +1 -1
- package/dist/cjs/StateMachine/UCs/EditStateNameUC.js +35 -0
- package/dist/cjs/StateMachine/UCs/EditStateNameUC.js.map +1 -0
- package/dist/cjs/StateMachine/UCs/EditStateNameUC.test.js +58 -0
- package/dist/cjs/StateMachine/UCs/EditStateNameUC.test.js.map +1 -0
- package/dist/cjs/StateMachine/UCs/index.js +1 -0
- package/dist/cjs/StateMachine/UCs/index.js.map +1 -1
- package/dist/cjs/ThemeColors/Factories/index.js +1 -1
- package/dist/cjs/ThemeColors/Factories/index.js.map +1 -1
- package/dist/cjs/ThemeColors/Factories/setupTheme.js +20 -0
- package/dist/cjs/ThemeColors/Factories/setupTheme.js.map +1 -0
- package/dist/cjs/ThemeColors/UCs/SetThemeUC.js +1 -1
- package/dist/cjs/ThemeColors/UCs/SetThemeUC.js.map +1 -1
- package/dist/esm/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.js +21 -0
- package/dist/esm/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.js.map +1 -0
- package/dist/esm/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.test.js +28 -0
- package/dist/esm/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.test.js.map +1 -0
- package/dist/esm/ChallengeResults/Adapters/index.js +1 -0
- package/dist/esm/ChallengeResults/Adapters/index.js.map +1 -1
- package/dist/esm/ChallengeResults/Factories/index.js +1 -1
- package/dist/esm/ChallengeResults/Factories/index.js.map +1 -1
- package/dist/esm/ChallengeResults/Factories/setupChallengeResults.js +11 -0
- package/dist/esm/ChallengeResults/Factories/setupChallengeResults.js.map +1 -0
- package/dist/esm/ChallengeResults/Factories/setupChallengeResultsForSandbox.js +2 -1
- package/dist/esm/ChallengeResults/Factories/setupChallengeResultsForSandbox.js.map +1 -1
- package/dist/esm/ChallengeResults/Mocks/MockHasChallengeResultsPM.js +11 -0
- package/dist/esm/ChallengeResults/Mocks/MockHasChallengeResultsPM.js.map +1 -0
- package/dist/esm/ChallengeResults/Mocks/index.js +1 -0
- package/dist/esm/ChallengeResults/Mocks/index.js.map +1 -1
- package/dist/esm/ChallengeResults/PMs/ChallengeResultsListPM.js +2 -0
- package/dist/esm/ChallengeResults/PMs/ChallengeResultsListPM.js.map +1 -1
- package/dist/esm/ChallengeResults/PMs/ChallengeResultsListPM.test.js +4 -2
- package/dist/esm/ChallengeResults/PMs/ChallengeResultsListPM.test.js.map +1 -1
- package/dist/esm/ChallengeResults/PMs/HasChallengeResultsPM.js +32 -0
- package/dist/esm/ChallengeResults/PMs/HasChallengeResultsPM.js.map +1 -0
- package/dist/esm/ChallengeResults/PMs/HasChallengeResultsPM.test.js +30 -0
- package/dist/esm/ChallengeResults/PMs/HasChallengeResultsPM.test.js.map +1 -0
- package/dist/esm/ChallengeResults/PMs/index.js +1 -0
- package/dist/esm/ChallengeResults/PMs/index.js.map +1 -1
- package/dist/esm/StateMachine/Adapters/hostStateAdapter.js +21 -0
- package/dist/esm/StateMachine/Adapters/hostStateAdapter.js.map +1 -0
- package/dist/esm/StateMachine/Adapters/hostStateAdapter.test.js +47 -0
- package/dist/esm/StateMachine/Adapters/hostStateAdapter.test.js.map +1 -0
- package/dist/esm/StateMachine/Adapters/index.js +1 -0
- package/dist/esm/StateMachine/Adapters/index.js.map +1 -1
- package/dist/esm/StateMachine/Controllers/editStateName.js +10 -0
- package/dist/esm/StateMachine/Controllers/editStateName.js.map +1 -0
- package/dist/esm/StateMachine/Controllers/editStateName.test.js +47 -0
- package/dist/esm/StateMachine/Controllers/editStateName.test.js.map +1 -0
- package/dist/esm/StateMachine/Controllers/index.js +1 -0
- package/dist/esm/StateMachine/Controllers/index.js.map +1 -1
- package/dist/esm/StateMachine/Entities/HostStateMachine.js +67 -24
- package/dist/esm/StateMachine/Entities/HostStateMachine.js.map +1 -1
- package/dist/esm/StateMachine/Entities/HostStateMachine.test.js +174 -0
- package/dist/esm/StateMachine/Entities/HostStateMachine.test.js.map +1 -1
- package/dist/esm/StateMachine/Mocks/MockEditStateNameUC.js +8 -0
- package/dist/esm/StateMachine/Mocks/MockEditStateNameUC.js.map +1 -0
- package/dist/esm/StateMachine/Mocks/MockHostStatePM.js +18 -0
- package/dist/esm/StateMachine/Mocks/MockHostStatePM.js.map +1 -0
- package/dist/esm/StateMachine/PMs/HostStateMachinePM.js +21 -15
- package/dist/esm/StateMachine/PMs/HostStateMachinePM.js.map +1 -1
- package/dist/esm/StateMachine/PMs/HostStateMachinePM.test.js +65 -56
- package/dist/esm/StateMachine/PMs/HostStateMachinePM.test.js.map +1 -1
- package/dist/esm/StateMachine/PMs/HostStatePM.js +131 -0
- package/dist/esm/StateMachine/PMs/HostStatePM.js.map +1 -0
- package/dist/esm/StateMachine/PMs/HostStatePM.test.js +403 -0
- package/dist/esm/StateMachine/PMs/HostStatePM.test.js.map +1 -0
- package/dist/esm/StateMachine/PMs/index.js +1 -0
- package/dist/esm/StateMachine/PMs/index.js.map +1 -1
- package/dist/esm/StateMachine/UCs/EditStateNameUC.js +30 -0
- package/dist/esm/StateMachine/UCs/EditStateNameUC.js.map +1 -0
- package/dist/esm/StateMachine/UCs/EditStateNameUC.test.js +56 -0
- package/dist/esm/StateMachine/UCs/EditStateNameUC.test.js.map +1 -0
- package/dist/esm/StateMachine/UCs/index.js +1 -0
- package/dist/esm/StateMachine/UCs/index.js.map +1 -1
- package/dist/esm/ThemeColors/Factories/index.js +1 -1
- package/dist/esm/ThemeColors/Factories/index.js.map +1 -1
- package/dist/esm/ThemeColors/Factories/setupTheme.js +17 -0
- package/dist/esm/ThemeColors/Factories/setupTheme.js.map +1 -0
- package/dist/esm/ThemeColors/UCs/SetThemeUC.js +1 -1
- package/dist/esm/ThemeColors/UCs/SetThemeUC.js.map +1 -1
- package/dist/types/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.d.ts +3 -0
- package/dist/types/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.d.ts.map +1 -0
- package/dist/types/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.test.d.ts +2 -0
- package/dist/types/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.test.d.ts.map +1 -0
- package/dist/types/ChallengeResults/Adapters/index.d.ts +1 -0
- package/dist/types/ChallengeResults/Adapters/index.d.ts.map +1 -1
- package/dist/types/ChallengeResults/Factories/index.d.ts +1 -1
- package/dist/types/ChallengeResults/Factories/index.d.ts.map +1 -1
- package/dist/types/ChallengeResults/Factories/setupChallengeResults.d.ts +4 -0
- package/dist/types/ChallengeResults/Factories/setupChallengeResults.d.ts.map +1 -0
- package/dist/types/ChallengeResults/Factories/setupChallengeResultsForSandbox.d.ts.map +1 -1
- package/dist/types/ChallengeResults/Mocks/MockHasChallengeResultsPM.d.ts +8 -0
- package/dist/types/ChallengeResults/Mocks/MockHasChallengeResultsPM.d.ts.map +1 -0
- package/dist/types/ChallengeResults/Mocks/index.d.ts +1 -0
- package/dist/types/ChallengeResults/Mocks/index.d.ts.map +1 -1
- package/dist/types/ChallengeResults/PMs/ChallengeResultsListPM.d.ts +1 -0
- package/dist/types/ChallengeResults/PMs/ChallengeResultsListPM.d.ts.map +1 -1
- package/dist/types/ChallengeResults/PMs/HasChallengeResultsPM.d.ts +7 -0
- package/dist/types/ChallengeResults/PMs/HasChallengeResultsPM.d.ts.map +1 -0
- package/dist/types/ChallengeResults/PMs/HasChallengeResultsPM.test.d.ts +2 -0
- package/dist/types/ChallengeResults/PMs/HasChallengeResultsPM.test.d.ts.map +1 -0
- package/dist/types/ChallengeResults/PMs/index.d.ts +1 -0
- package/dist/types/ChallengeResults/PMs/index.d.ts.map +1 -1
- package/dist/types/StateMachine/Adapters/hostStateAdapter.d.ts +4 -0
- package/dist/types/StateMachine/Adapters/hostStateAdapter.d.ts.map +1 -0
- package/dist/types/StateMachine/Adapters/hostStateAdapter.test.d.ts +2 -0
- package/dist/types/StateMachine/Adapters/hostStateAdapter.test.d.ts.map +1 -0
- package/dist/types/StateMachine/Adapters/index.d.ts +1 -0
- package/dist/types/StateMachine/Adapters/index.d.ts.map +1 -1
- package/dist/types/StateMachine/Controllers/editStateName.d.ts +3 -0
- package/dist/types/StateMachine/Controllers/editStateName.d.ts.map +1 -0
- package/dist/types/StateMachine/Controllers/editStateName.test.d.ts +2 -0
- package/dist/types/StateMachine/Controllers/editStateName.test.d.ts.map +1 -0
- package/dist/types/StateMachine/Controllers/index.d.ts +1 -0
- package/dist/types/StateMachine/Controllers/index.d.ts.map +1 -1
- package/dist/types/StateMachine/Entities/HostStateMachine.d.ts +6 -0
- package/dist/types/StateMachine/Entities/HostStateMachine.d.ts.map +1 -1
- package/dist/types/StateMachine/Mocks/MockEditStateNameUC.d.ts +7 -0
- package/dist/types/StateMachine/Mocks/MockEditStateNameUC.d.ts.map +1 -0
- package/dist/types/StateMachine/Mocks/MockHostStatePM.d.ts +9 -0
- package/dist/types/StateMachine/Mocks/MockHostStatePM.d.ts.map +1 -0
- package/dist/types/StateMachine/PMs/HostStateMachinePM.d.ts +3 -4
- package/dist/types/StateMachine/PMs/HostStateMachinePM.d.ts.map +1 -1
- package/dist/types/StateMachine/PMs/HostStatePM.d.ts +18 -0
- package/dist/types/StateMachine/PMs/HostStatePM.d.ts.map +1 -0
- package/dist/types/StateMachine/PMs/HostStatePM.test.d.ts +2 -0
- package/dist/types/StateMachine/PMs/HostStatePM.test.d.ts.map +1 -0
- package/dist/types/StateMachine/PMs/index.d.ts +1 -0
- package/dist/types/StateMachine/PMs/index.d.ts.map +1 -1
- package/dist/types/StateMachine/UCs/EditStateNameUC.d.ts +9 -0
- package/dist/types/StateMachine/UCs/EditStateNameUC.d.ts.map +1 -0
- package/dist/types/StateMachine/UCs/EditStateNameUC.test.d.ts +2 -0
- package/dist/types/StateMachine/UCs/EditStateNameUC.test.d.ts.map +1 -0
- package/dist/types/StateMachine/UCs/index.d.ts +1 -0
- package/dist/types/StateMachine/UCs/index.d.ts.map +1 -1
- package/dist/types/ThemeColors/Factories/index.d.ts +1 -1
- package/dist/types/ThemeColors/Factories/index.d.ts.map +1 -1
- package/dist/types/ThemeColors/Factories/setupTheme.d.ts +3 -0
- package/dist/types/ThemeColors/Factories/setupTheme.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setupTheme.js","sourceRoot":"","sources":["../../../../src/ThemeColors/Factories/setupTheme.ts"],"names":[],"mappings":";;AAMA,gCAgBC;AArBD,kCAAkE;AAClE,0CAAkD;AAClD,8BAA0C;AAC1C,gCAAwC;AAExC,SAAgB,UAAU,CAAC,UAAyB;IAClD,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAE3C,WAAW;IACX,MAAM,KAAK,GAAG,IAAA,8BAAmB,EAAC,EAAE,CAAC,CAAC;IAEtC,MAAM;IACN,MAAM,UAAU,GAAG,IAAA,oBAAc,EAAC,EAAE,CAAC,CAAC;IAEtC,MAAM;IACN,IAAA,sBAAiB,EAAC,EAAE,CAAC,CAAC;IAEtB,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,0BAAmB,CAAC,CAAC;IACjD,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,yBAAkB,CAAC,CAAC;IAE/C,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB;AAC1D,CAAC","sourcesContent":["import { AppObjectRepo } from \"@vived/core\";\r\nimport { vivedDarkThemeData, vivedLightThemeData } from \"../Data\";\r\nimport { makeHostThemeEntity } from \"../Entities\";\r\nimport { makeThemeColorsPM } from \"../PM\";\r\nimport { makeSetThemeUC } from \"../UCs\";\r\n\r\nexport function setupTheme(appObjects: AppObjectRepo) {\r\n const ao = appObjects.getOrCreate(\"Theme\");\r\n\r\n // Entities\r\n const theme = makeHostThemeEntity(ao);\r\n\r\n // UCs\r\n const setThemeUC = makeSetThemeUC(ao);\r\n\r\n // PMs\r\n makeThemeColorsPM(ao);\r\n\r\n theme.submitScheme(\"light\", vivedLightThemeData);\r\n theme.submitScheme(\"dark\", vivedDarkThemeData);\r\n\r\n setThemeUC.setThemeByName(\"light\"); // Hardcoded for now\r\n}\r\n"]}
|
|
@@ -24,7 +24,7 @@ class SetThemeUCImp extends SetThemeUC {
|
|
|
24
24
|
this.theme.activeSchemeName = name;
|
|
25
25
|
}
|
|
26
26
|
tryDetectTheme() {
|
|
27
|
-
if (!this.theme)
|
|
27
|
+
if (!this.theme || !window.matchMedia)
|
|
28
28
|
return;
|
|
29
29
|
const darkThemeMq = window.matchMedia("(prefers-color-scheme: dark)");
|
|
30
30
|
if (darkThemeMq.matches) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SetThemeUC.js","sourceRoot":"","sources":["../../../../src/ThemeColors/UCs/SetThemeUC.ts"],"names":[],"mappings":";;;AAsBA,wCAEC;AAxBD,sCAKqB;AACrB,0CAA8C;AAE9C,MAAsB,UAAW,SAAQ,kBAAW;IASlD,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,IAAA,4BAAqB,EAAa,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACxE,CAAC;;AAXH,gCAYC;AAXQ,eAAI,GAAG,YAAY,CAAC;AAa7B,SAAgB,cAAc,CAAC,SAAoB;IACjD,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,aAAc,SAAQ,UAAU;IAIpC,IAAY,KAAK;QACf,OAAO,IAAI,CAAC,kBAAkB,CAAkB,0BAAe,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;IAED,cAAc,CAAC,IAAY;QACzB,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QAExB,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC;IACrC,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"SetThemeUC.js","sourceRoot":"","sources":["../../../../src/ThemeColors/UCs/SetThemeUC.ts"],"names":[],"mappings":";;;AAsBA,wCAEC;AAxBD,sCAKqB;AACrB,0CAA8C;AAE9C,MAAsB,UAAW,SAAQ,kBAAW;IASlD,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,IAAA,4BAAqB,EAAa,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACxE,CAAC;;AAXH,gCAYC;AAXQ,eAAI,GAAG,YAAY,CAAC;AAa7B,SAAgB,cAAc,CAAC,SAAoB;IACjD,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,aAAc,SAAQ,UAAU;IAIpC,IAAY,KAAK;QACf,OAAO,IAAI,CAAC,kBAAkB,CAAkB,0BAAe,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;IAED,cAAc,CAAC,IAAY;QACzB,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QAExB,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC;IACrC,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,UAAU;YAAE,OAAO;QAE9C,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC;QACtE,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC;QACnD,CAAC;IACH,CAAC;IAED,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QAzBpC,mBAAc,GAAG,OAAO,CAAC;QACzB,kBAAa,GAAG,MAAM,CAAC;QAyBrB,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACF","sourcesContent":["import {\r\n getSingletonComponent,\r\n AppObject,\r\n AppObjectRepo,\r\n AppObjectUC\r\n} from \"@vived/core\";\r\nimport { HostThemeEntity } from \"../Entities\";\r\n\r\nexport abstract class SetThemeUC extends AppObjectUC {\r\n static type = \"SetThemeUC\";\r\n\r\n abstract lightThemeName: string;\r\n abstract darkThemeName: string;\r\n\r\n abstract setThemeByName(name: string): void;\r\n abstract tryDetectTheme(): void;\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<SetThemeUC>(SetThemeUC.type, appObjects);\r\n }\r\n}\r\n\r\nexport function makeSetThemeUC(appObject: AppObject): SetThemeUC {\r\n return new SetThemeUCImp(appObject);\r\n}\r\n\r\nclass SetThemeUCImp extends SetThemeUC {\r\n lightThemeName = \"light\";\r\n darkThemeName = \"dark\";\r\n\r\n private get theme() {\r\n return this.getCachedSingleton<HostThemeEntity>(HostThemeEntity.type);\r\n }\r\n\r\n setThemeByName(name: string): void {\r\n if (!this.theme) return;\r\n\r\n this.theme.activeSchemeName = name;\r\n }\r\n\r\n tryDetectTheme(): void {\r\n if (!this.theme || !window.matchMedia) return;\r\n\r\n const darkThemeMq = window.matchMedia(\"(prefers-color-scheme: dark)\");\r\n if (darkThemeMq.matches) {\r\n this.theme.activeSchemeName = this.darkThemeName;\r\n } else {\r\n this.theme.activeSchemeName = this.darkThemeName;\r\n }\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, SetThemeUC.type);\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { HasChallengeResultsPM } from "../PMs/HasChallengeResultsPM";
|
|
2
|
+
export const hasChallengeResultsPMAdapter = {
|
|
3
|
+
defaultVM: false,
|
|
4
|
+
subscribe: (appObjects, setVM) => {
|
|
5
|
+
const pm = HasChallengeResultsPM.get(appObjects);
|
|
6
|
+
if (!pm) {
|
|
7
|
+
appObjects.submitError("hasChallengeResultsPMAdapter", "Unable to find HasChallengeResultsPM");
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
pm.addView(setVM);
|
|
11
|
+
},
|
|
12
|
+
unsubscribe: (appObjects, setVM) => {
|
|
13
|
+
const pm = HasChallengeResultsPM.get(appObjects);
|
|
14
|
+
if (!pm) {
|
|
15
|
+
appObjects.submitError("hasChallengeResultsPMAdapter", "Unable to find HasChallengeResultsPM");
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
pm.removeView(setVM);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=hasChallengeResultsPMAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hasChallengeResultsPMAdapter.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE,MAAM,CAAC,MAAM,4BAA4B,GAAgC;IACvE,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,CAAC,UAAyB,EAAE,KAA4B,EAAE,EAAE;QACrE,MAAM,EAAE,GAAG,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,UAAU,CAAC,WAAW,CACpB,8BAA8B,EAC9B,sCAAsC,CACvC,CAAC;YACF,OAAO;QACT,CAAC;QACD,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IACD,WAAW,EAAE,CAAC,UAAyB,EAAE,KAA4B,EAAE,EAAE;QACvE,MAAM,EAAE,GAAG,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,UAAU,CAAC,WAAW,CACpB,8BAA8B,EAC9B,sCAAsC,CACvC,CAAC;YACF,OAAO;QACT,CAAC;QACD,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;CACF,CAAC","sourcesContent":["import { AppObjectRepo, SingletonPmAdapter } from \"@vived/core\";\r\nimport { HasChallengeResultsPM } from \"../PMs/HasChallengeResultsPM\";\r\n\r\nexport const hasChallengeResultsPMAdapter: SingletonPmAdapter<boolean> = {\r\n defaultVM: false,\r\n subscribe: (appObjects: AppObjectRepo, setVM: (vm: boolean) => void) => {\r\n const pm = HasChallengeResultsPM.get(appObjects);\r\n if (!pm) {\r\n appObjects.submitError(\r\n \"hasChallengeResultsPMAdapter\",\r\n \"Unable to find HasChallengeResultsPM\"\r\n );\r\n return;\r\n }\r\n pm.addView(setVM);\r\n },\r\n unsubscribe: (appObjects: AppObjectRepo, setVM: (vm: boolean) => void) => {\r\n const pm = HasChallengeResultsPM.get(appObjects);\r\n if (!pm) {\r\n appObjects.submitError(\r\n \"hasChallengeResultsPMAdapter\",\r\n \"Unable to find HasChallengeResultsPM\"\r\n );\r\n return;\r\n }\r\n pm.removeView(setVM);\r\n }\r\n};\r\n"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { makeAppObjectRepo } from "@vived/core";
|
|
2
|
+
import { makeMockHasChallengeResultsPM } from "../Mocks/MockHasChallengeResultsPM";
|
|
3
|
+
import { hasChallengeResultsPMAdapter } from "./hasChallengeResultsPMAdapter";
|
|
4
|
+
function makeTestRig() {
|
|
5
|
+
const appObjects = makeAppObjectRepo();
|
|
6
|
+
const mockPM = makeMockHasChallengeResultsPM(appObjects);
|
|
7
|
+
return { appObjects, mockPM };
|
|
8
|
+
}
|
|
9
|
+
describe("Has Challenge Results PM Adapter", () => {
|
|
10
|
+
it("Sets the Default VM", () => {
|
|
11
|
+
expect(hasChallengeResultsPMAdapter.defaultVM).toEqual(false);
|
|
12
|
+
});
|
|
13
|
+
it("Add a view on subscribe", () => {
|
|
14
|
+
const { mockPM, appObjects } = makeTestRig();
|
|
15
|
+
mockPM.addView = jest.fn();
|
|
16
|
+
const setVM = jest.fn();
|
|
17
|
+
hasChallengeResultsPMAdapter.subscribe(appObjects, setVM);
|
|
18
|
+
expect(mockPM.addView).toBeCalledWith(setVM);
|
|
19
|
+
});
|
|
20
|
+
it("Removes a view on unsubscribe", () => {
|
|
21
|
+
const { mockPM, appObjects } = makeTestRig();
|
|
22
|
+
mockPM.removeView = jest.fn();
|
|
23
|
+
const setVM = jest.fn();
|
|
24
|
+
hasChallengeResultsPMAdapter.unsubscribe(appObjects, setVM);
|
|
25
|
+
expect(mockPM.removeView).toBeCalledWith(setVM);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=hasChallengeResultsPMAdapter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hasChallengeResultsPMAdapter.test.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Adapters/hasChallengeResultsPMAdapter.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAE9E,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,6BAA6B,CAAC,UAAU,CAAC,CAAC;IACzD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAChC,CAAC;AAED,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7C,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAExB,4BAA4B,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAE1D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7C,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAExB,4BAA4B,CAAC,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAE5D,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { makeMockHasChallengeResultsPM } from \"../Mocks/MockHasChallengeResultsPM\";\r\nimport { hasChallengeResultsPMAdapter } from \"./hasChallengeResultsPMAdapter\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const mockPM = makeMockHasChallengeResultsPM(appObjects);\r\n return { appObjects, mockPM };\r\n}\r\n\r\ndescribe(\"Has Challenge Results PM Adapter\", () => {\r\n it(\"Sets the Default VM\", () => {\r\n expect(hasChallengeResultsPMAdapter.defaultVM).toEqual(false);\r\n });\r\n\r\n it(\"Add a view on subscribe\", () => {\r\n const { mockPM, appObjects } = makeTestRig();\r\n\r\n mockPM.addView = jest.fn();\r\n const setVM = jest.fn();\r\n\r\n hasChallengeResultsPMAdapter.subscribe(appObjects, setVM);\r\n\r\n expect(mockPM.addView).toBeCalledWith(setVM);\r\n });\r\n\r\n it(\"Removes a view on unsubscribe\", () => {\r\n const { mockPM, appObjects } = makeTestRig();\r\n\r\n mockPM.removeView = jest.fn();\r\n const setVM = jest.fn();\r\n\r\n hasChallengeResultsPMAdapter.unsubscribe(appObjects, setVM);\r\n\r\n expect(mockPM.removeView).toBeCalledWith(setVM);\r\n });\r\n});\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Adapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC","sourcesContent":["export * from \"./challengeResultsListAdapter\";\r\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Adapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC","sourcesContent":["export * from \"./challengeResultsListAdapter\";\r\nexport * from \"./hasChallengeResultsPMAdapter\";\r\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from "./
|
|
1
|
+
export * from "./setupChallengeResults";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Factories/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Factories/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA","sourcesContent":["export * from \"./setupChallengeResults\""]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { makeChallengeResults } from "../Entities";
|
|
2
|
+
import { makeChallengeResultsPM, makeHasChallengeResultsPM } from "../PMs";
|
|
3
|
+
export function setupChallengeResults(appObjects) {
|
|
4
|
+
const ao = appObjects.getOrCreate("ChallengeResults");
|
|
5
|
+
const entity = makeChallengeResults(ao);
|
|
6
|
+
// PM
|
|
7
|
+
makeChallengeResultsPM(ao);
|
|
8
|
+
makeHasChallengeResultsPM(ao);
|
|
9
|
+
return entity;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=setupChallengeResults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setupChallengeResults.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Factories/setupChallengeResults.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,QAAQ,CAAC;AAE3E,MAAM,UAAU,qBAAqB,CACnC,UAAyB;IAEzB,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAEtD,MAAM,MAAM,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAExC,KAAK;IACL,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAC3B,yBAAyB,CAAC,EAAE,CAAC,CAAC;IAE9B,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import { AppObjectRepo } from \"@vived/core\";\r\nimport { ChallengeResultsEntity, makeChallengeResults } from \"../Entities\";\r\nimport { makeChallengeResultsPM, makeHasChallengeResultsPM } from \"../PMs\";\r\n\r\nexport function setupChallengeResults(\r\n appObjects: AppObjectRepo\r\n): ChallengeResultsEntity {\r\n const ao = appObjects.getOrCreate(\"ChallengeResults\");\r\n\r\n const entity = makeChallengeResults(ao);\r\n\r\n // PM\r\n makeChallengeResultsPM(ao);\r\n makeHasChallengeResultsPM(ao);\r\n\r\n return entity;\r\n}\r\n"]}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { makeChallengeResults } from "../Entities";
|
|
2
|
-
import { makeChallengeResultsPM } from "../PMs";
|
|
2
|
+
import { makeChallengeResultsPM, makeHasChallengeResultsPM } from "../PMs";
|
|
3
3
|
export function setupChallengeResultsForSandbox(appObjects) {
|
|
4
4
|
const ao = appObjects.getOrCreate("ChallengeResults");
|
|
5
5
|
makeChallengeResults(ao);
|
|
6
6
|
// PM
|
|
7
7
|
makeChallengeResultsPM(ao);
|
|
8
|
+
makeHasChallengeResultsPM(ao);
|
|
8
9
|
}
|
|
9
10
|
//# sourceMappingURL=setupChallengeResultsForSandbox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupChallengeResultsForSandbox.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Factories/setupChallengeResultsForSandbox.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"setupChallengeResultsForSandbox.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Factories/setupChallengeResultsForSandbox.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,QAAQ,CAAC;AAE3E,MAAM,UAAU,+BAA+B,CAAC,UAAyB;IACvE,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAEtD,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAEzB,KAAK;IACL,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAC3B,yBAAyB,CAAC,EAAE,CAAC,CAAC;AAChC,CAAC","sourcesContent":["import { AppObjectRepo } from \"@vived/core\";\r\nimport { makeChallengeResults } from \"../Entities\";\r\nimport { makeChallengeResultsPM, makeHasChallengeResultsPM } from \"../PMs\";\r\n\r\nexport function setupChallengeResultsForSandbox(appObjects: AppObjectRepo) {\r\n const ao = appObjects.getOrCreate(\"ChallengeResults\");\r\n\r\n makeChallengeResults(ao);\r\n\r\n // PM\r\n makeChallengeResultsPM(ao);\r\n makeHasChallengeResultsPM(ao);\r\n}\r\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { HasChallengeResultsPM } from "../PMs/HasChallengeResultsPM";
|
|
2
|
+
export class MockHasChallengeResultsPM extends HasChallengeResultsPM {
|
|
3
|
+
constructor(appObject) {
|
|
4
|
+
super(appObject, HasChallengeResultsPM.type);
|
|
5
|
+
this.vmsAreEqual = jest.fn();
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export function makeMockHasChallengeResultsPM(appObjects) {
|
|
9
|
+
return new MockHasChallengeResultsPM(appObjects.getOrCreate("MockHasChallengeResultsPM"));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=MockHasChallengeResultsPM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MockHasChallengeResultsPM.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Mocks/MockHasChallengeResultsPM.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE,MAAM,OAAO,yBAA0B,SAAQ,qBAAqB;IAGlE,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAH/C,gBAAW,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAIxB,CAAC;CACF;AAED,MAAM,UAAU,6BAA6B,CAAC,UAAyB;IACrE,OAAO,IAAI,yBAAyB,CAClC,UAAU,CAAC,WAAW,CAAC,2BAA2B,CAAC,CACpD,CAAC;AACJ,CAAC","sourcesContent":["import { AppObject, AppObjectRepo } from \"@vived/core\";\r\nimport { HasChallengeResultsPM } from \"../PMs/HasChallengeResultsPM\";\r\n\r\nexport class MockHasChallengeResultsPM extends HasChallengeResultsPM {\r\n vmsAreEqual = jest.fn();\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, HasChallengeResultsPM.type);\r\n }\r\n}\r\n\r\nexport function makeMockHasChallengeResultsPM(appObjects: AppObjectRepo) {\r\n return new MockHasChallengeResultsPM(\r\n appObjects.getOrCreate(\"MockHasChallengeResultsPM\")\r\n );\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Mocks/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAA","sourcesContent":["export * from \"./ChallengeResultsListPMMock\""]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/Mocks/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAA;AAC5C,cAAc,6BAA6B,CAAA","sourcesContent":["export * from \"./ChallengeResultsListPMMock\"\r\nexport * from \"./MockHasChallengeResultsPM\""]}
|
|
@@ -39,12 +39,14 @@ class ChallengeResultsPMImp extends ChallengeResultsListPM {
|
|
|
39
39
|
this.results.results.forEach((result) => {
|
|
40
40
|
const state = this.stateMachine.getStateByID(result.slideID);
|
|
41
41
|
if (state) {
|
|
42
|
+
const stateIndex = this.stateMachine.getStateIndex(result.slideID) ?? -1;
|
|
42
43
|
const vm = {
|
|
43
44
|
id: result.slideID,
|
|
44
45
|
slideName: state.name,
|
|
45
46
|
attempts: result.tries,
|
|
46
47
|
resultType: result.type,
|
|
47
48
|
message: result.message,
|
|
49
|
+
stateIndex,
|
|
48
50
|
resultData: result.resultData
|
|
49
51
|
};
|
|
50
52
|
organizedResults.push(vm);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChallengeResultsListPM.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/PMs/ChallengeResultsListPM.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,WAAW,EAAiB,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,EAML,sBAAsB,EAEvB,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"ChallengeResultsListPM.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/PMs/ChallengeResultsListPM.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, AppObjectPM, AppObjectRepo } from \"@vived/core\";\r\nimport { HostStateMachine } from \"../../StateMachine/Entities/HostStateMachine\";\r\nimport {\r\n ChallengeResultHitData,\r\n ChallengeResultMultiHitData,\r\n ChallengeResultProgressData,\r\n ChallengeResultQualityData,\r\n ChallengeResultScoreData,\r\n ChallengeResultsEntity,\r\n ChallengeResultType\r\n} from \"../Entities/ChallengeResults\";\r\n\r\nexport interface ChallengeResultVM {\r\n id: string;\r\n slideName: string;\r\n attempts: number;\r\n message: string;\r\n resultType: ChallengeResultType;\r\n stateIndex: number;\r\n resultData:\r\n | ChallengeResultHitData\r\n | ChallengeResultMultiHitData\r\n | ChallengeResultQualityData\r\n | ChallengeResultScoreData\r\n | ChallengeResultProgressData;\r\n}\r\n\r\nexport abstract class ChallengeResultsListPM extends AppObjectPM<\r\n ChallengeResultVM[]\r\n> {\r\n static type = \"ChallengeResultsListPM\";\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return appObjects.getSingleton<ChallengeResultsListPM>(\r\n ChallengeResultsListPM.type\r\n );\r\n }\r\n}\r\n\r\nexport function makeChallengeResultsPM(\r\n appObject: AppObject\r\n): ChallengeResultsListPM {\r\n return new ChallengeResultsPMImp(appObject);\r\n}\r\n\r\nclass ChallengeResultsPMImp extends ChallengeResultsListPM {\r\n private get results() {\r\n return this.getCachedSingleton<ChallengeResultsEntity>(\r\n ChallengeResultsEntity.type\r\n );\r\n }\r\n\r\n private get stateMachine() {\r\n return this.getCachedSingleton<HostStateMachine>(HostStateMachine.type);\r\n }\r\n\r\n vmsAreEqual(a: ChallengeResultVM[], b: ChallengeResultVM[]): boolean {\r\n if (a.length !== b.length) return false;\r\n\r\n let areEqual = true;\r\n a.forEach((aResult, i) => {\r\n const bResult = b[i];\r\n if (aResult.id !== bResult.id) areEqual = false;\r\n else if (aResult.attempts !== bResult.attempts) areEqual = false;\r\n });\r\n return areEqual;\r\n }\r\n\r\n onEntityChange = (): void => {\r\n if (!this.results || !this.stateMachine) return;\r\n\r\n const organizedResults: ChallengeResultVM[] = [];\r\n\r\n this.results.results.forEach((result) => {\r\n const state = this.stateMachine!.getStateByID(result.slideID);\r\n if (state) {\r\n const stateIndex =\r\n this.stateMachine!.getStateIndex(result.slideID) ?? -1;\r\n\r\n const vm: ChallengeResultVM = {\r\n id: result.slideID,\r\n slideName: state.name,\r\n attempts: result.tries,\r\n resultType: result.type,\r\n message: result.message,\r\n stateIndex,\r\n resultData: result.resultData\r\n };\r\n\r\n organizedResults.push(vm);\r\n }\r\n });\r\n\r\n this.doUpdateView(organizedResults);\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, ChallengeResultsListPM.type);\r\n this.doUpdateView([]);\r\n this.results?.addChangeObserver(this.onEntityChange);\r\n\r\n this.appObjects.registerSingleton(this);\r\n }\r\n}\r\n"]}
|
|
@@ -26,7 +26,8 @@ function makeChallengeResultVM(id) {
|
|
|
26
26
|
success: true
|
|
27
27
|
},
|
|
28
28
|
resultType: "HIT",
|
|
29
|
-
slideName: "slide name"
|
|
29
|
+
slideName: "slide name",
|
|
30
|
+
stateIndex: 0
|
|
30
31
|
};
|
|
31
32
|
}
|
|
32
33
|
describe("Challenge Results PM", () => {
|
|
@@ -97,7 +98,8 @@ describe("Challenge Results PM", () => {
|
|
|
97
98
|
},
|
|
98
99
|
resultType: "HIT",
|
|
99
100
|
id: "state1",
|
|
100
|
-
slideName: "State Name"
|
|
101
|
+
slideName: "State Name",
|
|
102
|
+
stateIndex: 0
|
|
101
103
|
}
|
|
102
104
|
]);
|
|
103
105
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChallengeResultsListPM.test.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/PMs/ChallengeResultsListPM.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EACL,sBAAsB,EAEtB,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAElC,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IACzE,MAAM,OAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;IAExE,MAAM,YAAY,GAAG,oBAAoB,CACvC,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CACvC,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,CAAC,uBAAuB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAExE,MAAM,EAAE,GAAG,sBAAsB,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAEhE,OAAO;QACL,EAAE;QACF,OAAO;QACP,UAAU;QACV,oBAAoB;KACrB,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,EAAU;IACvC,OAAO;QACL,QAAQ,EAAE,CAAC;QACX,EAAE;QACF,OAAO,EAAE,WAAW;QACpB,UAAU,EAAE;YACV,OAAO,EAAE,IAAI;SACd;QACD,UAAU,EAAE,KAAK;QACjB,SAAS,EAAE,YAAY;
|
|
1
|
+
{"version":3,"file":"ChallengeResultsListPM.test.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/PMs/ChallengeResultsListPM.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EACL,sBAAsB,EAEtB,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAElC,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IACzE,MAAM,OAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;IAExE,MAAM,YAAY,GAAG,oBAAoB,CACvC,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CACvC,CAAC;IACF,YAAY,CAAC,SAAS,CAAC,CAAC,uBAAuB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAExE,MAAM,EAAE,GAAG,sBAAsB,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAEhE,OAAO;QACL,EAAE;QACF,OAAO;QACP,UAAU;QACV,oBAAoB;KACrB,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,EAAU;IACvC,OAAO;QACL,QAAQ,EAAE,CAAC;QACX,EAAE;QACF,OAAO,EAAE,WAAW;QACpB,UAAU,EAAE;YACV,OAAO,EAAE,IAAI;SACd;QACD,UAAU,EAAE,KAAK;QACjB,SAAS,EAAE,YAAY;QACvB,UAAU,EAAE,CAAC;KACd,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAEzC,MAAM,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,EAAE,oBAAoB,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAEnD,MAAM,CAAC,oBAAoB,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAEjD,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QAErB,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAEjD,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;QAEtB,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAEjD,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE/B,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAExC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAEjD,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE/B,MAAM,YAAY,GAAsB,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;QACtE,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAEpC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAEjD,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE/B,MAAM,YAAY,GAAsB,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACpE,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAEpC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAC7B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAEtC,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAEnD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACxB;gBACE,QAAQ,EAAE,CAAC;gBACX,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE;oBACV,OAAO,EAAE,KAAK;iBACf;gBACD,UAAU,EAAE,KAAK;gBACjB,EAAE,EAAE,QAAQ;gBACZ,SAAS,EAAE,YAAY;gBACvB,UAAU,EAAE,CAAC;aACd;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\nimport { makeHostStateMachine } from \"../../StateMachine/Entities\";\r\nimport { makeMockHostStateEntity } from \"../../StateMachine/Mocks/MockHostStateEntity\";\r\nimport { makeChallengeResults } from \"../Entities\";\r\nimport {\r\n ChallengeResultsListPM,\r\n ChallengeResultVM,\r\n makeChallengeResultsPM\r\n} from \"./ChallengeResultsListPM\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const registerSingletonSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n const results = makeChallengeResults(appObjects.getOrCreate(\"Results\"));\r\n\r\n const stateMachine = makeHostStateMachine(\r\n appObjects.getOrCreate(\"StateMachine\")\r\n );\r\n stateMachine.setStates([makeMockHostStateEntity(\"state1\", appObjects)]);\r\n\r\n const pm = makeChallengeResultsPM(appObjects.getOrCreate(\"PM\"));\r\n\r\n return {\r\n pm,\r\n results,\r\n appObjects,\r\n registerSingletonSpy\r\n };\r\n}\r\n\r\nfunction makeChallengeResultVM(id: string): ChallengeResultVM {\r\n return {\r\n attempts: 1,\r\n id,\r\n message: \"a message\",\r\n resultData: {\r\n success: true\r\n },\r\n resultType: \"HIT\",\r\n slideName: \"slide name\",\r\n stateIndex: 0\r\n };\r\n}\r\n\r\ndescribe(\"Challenge Results PM\", () => {\r\n it(\"Gets the singleton\", () => {\r\n const { appObjects, pm } = makeTestRig();\r\n\r\n expect(ChallengeResultsListPM.get(appObjects)).toEqual(pm);\r\n });\r\n\r\n it(\"Registers the singleton\", () => {\r\n const { registerSingletonSpy, pm } = makeTestRig();\r\n\r\n expect(registerSingletonSpy).toBeCalledWith(pm);\r\n });\r\n\r\n it(\"Checks for equal vms\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const result1 = makeChallengeResultVM(\"result1\");\r\n const result2 = makeChallengeResultVM(\"result2\");\r\n\r\n const vm1 = [result1, result2];\r\n const vm2 = [...vm1];\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(true);\r\n });\r\n\r\n it(\"Checks for a result to be removed\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const result1 = makeChallengeResultVM(\"result1\");\r\n const result2 = makeChallengeResultVM(\"result2\");\r\n\r\n const vm1 = [result1, result2];\r\n const vm2 = [result1];\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);\r\n });\r\n\r\n it(\"Checks for a result to be added\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const result1 = makeChallengeResultVM(\"result1\");\r\n const result2 = makeChallengeResultVM(\"result2\");\r\n\r\n const vm1 = [result1, result2];\r\n\r\n const result3 = makeChallengeResultVM(\"result3\");\r\n const vm2 = [result1, result2, result3];\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);\r\n });\r\n\r\n it(\"Checks for result ID to change\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const result1 = makeChallengeResultVM(\"result1\");\r\n const result2 = makeChallengeResultVM(\"result2\");\r\n\r\n const vm1 = [result1, result2];\r\n\r\n const result2Again: ChallengeResultVM = { ...result2, id: \"changed\" };\r\n const vm2 = [result1, result2Again];\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);\r\n });\r\n\r\n it(\"Checks for tries to change\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n const result1 = makeChallengeResultVM(\"result1\");\r\n const result2 = makeChallengeResultVM(\"result2\");\r\n\r\n const vm1 = [result1, result2];\r\n\r\n const result2Again: ChallengeResultVM = { ...result2, attempts: 2 };\r\n const vm2 = [result1, result2Again];\r\n\r\n expect(pm.vmsAreEqual(vm1, vm2)).toEqual(false);\r\n });\r\n\r\n it(\"Initializes the view\", () => {\r\n const { pm } = makeTestRig();\r\n expect(pm.lastVM).not.toBeUndefined();\r\n });\r\n\r\n it(\"Updates the results\", () => {\r\n const { results, pm } = makeTestRig();\r\n\r\n results.submitHitResult(\"state1\", false, 0, \"bob\");\r\n\r\n expect(pm.lastVM).toEqual([\r\n {\r\n attempts: 0,\r\n message: \"bob\",\r\n resultData: {\r\n success: false\r\n },\r\n resultType: \"HIT\",\r\n id: \"state1\",\r\n slideName: \"State Name\",\r\n stateIndex: 0\r\n }\r\n ]);\r\n });\r\n});\r\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { AppObjectPM, getSingletonComponent } from "@vived/core";
|
|
2
|
+
import { ChallengeResultsEntity } from "../Entities";
|
|
3
|
+
export class HasChallengeResultsPM extends AppObjectPM {
|
|
4
|
+
static get(appObjects) {
|
|
5
|
+
return getSingletonComponent(HasChallengeResultsPM.type, appObjects);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
HasChallengeResultsPM.type = "HasChallengeResultsPM";
|
|
9
|
+
export function makeHasChallengeResultsPM(appObject) {
|
|
10
|
+
return new HasChallengeResultsPMImp(appObject);
|
|
11
|
+
}
|
|
12
|
+
class HasChallengeResultsPMImp extends HasChallengeResultsPM {
|
|
13
|
+
get resultsEntity() {
|
|
14
|
+
return this.getCachedSingleton(ChallengeResultsEntity.type);
|
|
15
|
+
}
|
|
16
|
+
vmsAreEqual(a, b) {
|
|
17
|
+
return a === b;
|
|
18
|
+
}
|
|
19
|
+
constructor(appObject) {
|
|
20
|
+
super(appObject, HasChallengeResultsPM.type);
|
|
21
|
+
this.onEntityChange = () => {
|
|
22
|
+
if (!this.resultsEntity)
|
|
23
|
+
return;
|
|
24
|
+
const hasAssessmentResults = this.resultsEntity.results?.length > 0 || false;
|
|
25
|
+
this.doUpdateView(hasAssessmentResults);
|
|
26
|
+
};
|
|
27
|
+
this.appObjects.registerSingleton(this);
|
|
28
|
+
this.resultsEntity?.addChangeObserver(this.onEntityChange);
|
|
29
|
+
this.onEntityChange();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=HasChallengeResultsPM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HasChallengeResultsPM.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/PMs/HasChallengeResultsPM.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,WAAW,EAEX,qBAAqB,EACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,OAAgB,qBAAsB,SAAQ,WAAoB;IAGtE,MAAM,CAAC,GAAG,CAAC,UAAyB;QAClC,OAAO,qBAAqB,CAC1B,qBAAqB,CAAC,IAAI,EAC1B,UAAU,CACX,CAAC;IACJ,CAAC;;AAPM,0BAAI,GAAG,uBAAuB,CAAC;AAUxC,MAAM,UAAU,yBAAyB,CACvC,SAAoB;IAEpB,OAAO,IAAI,wBAAwB,CAAC,SAAS,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,wBAAyB,SAAQ,qBAAqB;IAC1D,IAAY,aAAa;QACvB,OAAO,IAAI,CAAC,kBAAkB,CAC5B,sBAAsB,CAAC,IAAI,CAC5B,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,CAAU,EAAE,CAAU;QAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAWD,YAAY,SAAoB;QAC9B,KAAK,CAAC,SAAS,EAAE,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAVvC,mBAAc,GAAG,GAAS,EAAE;YAClC,IAAI,CAAC,IAAI,CAAC,aAAa;gBAAE,OAAO;YAEhC,MAAM,oBAAoB,GACxB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC;YAElD,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;QAC1C,CAAC,CAAC;QAKA,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3D,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;CACF","sourcesContent":["import {\r\n\tAppObject,\r\n\tAppObjectPM,\r\n\tAppObjectRepo,\r\n\tgetSingletonComponent\r\n} from \"@vived/core\";\r\nimport { ChallengeResultsEntity } from \"../Entities\";\r\n\r\nexport abstract class HasChallengeResultsPM extends AppObjectPM<boolean> {\r\n static type = \"HasChallengeResultsPM\";\r\n\r\n static get(appObjects: AppObjectRepo) {\r\n return getSingletonComponent<HasChallengeResultsPM>(\r\n HasChallengeResultsPM.type,\r\n appObjects\r\n );\r\n }\r\n}\r\n\r\nexport function makeHasChallengeResultsPM(\r\n appObject: AppObject\r\n): HasChallengeResultsPM {\r\n return new HasChallengeResultsPMImp(appObject);\r\n}\r\n\r\nclass HasChallengeResultsPMImp extends HasChallengeResultsPM {\r\n private get resultsEntity() {\r\n return this.getCachedSingleton<ChallengeResultsEntity>(\r\n ChallengeResultsEntity.type\r\n );\r\n }\r\n\r\n vmsAreEqual(a: boolean, b: boolean): boolean {\r\n return a === b;\r\n }\r\n\r\n private onEntityChange = (): void => {\r\n if (!this.resultsEntity) return;\r\n\r\n const hasAssessmentResults =\r\n this.resultsEntity.results?.length > 0 || false;\r\n\r\n this.doUpdateView(hasAssessmentResults);\r\n };\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, HasChallengeResultsPM.type);\r\n\r\n this.appObjects.registerSingleton(this);\r\n this.resultsEntity?.addChangeObserver(this.onEntityChange);\r\n this.onEntityChange();\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { makeAppObjectRepo } from "@vived/core";
|
|
2
|
+
import { HasChallengeResultsPM, makeHasChallengeResultsPM } from "./HasChallengeResultsPM";
|
|
3
|
+
import { makeChallengeResults } from "../Entities";
|
|
4
|
+
function makeTestRig() {
|
|
5
|
+
const appObjects = makeAppObjectRepo();
|
|
6
|
+
const registerSingletonSpy = jest.spyOn(appObjects, "registerSingleton");
|
|
7
|
+
const results = makeChallengeResults(appObjects.getOrCreate("ChallengeResults"));
|
|
8
|
+
const pm = makeHasChallengeResultsPM(appObjects.getOrCreate("PM"));
|
|
9
|
+
return { appObjects, pm, registerSingletonSpy, results };
|
|
10
|
+
}
|
|
11
|
+
describe("HasChallengeResultsPM", () => {
|
|
12
|
+
it("Gets the singleton", () => {
|
|
13
|
+
const { pm, appObjects } = makeTestRig();
|
|
14
|
+
expect(HasChallengeResultsPM.get(appObjects)).toEqual(pm);
|
|
15
|
+
});
|
|
16
|
+
it("Registers the singleton", () => {
|
|
17
|
+
const { pm, registerSingletonSpy } = makeTestRig();
|
|
18
|
+
expect(registerSingletonSpy).toBeCalledWith(pm);
|
|
19
|
+
});
|
|
20
|
+
it("Initialize with default VM", () => {
|
|
21
|
+
const { pm } = makeTestRig();
|
|
22
|
+
expect(pm.lastVM).toBe(false);
|
|
23
|
+
});
|
|
24
|
+
it("when results change the VM is updated", () => {
|
|
25
|
+
const { results, pm } = makeTestRig();
|
|
26
|
+
results.submitHitResult("1", false, 0, "bob");
|
|
27
|
+
expect(pm.lastVM).toBe(true);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=HasChallengeResultsPM.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HasChallengeResultsPM.test.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/PMs/HasChallengeResultsPM.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EACN,qBAAqB,EACrB,yBAAyB,EACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,SAAS,WAAW;IAClB,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IAEzE,MAAM,OAAO,GAAG,oBAAoB,CAClC,UAAU,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAC3C,CAAC;IACF,MAAM,EAAE,GAAG,yBAAyB,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAEnE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,oBAAoB,EAAE,OAAO,EAAE,CAAC;AAC3D,CAAC;AAED,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;QAEzC,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,EAAE,EAAE,EAAE,oBAAoB,EAAE,GAAG,WAAW,EAAE,CAAC;QAEnD,MAAM,CAAC,oBAAoB,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAE7B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,WAAW,EAAE,CAAC;QAEtC,OAAO,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAE9C,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { makeAppObjectRepo } from \"@vived/core\";\r\n\r\nimport {\r\n\tHasChallengeResultsPM,\r\n\tmakeHasChallengeResultsPM\r\n} from \"./HasChallengeResultsPM\";\r\nimport { makeChallengeResults } from \"../Entities\";\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const registerSingletonSpy = jest.spyOn(appObjects, \"registerSingleton\");\r\n\r\n const results = makeChallengeResults(\r\n appObjects.getOrCreate(\"ChallengeResults\")\r\n );\r\n const pm = makeHasChallengeResultsPM(appObjects.getOrCreate(\"PM\"));\r\n\r\n return { appObjects, pm, registerSingletonSpy, results };\r\n}\r\n\r\ndescribe(\"HasChallengeResultsPM\", () => {\r\n it(\"Gets the singleton\", () => {\r\n const { pm, appObjects } = makeTestRig();\r\n\r\n expect(HasChallengeResultsPM.get(appObjects)).toEqual(pm);\r\n });\r\n\r\n it(\"Registers the singleton\", () => {\r\n const { pm, registerSingletonSpy } = makeTestRig();\r\n\r\n expect(registerSingletonSpy).toBeCalledWith(pm);\r\n });\r\n\r\n it(\"Initialize with default VM\", () => {\r\n const { pm } = makeTestRig();\r\n\r\n expect(pm.lastVM).toBe(false);\r\n });\r\n\r\n it(\"when results change the VM is updated\", () => {\r\n const { results, pm } = makeTestRig();\r\n\r\n results.submitHitResult(\"1\", false, 0, \"bob\");\r\n\r\n expect(pm.lastVM).toBe(true);\r\n });\r\n});\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/PMs/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA","sourcesContent":["export * from \"./ChallengeResultsListPM\""]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/ChallengeResults/PMs/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,yBAAyB,CAAA","sourcesContent":["export * from \"./ChallengeResultsListPM\"\r\nexport * from \"./HasChallengeResultsPM\""]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { HostStatePM } from "../PMs/HostStatePM";
|
|
2
|
+
export const hostStateAdapter = {
|
|
3
|
+
defaultVM: HostStatePM.defaultVM,
|
|
4
|
+
subscribe: (id, appObjects, setVM) => {
|
|
5
|
+
if (!id) {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
const pm = HostStatePM.getById(id, appObjects);
|
|
9
|
+
if (!pm) {
|
|
10
|
+
appObjects.submitError("hostStateAdapter", `Unable to find HostStatePM for ID: ${id}`);
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
pm.addView(setVM);
|
|
14
|
+
},
|
|
15
|
+
unsubscribe: (id, appObjects, setVM) => {
|
|
16
|
+
if (!id)
|
|
17
|
+
return;
|
|
18
|
+
HostStatePM.getById(id, appObjects)?.removeView(setVM);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=hostStateAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hostStateAdapter.js","sourceRoot":"","sources":["../../../../src/StateMachine/Adapters/hostStateAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAe,MAAM,oBAAoB,CAAC;AAE9D,MAAM,CAAC,MAAM,gBAAgB,GAA2B;IACtD,SAAS,EAAE,WAAW,CAAC,SAAS;IAChC,SAAS,EAAE,CACT,EAAU,EACV,UAAyB,EACzB,KAAgC,EAChC,EAAE;QACF,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QAED,MAAM,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,UAAU,CAAC,WAAW,CACpB,kBAAkB,EAClB,sCAAsC,EAAE,EAAE,CAC3C,CAAC;YACF,OAAO;QACT,CAAC;QAED,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IACD,WAAW,EAAE,CACX,EAAU,EACV,UAAyB,EACzB,KAAgC,EAChC,EAAE;QACF,IAAI,CAAC,EAAE;YAAE,OAAO;QAEhB,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;CACF,CAAC","sourcesContent":["import { AppObjectRepo, PmAdapter } from \"@vived/core\";\r\nimport { HostStatePM, HostStateVM } from \"../PMs/HostStatePM\";\r\n\r\nexport const hostStateAdapter: PmAdapter<HostStateVM> = {\r\n defaultVM: HostStatePM.defaultVM,\r\n subscribe: (\r\n id: string,\r\n appObjects: AppObjectRepo,\r\n setVM: (vm: HostStateVM) => void\r\n ) => {\r\n if (!id) {\r\n return;\r\n }\r\n\r\n const pm = HostStatePM.getById(id, appObjects);\r\n if (!pm) {\r\n appObjects.submitError(\r\n \"hostStateAdapter\",\r\n `Unable to find HostStatePM for ID: ${id}`\r\n );\r\n return;\r\n }\r\n\r\n pm.addView(setVM);\r\n },\r\n unsubscribe: (\r\n id: string,\r\n appObjects: AppObjectRepo,\r\n setVM: (vm: HostStateVM) => void\r\n ) => {\r\n if (!id) return;\r\n\r\n HostStatePM.getById(id, appObjects)?.removeView(setVM);\r\n }\r\n};\r\n"]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { makeAppObjectRepo } from "@vived/core";
|
|
2
|
+
import { HostStatePM } from "../PMs/HostStatePM";
|
|
3
|
+
import { hostStateAdapter } from "./hostStateAdapter";
|
|
4
|
+
import { makeMockHostStatePM } from "../Mocks/MockHostStatePM";
|
|
5
|
+
describe("hostStateAdapter", () => {
|
|
6
|
+
let appObjects;
|
|
7
|
+
let appObject;
|
|
8
|
+
let mockPM;
|
|
9
|
+
const testId = "test-state-id";
|
|
10
|
+
const setVM = jest.fn();
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
appObjects = makeAppObjectRepo();
|
|
13
|
+
appObject = appObjects.getOrCreate(testId);
|
|
14
|
+
// Create the mock PM instead of a real one
|
|
15
|
+
mockPM = makeMockHostStatePM(appObject);
|
|
16
|
+
// Reset the mock function before each test
|
|
17
|
+
setVM.mockReset();
|
|
18
|
+
});
|
|
19
|
+
it("should provide the default VM from HostStatePM", () => {
|
|
20
|
+
expect(hostStateAdapter.defaultVM).toEqual(HostStatePM.defaultVM);
|
|
21
|
+
});
|
|
22
|
+
it("should add a view on subscribe", () => {
|
|
23
|
+
const addViewSpy = jest.spyOn(mockPM, "addView");
|
|
24
|
+
hostStateAdapter.subscribe(testId, appObjects, setVM);
|
|
25
|
+
expect(addViewSpy).toHaveBeenCalledWith(setVM);
|
|
26
|
+
});
|
|
27
|
+
it("should remove a view on unsubscribe", () => {
|
|
28
|
+
const removeViewSpy = jest.spyOn(mockPM, "removeView");
|
|
29
|
+
hostStateAdapter.unsubscribe(testId, appObjects, setVM);
|
|
30
|
+
expect(removeViewSpy).toHaveBeenCalledWith(setVM);
|
|
31
|
+
});
|
|
32
|
+
it("should handle missing PM on subscribe", () => {
|
|
33
|
+
// Create a new AppObjectRepo without the PM
|
|
34
|
+
const emptyAppObjects = makeAppObjectRepo();
|
|
35
|
+
emptyAppObjects.submitError = jest.fn();
|
|
36
|
+
// Using an ID that doesn't have a PM
|
|
37
|
+
hostStateAdapter.subscribe(testId, emptyAppObjects, setVM);
|
|
38
|
+
expect(emptyAppObjects.submitError).toHaveBeenCalledWith("hostStateAdapter", expect.stringContaining("Unable to find HostStatePM"));
|
|
39
|
+
});
|
|
40
|
+
it("should handle missing PM on unsubscribe without error", () => {
|
|
41
|
+
// This should not throw an error
|
|
42
|
+
expect(() => {
|
|
43
|
+
hostStateAdapter.unsubscribe("non-existent", appObjects, setVM);
|
|
44
|
+
}).not.toThrow();
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=hostStateAdapter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hostStateAdapter.test.js","sourceRoot":"","sources":["../../../../src/StateMachine/Adapters/hostStateAdapter.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAmB,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEhF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,UAAyB,CAAC;IAC9B,IAAI,SAAoB,CAAC;IACzB,IAAI,MAAuB,CAAC;IAC5B,MAAM,MAAM,GAAG,eAAe,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAExB,UAAU,CAAC,GAAG,EAAE;QACd,UAAU,GAAG,iBAAiB,EAAE,CAAC;QACjC,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAE3C,2CAA2C;QAC3C,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAExC,2CAA2C;QAC3C,KAAK,CAAC,SAAS,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEjD,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAEtD,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAEvD,gBAAgB,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAExD,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,4CAA4C;QAC5C,MAAM,eAAe,GAAG,iBAAiB,EAAE,CAAC;QAC5C,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAExC,qCAAqC;QACrC,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;QAE3D,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,oBAAoB,CACtD,kBAAkB,EAClB,MAAM,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,CACtD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,iCAAiC;QACjC,MAAM,CAAC,GAAG,EAAE;YACV,gBAAgB,CAAC,WAAW,CAAC,cAAc,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { AppObject, AppObjectRepo, makeAppObjectRepo } from \"@vived/core\";\r\nimport { HostStatePM } from \"../PMs/HostStatePM\";\r\nimport { hostStateAdapter } from \"./hostStateAdapter\";\r\nimport { MockHostStatePM, makeMockHostStatePM } from \"../Mocks/MockHostStatePM\";\r\n\r\ndescribe(\"hostStateAdapter\", () => {\r\n let appObjects: AppObjectRepo;\r\n let appObject: AppObject;\r\n let mockPM: MockHostStatePM;\r\n const testId = \"test-state-id\";\r\n const setVM = jest.fn();\r\n\r\n beforeEach(() => {\r\n appObjects = makeAppObjectRepo();\r\n appObject = appObjects.getOrCreate(testId);\r\n\r\n // Create the mock PM instead of a real one\r\n mockPM = makeMockHostStatePM(appObject);\r\n\r\n // Reset the mock function before each test\r\n setVM.mockReset();\r\n });\r\n\r\n it(\"should provide the default VM from HostStatePM\", () => {\r\n expect(hostStateAdapter.defaultVM).toEqual(HostStatePM.defaultVM);\r\n });\r\n\r\n it(\"should add a view on subscribe\", () => {\r\n const addViewSpy = jest.spyOn(mockPM, \"addView\");\r\n\r\n hostStateAdapter.subscribe(testId, appObjects, setVM);\r\n\r\n expect(addViewSpy).toHaveBeenCalledWith(setVM);\r\n });\r\n\r\n it(\"should remove a view on unsubscribe\", () => {\r\n const removeViewSpy = jest.spyOn(mockPM, \"removeView\");\r\n\r\n hostStateAdapter.unsubscribe(testId, appObjects, setVM);\r\n\r\n expect(removeViewSpy).toHaveBeenCalledWith(setVM);\r\n });\r\n\r\n it(\"should handle missing PM on subscribe\", () => {\r\n // Create a new AppObjectRepo without the PM\r\n const emptyAppObjects = makeAppObjectRepo();\r\n emptyAppObjects.submitError = jest.fn();\r\n\r\n // Using an ID that doesn't have a PM\r\n hostStateAdapter.subscribe(testId, emptyAppObjects, setVM);\r\n\r\n expect(emptyAppObjects.submitError).toHaveBeenCalledWith(\r\n \"hostStateAdapter\",\r\n expect.stringContaining(\"Unable to find HostStatePM\")\r\n );\r\n });\r\n\r\n it(\"should handle missing PM on unsubscribe without error\", () => {\r\n // This should not throw an error\r\n expect(() => {\r\n hostStateAdapter.unsubscribe(\"non-existent\", appObjects, setVM);\r\n }).not.toThrow();\r\n });\r\n});\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/StateMachine/Adapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC","sourcesContent":["export * from \"./editingStateAdapter\";\r\nexport * from \"./hostStateMachinePMAdapter\";\r\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/StateMachine/Adapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC","sourcesContent":["export * from \"./editingStateAdapter\";\r\nexport * from \"./hostStateMachinePMAdapter\";\r\nexport * from \"./hostStateAdapter\";\r\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { EditStateNameUC } from "../UCs/EditStateNameUC";
|
|
2
|
+
export function editStateName(name, id, appObjects) {
|
|
3
|
+
const uc = EditStateNameUC.getById(id, appObjects);
|
|
4
|
+
if (!uc) {
|
|
5
|
+
appObjects.submitWarning("editStateName", "Unable to find EditStateNameUC");
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
uc.editStateName(name);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=editStateName.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editStateName.js","sourceRoot":"","sources":["../../../../src/StateMachine/Controllers/editStateName.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,UAAU,aAAa,CAC3B,IAAY,EACZ,EAAU,EACV,UAAyB;IAEzB,MAAM,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,UAAU,CAAC,aAAa,CAAC,eAAe,EAAE,gCAAgC,CAAC,CAAC;QAC5E,OAAO;IACT,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC","sourcesContent":["import { AppObjectRepo } from \"@vived/core\";\r\nimport { EditStateNameUC } from \"../UCs/EditStateNameUC\";\r\n\r\nexport function editStateName(\r\n name: string,\r\n id: string,\r\n appObjects: AppObjectRepo\r\n) {\r\n const uc = EditStateNameUC.getById(id, appObjects);\r\n if (!uc) {\r\n appObjects.submitWarning(\"editStateName\", \"Unable to find EditStateNameUC\");\r\n return;\r\n }\r\n\r\n uc.editStateName(name);\r\n}\r\n"]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { makeAppObjectRepo } from "@vived/core";
|
|
2
|
+
import { MockEditStateNameUC } from "../Mocks/MockEditStateNameUC";
|
|
3
|
+
import { editStateName } from "./editStateName";
|
|
4
|
+
describe("editStateName", () => {
|
|
5
|
+
let appObjects;
|
|
6
|
+
let mockUC;
|
|
7
|
+
let mockEditFunction;
|
|
8
|
+
const testId = "test-state-id";
|
|
9
|
+
const testName = "New State Name";
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
// Create a fresh repository for each test
|
|
12
|
+
appObjects = makeAppObjectRepo();
|
|
13
|
+
const testAppObject = appObjects.getOrCreate(testId);
|
|
14
|
+
// Create the mock UC
|
|
15
|
+
mockUC = new MockEditStateNameUC(testAppObject);
|
|
16
|
+
// Setup the spy on the mock function
|
|
17
|
+
mockEditFunction = jest.fn();
|
|
18
|
+
mockUC.editStateName = mockEditFunction;
|
|
19
|
+
});
|
|
20
|
+
it("should call EditStateNameUC with the provided name", () => {
|
|
21
|
+
// Call the controller function
|
|
22
|
+
editStateName(testName, testId, appObjects);
|
|
23
|
+
// Verify the use case was called with the correct name
|
|
24
|
+
expect(mockEditFunction).toBeCalledWith(testName);
|
|
25
|
+
});
|
|
26
|
+
it("should do nothing when UC cannot be found", () => {
|
|
27
|
+
// Call with an ID that doesn't have the UC
|
|
28
|
+
const nonExistentId = "non-existent-id";
|
|
29
|
+
// This should not throw an error
|
|
30
|
+
expect(() => {
|
|
31
|
+
editStateName(testName, nonExistentId, appObjects);
|
|
32
|
+
}).not.toThrow();
|
|
33
|
+
// Verify our original mock wasn't called
|
|
34
|
+
expect(mockEditFunction).not.toHaveBeenCalled();
|
|
35
|
+
});
|
|
36
|
+
it("should submit a warning when UC is not found", () => {
|
|
37
|
+
// Spy on the warning submission method
|
|
38
|
+
const submitWarningSpy = jest.spyOn(appObjects, "submitWarning");
|
|
39
|
+
// Call the controller function with a non-existent ID
|
|
40
|
+
editStateName(testName, "non-existent-id", appObjects);
|
|
41
|
+
// Verify warning was submitted
|
|
42
|
+
expect(submitWarningSpy).toHaveBeenCalledWith("editStateName", "Unable to find EditStateNameUC");
|
|
43
|
+
// Verify that the edit function was not called
|
|
44
|
+
expect(mockEditFunction).not.toHaveBeenCalled();
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=editStateName.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editStateName.test.js","sourceRoot":"","sources":["../../../../src/StateMachine/Controllers/editStateName.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAC,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC9B,IAAI,UAAyB,CAAC;IAC9B,IAAI,MAA2B,CAAC;IAChC,IAAI,gBAA2B,CAAC;IAChC,MAAM,MAAM,GAAG,eAAe,CAAC;IAC/B,MAAM,QAAQ,GAAG,gBAAgB,CAAC;IAElC,UAAU,CAAC,GAAG,EAAE;QACf,0CAA0C;QAC1C,UAAU,GAAG,iBAAiB,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAErD,qBAAqB;QACrB,MAAM,GAAG,IAAI,mBAAmB,CAAC,aAAa,CAAC,CAAC;QAEhD,qCAAqC;QACrC,gBAAgB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,CAAC,aAAa,GAAG,gBAAgB,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC7D,+BAA+B;QAC/B,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAE5C,uDAAuD;QACvD,MAAM,CAAC,gBAAgB,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACpD,2CAA2C;QAC3C,MAAM,aAAa,GAAG,iBAAiB,CAAC;QAExC,iCAAiC;QACjC,MAAM,CAAC,GAAG,EAAE;YACX,aAAa,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAEjB,yCAAyC;QACzC,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACvD,uCAAuC;QACvC,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAEjE,sDAAsD;QACtD,aAAa,CAAC,QAAQ,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;QAEvD,+BAA+B;QAC/B,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAC5C,eAAe,EACf,gCAAgC,CAChC,CAAC;QAEF,+CAA+C;QAC/C,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IACjD,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import { AppObjectRepo, makeAppObjectRepo } from \"@vived/core\";\r\nimport {MockEditStateNameUC } from \"../Mocks/MockEditStateNameUC\";\r\nimport { editStateName } from \"./editStateName\";\r\n\r\ndescribe(\"editStateName\", () => {\r\n\tlet appObjects: AppObjectRepo;\r\n\tlet mockUC: MockEditStateNameUC;\r\n\tlet mockEditFunction: jest.Mock;\r\n\tconst testId = \"test-state-id\";\r\n\tconst testName = \"New State Name\";\r\n\r\n\tbeforeEach(() => {\r\n\t\t// Create a fresh repository for each test\r\n\t\tappObjects = makeAppObjectRepo();\r\n\t\tconst testAppObject = appObjects.getOrCreate(testId);\r\n\r\n\t\t// Create the mock UC\r\n\t\tmockUC = new MockEditStateNameUC(testAppObject);\r\n\t\t\r\n\t\t// Setup the spy on the mock function\r\n\t\tmockEditFunction = jest.fn();\r\n\t\tmockUC.editStateName = mockEditFunction;\r\n\t});\r\n\r\n\tit(\"should call EditStateNameUC with the provided name\", () => {\r\n\t\t// Call the controller function\r\n\t\teditStateName(testName, testId, appObjects);\r\n\r\n\t\t// Verify the use case was called with the correct name\r\n\t\texpect(mockEditFunction).toBeCalledWith(testName);\r\n\t});\r\n\r\n\tit(\"should do nothing when UC cannot be found\", () => {\r\n\t\t// Call with an ID that doesn't have the UC\r\n\t\tconst nonExistentId = \"non-existent-id\";\r\n\r\n\t\t// This should not throw an error\r\n\t\texpect(() => {\r\n\t\t\teditStateName(testName, nonExistentId, appObjects);\r\n\t\t}).not.toThrow();\r\n\r\n\t\t// Verify our original mock wasn't called\r\n\t\texpect(mockEditFunction).not.toHaveBeenCalled();\r\n\t});\r\n\r\n\tit(\"should submit a warning when UC is not found\", () => {\r\n\t\t// Spy on the warning submission method\r\n\t\tconst submitWarningSpy = jest.spyOn(appObjects, \"submitWarning\");\r\n\r\n\t\t// Call the controller function with a non-existent ID\r\n\t\teditStateName(testName, \"non-existent-id\", appObjects);\r\n\r\n\t\t// Verify warning was submitted\r\n\t\texpect(submitWarningSpy).toHaveBeenCalledWith(\r\n\t\t\t\"editStateName\",\r\n\t\t\t\"Unable to find EditStateNameUC\"\r\n\t\t);\r\n\r\n\t\t// Verify that the edit function was not called\r\n\t\texpect(mockEditFunction).not.toHaveBeenCalled();\r\n\t});\r\n});\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/StateMachine/Controllers/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC","sourcesContent":["export * from \"./cancelEditing\";\r\nexport * from \"./consumeState\";\r\nexport * from \"./deleteState\";\r\nexport * from \"./duplicateState\";\r\nexport * from \"./editActiveState\";\r\nexport * from \"./editState\";\r\nexport * from \"./endActivity\";\r\nexport * from \"./newState\";\r\nexport * from \"./saveAuthoring\";\r\nexport * from \"./transitionToState\";\r\nexport * from \"./savePersistentStates\";\r\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/StateMachine/Controllers/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC","sourcesContent":["export * from \"./cancelEditing\";\r\nexport * from \"./consumeState\";\r\nexport * from \"./deleteState\";\r\nexport * from \"./duplicateState\";\r\nexport * from \"./editActiveState\";\r\nexport * from \"./editState\";\r\nexport * from \"./editStateName\";\r\nexport * from \"./endActivity\";\r\nexport * from \"./newState\";\r\nexport * from \"./saveAuthoring\";\r\nexport * from \"./transitionToState\";\r\nexport * from \"./savePersistentStates\";\r\n"]}
|