@vived/core 1.4.0 → 1.4.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/package.json +3 -6
- package/dist/cjs/AppObject/AppObject.js +0 -59
- package/dist/cjs/AppObject/AppObject.js.map +0 -1
- package/dist/cjs/AppObject/AppObject.test.js +0 -113
- package/dist/cjs/AppObject/AppObject.test.js.map +0 -1
- package/dist/cjs/AppObject/AppObjectComponent.js +0 -82
- package/dist/cjs/AppObject/AppObjectComponent.js.map +0 -1
- package/dist/cjs/AppObject/AppObjectComponent.test.js +0 -132
- package/dist/cjs/AppObject/AppObjectComponent.test.js.map +0 -1
- package/dist/cjs/AppObject/AppObjectController.js +0 -12
- package/dist/cjs/AppObject/AppObjectController.js.map +0 -1
- package/dist/cjs/AppObject/AppObjectEntity.js +0 -38
- package/dist/cjs/AppObject/AppObjectEntity.js.map +0 -1
- package/dist/cjs/AppObject/AppObjectEntity.test.js +0 -108
- package/dist/cjs/AppObject/AppObjectEntity.test.js.map +0 -1
- package/dist/cjs/AppObject/AppObjectEntityRepo.js +0 -56
- package/dist/cjs/AppObject/AppObjectEntityRepo.js.map +0 -1
- package/dist/cjs/AppObject/AppObjectEntityRepo.test.js +0 -149
- package/dist/cjs/AppObject/AppObjectEntityRepo.test.js.map +0 -1
- package/dist/cjs/AppObject/AppObjectPM.js +0 -40
- package/dist/cjs/AppObject/AppObjectPM.js.map +0 -1
- package/dist/cjs/AppObject/AppObjectPM.test.js +0 -103
- package/dist/cjs/AppObject/AppObjectPM.test.js.map +0 -1
- package/dist/cjs/AppObject/AppObjectRepo.js +0 -133
- package/dist/cjs/AppObject/AppObjectRepo.js.map +0 -1
- package/dist/cjs/AppObject/AppObjectRepo.test.js +0 -213
- package/dist/cjs/AppObject/AppObjectRepo.test.js.map +0 -1
- package/dist/cjs/AppObject/AppObjectUC.js +0 -12
- package/dist/cjs/AppObject/AppObjectUC.js.map +0 -1
- package/dist/cjs/AppObject/AppObjectView.js +0 -12
- package/dist/cjs/AppObject/AppObjectView.js.map +0 -1
- package/dist/cjs/AppObject/getSingletonComponent.js +0 -7
- package/dist/cjs/AppObject/getSingletonComponent.js.map +0 -1
- package/dist/cjs/AppObject/getSingletonComponent.test.js +0 -13
- package/dist/cjs/AppObject/getSingletonComponent.test.js.map +0 -1
- package/dist/cjs/AppObject/index.js +0 -27
- package/dist/cjs/AppObject/index.js.map +0 -1
- package/dist/cjs/AppObject/printAppObjectDetails.js +0 -18
- package/dist/cjs/AppObject/printAppObjectDetails.js.map +0 -1
- package/dist/cjs/Entities/MemoizedAngle.js +0 -23
- package/dist/cjs/Entities/MemoizedAngle.js.map +0 -1
- package/dist/cjs/Entities/MemoizedAngle.test.js +0 -30
- package/dist/cjs/Entities/MemoizedAngle.test.js.map +0 -1
- package/dist/cjs/Entities/MemoizedBoolean.js +0 -23
- package/dist/cjs/Entities/MemoizedBoolean.js.map +0 -1
- package/dist/cjs/Entities/MemoizedBoolean.test.js +0 -34
- package/dist/cjs/Entities/MemoizedBoolean.test.js.map +0 -1
- package/dist/cjs/Entities/MemoizedColor.js +0 -24
- package/dist/cjs/Entities/MemoizedColor.js.map +0 -1
- package/dist/cjs/Entities/MemoizedColor.test.js +0 -32
- package/dist/cjs/Entities/MemoizedColor.test.js.map +0 -1
- package/dist/cjs/Entities/MemoizedNumber.js +0 -23
- package/dist/cjs/Entities/MemoizedNumber.js.map +0 -1
- package/dist/cjs/Entities/MemoizedNumber.test.js +0 -29
- package/dist/cjs/Entities/MemoizedNumber.test.js.map +0 -1
- package/dist/cjs/Entities/MemoizedQuaternion.js +0 -24
- package/dist/cjs/Entities/MemoizedQuaternion.js.map +0 -1
- package/dist/cjs/Entities/MemoizedQuaternion.test.js +0 -32
- package/dist/cjs/Entities/MemoizedQuaternion.test.js.map +0 -1
- package/dist/cjs/Entities/MemoizedString.js +0 -23
- package/dist/cjs/Entities/MemoizedString.js.map +0 -1
- package/dist/cjs/Entities/MemoizedString.test.js +0 -29
- package/dist/cjs/Entities/MemoizedString.test.js.map +0 -1
- package/dist/cjs/Entities/MemoizedVector2.js +0 -24
- package/dist/cjs/Entities/MemoizedVector2.js.map +0 -1
- package/dist/cjs/Entities/MemoizedVector2.test.js +0 -32
- package/dist/cjs/Entities/MemoizedVector2.test.js.map +0 -1
- package/dist/cjs/Entities/MemoizedVector3.js +0 -24
- package/dist/cjs/Entities/MemoizedVector3.js.map +0 -1
- package/dist/cjs/Entities/MemoizedVector3.test.js +0 -32
- package/dist/cjs/Entities/MemoizedVector3.test.js.map +0 -1
- package/dist/cjs/Entities/ObservableEntity.js +0 -20
- package/dist/cjs/Entities/ObservableEntity.js.map +0 -1
- package/dist/cjs/Entities/ObservableEntity.test.js +0 -25
- package/dist/cjs/Entities/ObservableEntity.test.js.map +0 -1
- package/dist/cjs/Entities/ObserverList.js +0 -27
- package/dist/cjs/Entities/ObserverList.js.map +0 -1
- package/dist/cjs/Entities/ObserverList.test.js +0 -44
- package/dist/cjs/Entities/ObserverList.test.js.map +0 -1
- package/dist/cjs/Entities/RangedNumber.js +0 -36
- package/dist/cjs/Entities/RangedNumber.js.map +0 -1
- package/dist/cjs/Entities/RangedNumber.test.js +0 -96
- package/dist/cjs/Entities/RangedNumber.test.js.map +0 -1
- package/dist/cjs/Entities/index.js +0 -28
- package/dist/cjs/Entities/index.js.map +0 -1
- package/dist/cjs/Types/AppBoundary.js +0 -3
- package/dist/cjs/Types/AppBoundary.js.map +0 -1
- package/dist/cjs/Types/EaseFn.js +0 -3
- package/dist/cjs/Types/EaseFn.js.map +0 -1
- package/dist/cjs/Types/PmAdapter.js +0 -3
- package/dist/cjs/Types/PmAdapter.js.map +0 -1
- package/dist/cjs/Types/SingletonPmAdapter.js +0 -3
- package/dist/cjs/Types/SingletonPmAdapter.js.map +0 -1
- package/dist/cjs/Types/index.js +0 -21
- package/dist/cjs/Types/index.js.map +0 -1
- package/dist/cjs/Utilities/LengthConverters.js +0 -21
- package/dist/cjs/Utilities/LengthConverters.js.map +0 -1
- package/dist/cjs/Utilities/LengthConverters.test.js +0 -24
- package/dist/cjs/Utilities/LengthConverters.test.js.map +0 -1
- package/dist/cjs/Utilities/LerpNumber.js +0 -85
- package/dist/cjs/Utilities/LerpNumber.js.map +0 -1
- package/dist/cjs/Utilities/LerpNumber.test.js +0 -90
- package/dist/cjs/Utilities/LerpNumber.test.js.map +0 -1
- package/dist/cjs/Utilities/addAlphaToHex.js +0 -16
- package/dist/cjs/Utilities/addAlphaToHex.js.map +0 -1
- package/dist/cjs/Utilities/addAlphaToHex.test.js +0 -34
- package/dist/cjs/Utilities/addAlphaToHex.test.js.map +0 -1
- package/dist/cjs/Utilities/alphaToHex.js +0 -21
- package/dist/cjs/Utilities/alphaToHex.js.map +0 -1
- package/dist/cjs/Utilities/alphaToHex.test.js +0 -75
- package/dist/cjs/Utilities/alphaToHex.test.js.map +0 -1
- package/dist/cjs/Utilities/degreesToRadians.js +0 -7
- package/dist/cjs/Utilities/degreesToRadians.js.map +0 -1
- package/dist/cjs/Utilities/degreesToRadians.test.js +0 -9
- package/dist/cjs/Utilities/degreesToRadians.test.js.map +0 -1
- package/dist/cjs/Utilities/downloadFile.js +0 -14
- package/dist/cjs/Utilities/downloadFile.js.map +0 -1
- package/dist/cjs/Utilities/easeFunctions.js +0 -208
- package/dist/cjs/Utilities/easeFunctions.js.map +0 -1
- package/dist/cjs/Utilities/easeFunctions.test.js +0 -209
- package/dist/cjs/Utilities/easeFunctions.test.js.map +0 -1
- package/dist/cjs/Utilities/generateUniqueID.js +0 -8
- package/dist/cjs/Utilities/generateUniqueID.js.map +0 -1
- package/dist/cjs/Utilities/index.js +0 -25
- package/dist/cjs/Utilities/index.js.map +0 -1
- package/dist/cjs/Utilities/interpolateNumber.js +0 -18
- package/dist/cjs/Utilities/interpolateNumber.js.map +0 -1
- package/dist/cjs/Utilities/interpolateNumber.test.js +0 -26
- package/dist/cjs/Utilities/interpolateNumber.test.js.map +0 -1
- package/dist/cjs/ValueObjects/Angle.js +0 -47
- package/dist/cjs/ValueObjects/Angle.js.map +0 -1
- package/dist/cjs/ValueObjects/Angle.test.js +0 -28
- package/dist/cjs/ValueObjects/Angle.test.js.map +0 -1
- package/dist/cjs/ValueObjects/Color.js +0 -859
- package/dist/cjs/ValueObjects/Color.js.map +0 -1
- package/dist/cjs/ValueObjects/Color.test.js +0 -147
- package/dist/cjs/ValueObjects/Color.test.js.map +0 -1
- package/dist/cjs/ValueObjects/LineSegment2D.js +0 -72
- package/dist/cjs/ValueObjects/LineSegment2D.js.map +0 -1
- package/dist/cjs/ValueObjects/LineSegment2D.test.js +0 -102
- package/dist/cjs/ValueObjects/LineSegment2D.test.js.map +0 -1
- package/dist/cjs/ValueObjects/Matrix.js +0 -466
- package/dist/cjs/ValueObjects/Matrix.js.map +0 -1
- package/dist/cjs/ValueObjects/Matrix.test.js +0 -385
- package/dist/cjs/ValueObjects/Matrix.test.js.map +0 -1
- package/dist/cjs/ValueObjects/ParametricLine.js +0 -77
- package/dist/cjs/ValueObjects/ParametricLine.js.map +0 -1
- package/dist/cjs/ValueObjects/ParametricLine.test.js +0 -126
- package/dist/cjs/ValueObjects/ParametricLine.test.js.map +0 -1
- package/dist/cjs/ValueObjects/ParametricPlane.js +0 -65
- package/dist/cjs/ValueObjects/ParametricPlane.js.map +0 -1
- package/dist/cjs/ValueObjects/ParametricPlane.test.js +0 -101
- package/dist/cjs/ValueObjects/ParametricPlane.test.js.map +0 -1
- package/dist/cjs/ValueObjects/Quaternion.js +0 -290
- package/dist/cjs/ValueObjects/Quaternion.js.map +0 -1
- package/dist/cjs/ValueObjects/Quaternion.test.js +0 -240
- package/dist/cjs/ValueObjects/Quaternion.test.js.map +0 -1
- package/dist/cjs/ValueObjects/Rectangle.js +0 -24
- package/dist/cjs/ValueObjects/Rectangle.js.map +0 -1
- package/dist/cjs/ValueObjects/Rectangle.test.js +0 -32
- package/dist/cjs/ValueObjects/Rectangle.test.js.map +0 -1
- package/dist/cjs/ValueObjects/Vector2.js +0 -184
- package/dist/cjs/ValueObjects/Vector2.js.map +0 -1
- package/dist/cjs/ValueObjects/Vector2.test.js +0 -136
- package/dist/cjs/ValueObjects/Vector2.test.js.map +0 -1
- package/dist/cjs/ValueObjects/Vector3.js +0 -231
- package/dist/cjs/ValueObjects/Vector3.js.map +0 -1
- package/dist/cjs/ValueObjects/Vector3.test.js +0 -188
- package/dist/cjs/ValueObjects/Vector3.test.js.map +0 -1
- package/dist/cjs/ValueObjects/Version.js +0 -171
- package/dist/cjs/ValueObjects/Version.js.map +0 -1
- package/dist/cjs/ValueObjects/Version.test.js +0 -310
- package/dist/cjs/ValueObjects/Version.test.js.map +0 -1
- package/dist/cjs/ValueObjects/index.js +0 -28
- package/dist/cjs/ValueObjects/index.js.map +0 -1
- package/dist/cjs/index.js +0 -22
- package/dist/cjs/index.js.map +0 -1
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const AppObject_1 = require("./AppObject");
|
|
4
|
-
const AppObjectComponent_1 = require("./AppObjectComponent");
|
|
5
|
-
const AppObjectEntity_1 = require("./AppObjectEntity");
|
|
6
|
-
const AppObjectRepo_1 = require("./AppObjectRepo");
|
|
7
|
-
class MockEntity extends AppObjectEntity_1.AppObjectEntity {
|
|
8
|
-
constructor(appObject) {
|
|
9
|
-
super(appObject, MockEntity.type);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
MockEntity.type = "mockEntity";
|
|
13
|
-
function makeTestRig() {
|
|
14
|
-
const appObjectRepo = (0, AppObjectRepo_1.makeAppObjectRepo)();
|
|
15
|
-
const appObj = (0, AppObject_1.makeAppObject)("appObj", appObjectRepo);
|
|
16
|
-
const appObjectEntity = new MockEntity(appObj);
|
|
17
|
-
const onChangeObserver = jest.fn();
|
|
18
|
-
appObjectEntity.addChangeObserver(onChangeObserver);
|
|
19
|
-
return { appObjectEntity, onChangeObserver, appObj, appObjectRepo };
|
|
20
|
-
}
|
|
21
|
-
describe("Abstract Observable Entity", () => {
|
|
22
|
-
it("Sets the type", () => {
|
|
23
|
-
const { appObjectEntity } = makeTestRig();
|
|
24
|
-
expect(appObjectEntity.type).toEqual("mockEntity");
|
|
25
|
-
});
|
|
26
|
-
it("Notifies on change", () => {
|
|
27
|
-
const { onChangeObserver, appObjectEntity } = makeTestRig();
|
|
28
|
-
appObjectEntity.notifyOnChange();
|
|
29
|
-
expect(onChangeObserver).toBeCalled();
|
|
30
|
-
});
|
|
31
|
-
it("Removes an on change onChangeObserver", () => {
|
|
32
|
-
const { onChangeObserver, appObjectEntity } = makeTestRig();
|
|
33
|
-
appObjectEntity.removeChangeObserver(onChangeObserver);
|
|
34
|
-
appObjectEntity.notifyOnChange();
|
|
35
|
-
expect(onChangeObserver).not.toBeCalled();
|
|
36
|
-
});
|
|
37
|
-
it("Notifies when disposed", () => {
|
|
38
|
-
const { appObjectEntity } = makeTestRig();
|
|
39
|
-
const disposeObserver = jest.fn();
|
|
40
|
-
appObjectEntity.addOnDisposeObserver(disposeObserver);
|
|
41
|
-
appObjectEntity.dispose();
|
|
42
|
-
expect(disposeObserver).toBeCalled();
|
|
43
|
-
});
|
|
44
|
-
it("Removes a dispose onChangeObserver", () => {
|
|
45
|
-
const { appObjectEntity } = makeTestRig();
|
|
46
|
-
const disposeObserver = jest.fn();
|
|
47
|
-
appObjectEntity.addOnDisposeObserver(disposeObserver);
|
|
48
|
-
appObjectEntity.removeOnDisposeObserver(disposeObserver);
|
|
49
|
-
appObjectEntity.dispose();
|
|
50
|
-
expect(disposeObserver).not.toBeCalled();
|
|
51
|
-
});
|
|
52
|
-
it("Clears all observers when disposed", () => {
|
|
53
|
-
const { onChangeObserver, appObjectEntity } = makeTestRig();
|
|
54
|
-
const disposeObserver = jest.fn();
|
|
55
|
-
appObjectEntity.addOnDisposeObserver(disposeObserver);
|
|
56
|
-
appObjectEntity.dispose();
|
|
57
|
-
disposeObserver.mockClear();
|
|
58
|
-
onChangeObserver.mockClear();
|
|
59
|
-
appObjectEntity.notifyOnChange();
|
|
60
|
-
appObjectEntity.dispose();
|
|
61
|
-
expect(onChangeObserver).not.toBeCalled();
|
|
62
|
-
expect(disposeObserver).not.toBeCalled();
|
|
63
|
-
});
|
|
64
|
-
it("Stores the app object", () => {
|
|
65
|
-
const { appObjectEntity, appObj } = makeTestRig();
|
|
66
|
-
expect(appObjectEntity.appObject).toEqual(appObj);
|
|
67
|
-
});
|
|
68
|
-
it("Adds itself to the app object", () => {
|
|
69
|
-
const { appObjectEntity, appObj } = makeTestRig();
|
|
70
|
-
expect(appObj.hasComponent(appObjectEntity.type)).toEqual(true);
|
|
71
|
-
});
|
|
72
|
-
it("Removes itself from the app object when disposed", () => {
|
|
73
|
-
const { appObjectEntity, appObj } = makeTestRig();
|
|
74
|
-
appObjectEntity.dispose();
|
|
75
|
-
expect(appObj.hasComponent(appObjectEntity.type)).toEqual(false);
|
|
76
|
-
});
|
|
77
|
-
it("Forwards notifications to the App Object observers", () => {
|
|
78
|
-
const { appObjectEntity, appObj } = makeTestRig();
|
|
79
|
-
const appObjObserver = jest.fn();
|
|
80
|
-
appObj.addObserver(appObjObserver);
|
|
81
|
-
appObjectEntity.notifyOnChange();
|
|
82
|
-
expect(appObjObserver).toBeCalled();
|
|
83
|
-
});
|
|
84
|
-
it("Stops forwarding notifications to the App Object observers when disposed", () => {
|
|
85
|
-
const { appObjectEntity, appObj } = makeTestRig();
|
|
86
|
-
const appObjObserver = jest.fn();
|
|
87
|
-
appObj.addObserver(appObjObserver);
|
|
88
|
-
appObjectEntity.dispose();
|
|
89
|
-
appObjObserver.mockClear();
|
|
90
|
-
appObjectEntity.notifyOnChange();
|
|
91
|
-
expect(appObjObserver).not.toBeCalled();
|
|
92
|
-
});
|
|
93
|
-
it("Returns the repo", () => {
|
|
94
|
-
const { appObjectEntity, appObjectRepo } = makeTestRig();
|
|
95
|
-
expect(appObjectEntity.appObjects).toEqual(appObjectRepo);
|
|
96
|
-
});
|
|
97
|
-
it("Forwards a warn to the App Object Repo warn", () => {
|
|
98
|
-
const { appObjectEntity, appObjectRepo } = makeTestRig();
|
|
99
|
-
appObjectRepo.submitWarning = jest.fn();
|
|
100
|
-
appObjectEntity.warn("Some warning");
|
|
101
|
-
expect(appObjectRepo.submitWarning).toBeCalledWith(`appObj/mockEntity`, "Some warning");
|
|
102
|
-
});
|
|
103
|
-
it("Sets Component type to Entity", () => {
|
|
104
|
-
const { appObjectEntity } = makeTestRig();
|
|
105
|
-
expect(appObjectEntity.componentType).toEqual(AppObjectComponent_1.AppObjectComponentType.ENTITY);
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
//# sourceMappingURL=AppObjectEntity.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AppObjectEntity.test.js","sourceRoot":"","sources":["../../../src/AppObject/AppObjectEntity.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, makeAppObject } from \"./AppObject\";\r\nimport { AppObjectComponentType } from \"./AppObjectComponent\";\r\nimport { AppObjectEntity } from \"./AppObjectEntity\";\r\nimport { makeAppObjectRepo } from \"./AppObjectRepo\";\r\n\r\nclass MockEntity extends AppObjectEntity {\r\n static type = \"mockEntity\";\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, MockEntity.type);\r\n }\r\n}\r\n\r\nfunction makeTestRig() {\r\n const appObjectRepo = makeAppObjectRepo();\r\n const appObj = makeAppObject(\"appObj\", appObjectRepo);\r\n const appObjectEntity = new MockEntity(appObj);\r\n\r\n const onChangeObserver = jest.fn();\r\n appObjectEntity.addChangeObserver(onChangeObserver);\r\n\r\n return { appObjectEntity, onChangeObserver, appObj, appObjectRepo };\r\n}\r\n\r\ndescribe(\"Abstract Observable Entity\", () => {\r\n it(\"Sets the type\", () => {\r\n const { appObjectEntity } = makeTestRig();\r\n expect(appObjectEntity.type).toEqual(\"mockEntity\");\r\n });\r\n\r\n it(\"Notifies on change\", () => {\r\n const { onChangeObserver, appObjectEntity } = makeTestRig();\r\n appObjectEntity.notifyOnChange();\r\n\r\n expect(onChangeObserver).toBeCalled();\r\n });\r\n\r\n it(\"Removes an on change onChangeObserver\", () => {\r\n const { onChangeObserver, appObjectEntity } = makeTestRig();\r\n appObjectEntity.removeChangeObserver(onChangeObserver);\r\n appObjectEntity.notifyOnChange();\r\n\r\n expect(onChangeObserver).not.toBeCalled();\r\n });\r\n\r\n it(\"Notifies when disposed\", () => {\r\n const { appObjectEntity } = makeTestRig();\r\n const disposeObserver = jest.fn();\r\n appObjectEntity.addOnDisposeObserver(disposeObserver);\r\n\r\n appObjectEntity.dispose();\r\n\r\n expect(disposeObserver).toBeCalled();\r\n });\r\n\r\n it(\"Removes a dispose onChangeObserver\", () => {\r\n const { appObjectEntity } = makeTestRig();\r\n const disposeObserver = jest.fn();\r\n appObjectEntity.addOnDisposeObserver(disposeObserver);\r\n appObjectEntity.removeOnDisposeObserver(disposeObserver);\r\n\r\n appObjectEntity.dispose();\r\n expect(disposeObserver).not.toBeCalled();\r\n });\r\n\r\n it(\"Clears all observers when disposed\", () => {\r\n const { onChangeObserver, appObjectEntity } = makeTestRig();\r\n const disposeObserver = jest.fn();\r\n appObjectEntity.addOnDisposeObserver(disposeObserver);\r\n\r\n appObjectEntity.dispose();\r\n\r\n disposeObserver.mockClear();\r\n onChangeObserver.mockClear();\r\n\r\n appObjectEntity.notifyOnChange();\r\n appObjectEntity.dispose();\r\n\r\n expect(onChangeObserver).not.toBeCalled();\r\n expect(disposeObserver).not.toBeCalled();\r\n });\r\n\r\n it(\"Stores the app object\", () => {\r\n const { appObjectEntity, appObj } = makeTestRig();\r\n expect(appObjectEntity.appObject).toEqual(appObj);\r\n });\r\n\r\n it(\"Adds itself to the app object\", () => {\r\n const { appObjectEntity, appObj } = makeTestRig();\r\n\r\n expect(appObj.hasComponent(appObjectEntity.type)).toEqual(true);\r\n });\r\n\r\n it(\"Removes itself from the app object when disposed\", () => {\r\n const { appObjectEntity, appObj } = makeTestRig();\r\n\r\n appObjectEntity.dispose();\r\n\r\n expect(appObj.hasComponent(appObjectEntity.type)).toEqual(false);\r\n });\r\n\r\n it(\"Forwards notifications to the App Object observers\", () => {\r\n const { appObjectEntity, appObj } = makeTestRig();\r\n\r\n const appObjObserver = jest.fn();\r\n appObj.addObserver(appObjObserver);\r\n\r\n appObjectEntity.notifyOnChange();\r\n\r\n expect(appObjObserver).toBeCalled();\r\n });\r\n\r\n it(\"Stops forwarding notifications to the App Object observers when disposed\", () => {\r\n const { appObjectEntity, appObj } = makeTestRig();\r\n\r\n const appObjObserver = jest.fn();\r\n appObj.addObserver(appObjObserver);\r\n\r\n appObjectEntity.dispose();\r\n appObjObserver.mockClear();\r\n\r\n appObjectEntity.notifyOnChange();\r\n\r\n expect(appObjObserver).not.toBeCalled();\r\n });\r\n\r\n it(\"Returns the repo\", () => {\r\n const { appObjectEntity, appObjectRepo } = makeTestRig();\r\n expect(appObjectEntity.appObjects).toEqual(appObjectRepo);\r\n });\r\n\r\n it(\"Forwards a warn to the App Object Repo warn\", () => {\r\n const { appObjectEntity, appObjectRepo } = makeTestRig();\r\n appObjectRepo.submitWarning = jest.fn();\r\n\r\n appObjectEntity.warn(\"Some warning\");\r\n\r\n expect(appObjectRepo.submitWarning).toBeCalledWith(\r\n `appObj/mockEntity`,\r\n \"Some warning\"\r\n );\r\n });\r\n\r\n it(\"Sets Component type to Entity\", () => {\r\n const { appObjectEntity } = makeTestRig();\r\n\r\n expect(appObjectEntity.componentType).toEqual(\r\n AppObjectComponentType.ENTITY\r\n );\r\n });\r\n});\r\n"]}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AppObjectEntityRepo = void 0;
|
|
4
|
-
const Entities_1 = require("../Entities");
|
|
5
|
-
const AppObjectEntity_1 = require("./AppObjectEntity");
|
|
6
|
-
class AppObjectEntityRepo extends AppObjectEntity_1.AppObjectEntity {
|
|
7
|
-
constructor() {
|
|
8
|
-
super(...arguments);
|
|
9
|
-
this.entityLookup = new Map();
|
|
10
|
-
this.onEntityAddedObservers = new Entities_1.ObserverList();
|
|
11
|
-
this.addEntityAddedObserver = (observer) => {
|
|
12
|
-
this.onEntityAddedObservers.add(observer);
|
|
13
|
-
};
|
|
14
|
-
this.removeEntityAddedObserver = (observer) => {
|
|
15
|
-
this.onEntityAddedObservers.remove(observer);
|
|
16
|
-
};
|
|
17
|
-
this.onEntityRemovedObservers = new Entities_1.ObserverList();
|
|
18
|
-
this.addEntityRemovedObserver = (observer) => {
|
|
19
|
-
this.onEntityRemovedObservers.add(observer);
|
|
20
|
-
};
|
|
21
|
-
this.removeEntityRemovedObserver = (observer) => {
|
|
22
|
-
this.onEntityRemovedObservers.remove(observer);
|
|
23
|
-
};
|
|
24
|
-
this.hasForAppObject = (appObjectID) => {
|
|
25
|
-
return this.entityLookup.has(appObjectID);
|
|
26
|
-
};
|
|
27
|
-
this.removeForAppObject = (id) => {
|
|
28
|
-
const existing = this.entityLookup.get(id);
|
|
29
|
-
if (!existing)
|
|
30
|
-
return;
|
|
31
|
-
this.entityLookup.delete(id);
|
|
32
|
-
existing.removeChangeObserver(this.notifyOnChange);
|
|
33
|
-
this.notifyOnChange();
|
|
34
|
-
this.onEntityRemovedObservers.notify(existing);
|
|
35
|
-
};
|
|
36
|
-
this.getForAppObject = (appObjectID) => {
|
|
37
|
-
return this.entityLookup.get(appObjectID);
|
|
38
|
-
};
|
|
39
|
-
this.getAll = () => {
|
|
40
|
-
return Array.from(this.entityLookup.values());
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
add(entity) {
|
|
44
|
-
const existing = this.entityLookup.get(entity.appObject.id);
|
|
45
|
-
if (existing) {
|
|
46
|
-
existing.removeChangeObserver(this.notifyOnChange);
|
|
47
|
-
}
|
|
48
|
-
this.entityLookup.set(entity.appObject.id, entity);
|
|
49
|
-
entity.addChangeObserver(this.notifyOnChange);
|
|
50
|
-
this.notifyOnChange();
|
|
51
|
-
this.onEntityAddedObservers.notify(entity);
|
|
52
|
-
}
|
|
53
|
-
;
|
|
54
|
-
}
|
|
55
|
-
exports.AppObjectEntityRepo = AppObjectEntityRepo;
|
|
56
|
-
//# sourceMappingURL=AppObjectEntityRepo.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AppObjectEntityRepo.js","sourceRoot":"","sources":["../../../src/AppObject/AppObjectEntityRepo.ts"],"names":[],"mappings":";;;AAAA,0CAA2C;AAC3C,uDAAoD;AAEpD,MAAa,mBAEX,SAAQ,iCAAe;IAFzB;;QAIU,iBAAY,GAAG,IAAI,GAAG,EAAa,CAAC;QAEpC,2BAAsB,GAAG,IAAI,uBAAY,EAAK,CAAC;QACvD,2BAAsB,GAAG,CAAC,QAAkC,EAAE,EAAE;YAC9D,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC,CAAC;QACF,8BAAyB,GAAG,CAAC,QAAkC,EAAQ,EAAE;YACvE,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC,CAAC;QAEM,6BAAwB,GAAG,IAAI,uBAAY,EAAK,CAAC;QACzD,6BAAwB,GAAG,CAAC,QAAoC,EAAE,EAAE;YAClE,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC;QACF,gCAA2B,GAAG,CAC5B,QAAoC,EAC9B,EAAE;YACR,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjD,CAAC,CAAC;QAEF,oBAAe,GAAG,CAAC,WAAmB,EAAW,EAAE;YACjD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC,CAAC;QAcF,uBAAkB,GAAG,CAAC,EAAU,EAAE,EAAE;YAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3C,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAEtB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC7B,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACnD,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjD,CAAC,CAAC;QAEF,oBAAe,GAAG,CAAC,WAAmB,EAAiB,EAAE;YACvD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC,CAAC;QAEF,WAAM,GAAG,GAAQ,EAAE;YACjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QAChD,CAAC,CAAC;IACJ,CAAC;IA7BC,GAAG,CAAC,MAAS;QACX,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9C,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAAA,CAAC;CAmBH;AAzDD,kDAyDC","sourcesContent":["import { ObserverList } from \"../Entities\";\r\nimport { AppObjectEntity } from \"./AppObjectEntity\";\r\n\r\nexport class AppObjectEntityRepo<\r\n T extends AppObjectEntity\r\n> extends AppObjectEntity {\r\n\r\n private entityLookup = new Map<string, T>();\r\n\r\n private onEntityAddedObservers = new ObserverList<T>();\r\n addEntityAddedObserver = (observer: (addedEntity: T) => void) => {\r\n this.onEntityAddedObservers.add(observer);\r\n };\r\n removeEntityAddedObserver = (observer: (addedEntity: T) => void): void => {\r\n this.onEntityAddedObservers.remove(observer);\r\n };\r\n\r\n private onEntityRemovedObservers = new ObserverList<T>();\r\n addEntityRemovedObserver = (observer: (removedEntity: T) => void) => {\r\n this.onEntityRemovedObservers.add(observer);\r\n };\r\n removeEntityRemovedObserver = (\r\n observer: (removedEntity: T) => void\r\n ): void => {\r\n this.onEntityRemovedObservers.remove(observer);\r\n };\r\n\r\n hasForAppObject = (appObjectID: string): boolean => {\r\n return this.entityLookup.has(appObjectID);\r\n };\r\n\r\n add(entity: T) {\r\n const existing = this.entityLookup.get(entity.appObject.id);\r\n if (existing) {\r\n existing.removeChangeObserver(this.notifyOnChange);\r\n }\r\n\r\n this.entityLookup.set(entity.appObject.id, entity);\r\n entity.addChangeObserver(this.notifyOnChange);\r\n this.notifyOnChange();\r\n this.onEntityAddedObservers.notify(entity);\r\n };\r\n\r\n removeForAppObject = (id: string) => {\r\n const existing = this.entityLookup.get(id);\r\n if (!existing) return;\r\n\r\n this.entityLookup.delete(id);\r\n existing.removeChangeObserver(this.notifyOnChange);\r\n this.notifyOnChange();\r\n this.onEntityRemovedObservers.notify(existing);\r\n };\r\n\r\n getForAppObject = (appObjectID: string): T | undefined => {\r\n return this.entityLookup.get(appObjectID);\r\n };\r\n\r\n getAll = (): T[] => {\r\n return Array.from(this.entityLookup.values());\r\n };\r\n}\r\n"]}
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const AppObject_1 = require("./AppObject");
|
|
4
|
-
const AppObjectEntity_1 = require("./AppObjectEntity");
|
|
5
|
-
const AppObjectEntityRepo_1 = require("./AppObjectEntityRepo");
|
|
6
|
-
const AppObjectRepo_1 = require("./AppObjectRepo");
|
|
7
|
-
class MockAppEntity extends AppObjectEntity_1.AppObjectEntity {
|
|
8
|
-
constructor(appObject) {
|
|
9
|
-
super(appObject, MockAppEntity.type);
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
MockAppEntity.type = "mockEntity";
|
|
13
|
-
class MockEntityRepoImp extends AppObjectEntityRepo_1.AppObjectEntityRepo {
|
|
14
|
-
makeEntity(appObj) {
|
|
15
|
-
return new MockAppEntity(appObj);
|
|
16
|
-
}
|
|
17
|
-
constructor(appObject) {
|
|
18
|
-
super(appObject, MockAppEntity.type);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
MockEntityRepoImp.type = "Mock Repo";
|
|
22
|
-
function makeTestRig() {
|
|
23
|
-
const appObjects = (0, AppObjectRepo_1.makeAppObjectRepo)();
|
|
24
|
-
const repoAppObj = (0, AppObject_1.makeAppObject)("repo", appObjects);
|
|
25
|
-
const repo = new MockEntityRepoImp(repoAppObj);
|
|
26
|
-
const appObj = (0, AppObject_1.makeAppObject)("appObjID", appObjects);
|
|
27
|
-
const observer = jest.fn();
|
|
28
|
-
repo.addChangeObserver(observer);
|
|
29
|
-
return { repo, observer, appObj };
|
|
30
|
-
}
|
|
31
|
-
describe("Observable Entity Repo", () => {
|
|
32
|
-
it("Allows an entity to be added", () => {
|
|
33
|
-
const { repo, appObj } = makeTestRig();
|
|
34
|
-
const entity = new MockAppEntity(appObj);
|
|
35
|
-
expect(repo.hasForAppObject("appObjID")).toEqual(false);
|
|
36
|
-
repo.add(entity);
|
|
37
|
-
expect(repo.hasForAppObject("appObjID")).toEqual(true);
|
|
38
|
-
});
|
|
39
|
-
it("Notifies when an entity is added", () => {
|
|
40
|
-
const { repo, observer, appObj } = makeTestRig();
|
|
41
|
-
const entity = new MockAppEntity(appObj);
|
|
42
|
-
repo.add(entity);
|
|
43
|
-
expect(observer).toBeCalled();
|
|
44
|
-
});
|
|
45
|
-
it("Forwards notification from an added entity", () => {
|
|
46
|
-
const { repo, observer, appObj } = makeTestRig();
|
|
47
|
-
const entity = new MockAppEntity(appObj);
|
|
48
|
-
repo.add(entity);
|
|
49
|
-
observer.mockClear();
|
|
50
|
-
entity.notifyOnChange();
|
|
51
|
-
expect(observer).toBeCalled();
|
|
52
|
-
});
|
|
53
|
-
it("Stops notifying if adding an entity replaces and exisitng entity", () => {
|
|
54
|
-
const { repo, observer, appObj } = makeTestRig();
|
|
55
|
-
console.warn = jest.fn(); // Replacing warns. This keeps the console clean
|
|
56
|
-
const original = new MockAppEntity(appObj);
|
|
57
|
-
repo.add(original);
|
|
58
|
-
const replacement = new MockAppEntity(appObj);
|
|
59
|
-
repo.add(replacement);
|
|
60
|
-
observer.mockClear();
|
|
61
|
-
original.notifyOnChange();
|
|
62
|
-
expect(observer).not.toBeCalled();
|
|
63
|
-
});
|
|
64
|
-
it("Removes an entity", () => {
|
|
65
|
-
const { repo, appObj } = makeTestRig();
|
|
66
|
-
const entity = new MockAppEntity(appObj);
|
|
67
|
-
repo.add(entity);
|
|
68
|
-
expect(repo.hasForAppObject("appObjID")).toEqual(true);
|
|
69
|
-
repo.removeForAppObject("appObjID");
|
|
70
|
-
expect(repo.hasForAppObject("appObjID")).toEqual(false);
|
|
71
|
-
});
|
|
72
|
-
it("Notifies if an entity is removed", () => {
|
|
73
|
-
const { repo, observer, appObj } = makeTestRig();
|
|
74
|
-
const entity = new MockAppEntity(appObj);
|
|
75
|
-
repo.add(entity);
|
|
76
|
-
observer.mockClear();
|
|
77
|
-
repo.removeForAppObject("appObjID");
|
|
78
|
-
expect(observer).toBeCalled();
|
|
79
|
-
});
|
|
80
|
-
it("Does not notifyOnChange if the entity to be removed cannot be found", () => {
|
|
81
|
-
const { repo, observer } = makeTestRig();
|
|
82
|
-
repo.removeForAppObject("someId");
|
|
83
|
-
repo.removeForAppObject("someId");
|
|
84
|
-
repo.removeForAppObject("someId");
|
|
85
|
-
expect(observer).not.toBeCalled();
|
|
86
|
-
});
|
|
87
|
-
it("Stops observing a removed entity", () => {
|
|
88
|
-
const { repo, observer, appObj } = makeTestRig();
|
|
89
|
-
const entity = new MockAppEntity(appObj);
|
|
90
|
-
repo.add(entity);
|
|
91
|
-
repo.removeForAppObject("appObjID");
|
|
92
|
-
observer.mockClear();
|
|
93
|
-
entity.notifyOnChange();
|
|
94
|
-
expect(observer).not.toBeCalled();
|
|
95
|
-
});
|
|
96
|
-
it("Gets an entity", () => {
|
|
97
|
-
const { repo, appObj } = makeTestRig();
|
|
98
|
-
const entity = new MockAppEntity(appObj);
|
|
99
|
-
repo.add(entity);
|
|
100
|
-
expect(repo.getForAppObject("appObjID")).toEqual(entity);
|
|
101
|
-
});
|
|
102
|
-
it("Gets all entities", () => {
|
|
103
|
-
const { repo, appObj } = makeTestRig();
|
|
104
|
-
const entity = new MockAppEntity(appObj);
|
|
105
|
-
repo.add(entity);
|
|
106
|
-
expect(repo.getAll()).toEqual([entity]);
|
|
107
|
-
});
|
|
108
|
-
it("Returns undefined for an unknown entity", () => {
|
|
109
|
-
const { repo } = makeTestRig();
|
|
110
|
-
expect(repo.getForAppObject("unknownID")).toBeUndefined();
|
|
111
|
-
});
|
|
112
|
-
it("Supports notifying an observer when an entity is added", () => {
|
|
113
|
-
const { repo, appObj } = makeTestRig();
|
|
114
|
-
const addEntityObserver = jest.fn();
|
|
115
|
-
repo.addEntityAddedObserver(addEntityObserver);
|
|
116
|
-
const ent = new MockAppEntity(appObj);
|
|
117
|
-
repo.add(ent);
|
|
118
|
-
expect(addEntityObserver).toBeCalledWith(ent);
|
|
119
|
-
});
|
|
120
|
-
it("Add entity observer can be removed", () => {
|
|
121
|
-
const { repo, appObj } = makeTestRig();
|
|
122
|
-
const addEntityObserver = jest.fn();
|
|
123
|
-
repo.addEntityAddedObserver(addEntityObserver);
|
|
124
|
-
repo.removeEntityAddedObserver(addEntityObserver);
|
|
125
|
-
const ent = new MockAppEntity(appObj);
|
|
126
|
-
repo.add(ent);
|
|
127
|
-
expect(addEntityObserver).not.toBeCalled();
|
|
128
|
-
});
|
|
129
|
-
it("Supports notifying an observer when an entity is removed", () => {
|
|
130
|
-
const { repo, appObj } = makeTestRig();
|
|
131
|
-
const removeEntityObserver = jest.fn();
|
|
132
|
-
repo.addEntityRemovedObserver(removeEntityObserver);
|
|
133
|
-
const ent = new MockAppEntity(appObj);
|
|
134
|
-
repo.add(ent);
|
|
135
|
-
repo.removeForAppObject("appObjID");
|
|
136
|
-
expect(removeEntityObserver).toBeCalledWith(ent);
|
|
137
|
-
});
|
|
138
|
-
it("Remove entity observer can be removed", () => {
|
|
139
|
-
const { repo, appObj } = makeTestRig();
|
|
140
|
-
const removeEntityObserver = jest.fn();
|
|
141
|
-
repo.addEntityRemovedObserver(removeEntityObserver);
|
|
142
|
-
repo.removeEntityRemovedObserver(removeEntityObserver);
|
|
143
|
-
const ent = new MockAppEntity(appObj);
|
|
144
|
-
repo.add(ent);
|
|
145
|
-
repo.removeForAppObject("appObjID");
|
|
146
|
-
expect(removeEntityObserver).not.toBeCalled();
|
|
147
|
-
});
|
|
148
|
-
});
|
|
149
|
-
//# sourceMappingURL=AppObjectEntityRepo.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AppObjectEntityRepo.test.js","sourceRoot":"","sources":["../../../src/AppObject/AppObjectEntityRepo.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject, makeAppObject } from \"./AppObject\";\r\nimport { AppObjectEntity } from \"./AppObjectEntity\";\r\nimport { AppObjectEntityRepo } from \"./AppObjectEntityRepo\";\r\nimport { makeAppObjectRepo } from \"./AppObjectRepo\";\r\n\r\nclass MockAppEntity extends AppObjectEntity {\r\n static type: string = \"mockEntity\";\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, MockAppEntity.type)\r\n }\r\n}\r\n\r\nclass MockEntityRepoImp extends AppObjectEntityRepo<MockAppEntity> {\r\n static type: string = \"Mock Repo\";\r\n\r\n makeEntity(appObj: AppObject): MockAppEntity {\r\n return new MockAppEntity(appObj);\r\n }\r\n\r\n constructor(appObject: AppObject) {\r\n super(appObject, MockAppEntity.type)\r\n }\r\n}\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const repoAppObj = makeAppObject(\"repo\", appObjects);\r\n const repo = new MockEntityRepoImp(repoAppObj);\r\n \r\n const appObj = makeAppObject(\"appObjID\", appObjects);\r\n const observer = jest.fn();\r\n repo.addChangeObserver(observer);\r\n\r\n return { repo, observer, appObj };\r\n}\r\n\r\ndescribe(\"Observable Entity Repo\", () => {\r\n it(\"Allows an entity to be added\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n const entity = new MockAppEntity(appObj);\r\n\r\n expect(repo.hasForAppObject(\"appObjID\")).toEqual(false);\r\n\r\n repo.add(entity);\r\n\r\n expect(repo.hasForAppObject(\"appObjID\")).toEqual(true);\r\n });\r\n\r\n it(\"Notifies when an entity is added\", () => {\r\n const { repo, observer, appObj } = makeTestRig();\r\n const entity =new MockAppEntity(appObj);\r\n repo.add(entity);\r\n\r\n expect(observer).toBeCalled();\r\n });\r\n\r\n it(\"Forwards notification from an added entity\", () => {\r\n const { repo, observer, appObj } = makeTestRig();\r\n const entity =new MockAppEntity(appObj);\r\n repo.add(entity);\r\n\r\n observer.mockClear();\r\n\r\n entity.notifyOnChange();\r\n\r\n expect(observer).toBeCalled();\r\n });\r\n\r\n it(\"Stops notifying if adding an entity replaces and exisitng entity\", () => {\r\n const { repo, observer, appObj } = makeTestRig();\r\n\r\n console.warn = jest.fn(); // Replacing warns. This keeps the console clean\r\n\r\n const original =new MockAppEntity(appObj);\r\n repo.add(original);\r\n\r\n const replacement =new MockAppEntity(appObj);\r\n repo.add(replacement);\r\n observer.mockClear();\r\n\r\n original.notifyOnChange();\r\n\r\n expect(observer).not.toBeCalled();\r\n });\r\n\r\n it(\"Removes an entity\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n const entity =new MockAppEntity(appObj);\r\n\r\n repo.add(entity);\r\n\r\n expect(repo.hasForAppObject(\"appObjID\")).toEqual(true);\r\n\r\n repo.removeForAppObject(\"appObjID\");\r\n\r\n expect(repo.hasForAppObject(\"appObjID\")).toEqual(false);\r\n });\r\n\r\n it(\"Notifies if an entity is removed\", () => {\r\n const { repo, observer, appObj } = makeTestRig();\r\n const entity =new MockAppEntity(appObj);\r\n\r\n repo.add(entity);\r\n observer.mockClear();\r\n\r\n repo.removeForAppObject(\"appObjID\");\r\n\r\n expect(observer).toBeCalled();\r\n });\r\n\r\n it(\"Does not notifyOnChange if the entity to be removed cannot be found\", () => {\r\n const { repo, observer } = makeTestRig();\r\n\r\n repo.removeForAppObject(\"someId\");\r\n repo.removeForAppObject(\"someId\");\r\n repo.removeForAppObject(\"someId\");\r\n\r\n expect(observer).not.toBeCalled();\r\n });\r\n\r\n it(\"Stops observing a removed entity\", () => {\r\n const { repo, observer, appObj } = makeTestRig();\r\n const entity =new MockAppEntity(appObj);\r\n\r\n repo.add(entity);\r\n repo.removeForAppObject(\"appObjID\");\r\n\r\n observer.mockClear();\r\n\r\n entity.notifyOnChange();\r\n\r\n expect(observer).not.toBeCalled();\r\n });\r\n\r\n it(\"Gets an entity\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n const entity =new MockAppEntity(appObj);\r\n repo.add(entity);\r\n\r\n expect(repo.getForAppObject(\"appObjID\")).toEqual(entity);\r\n });\r\n\r\n it(\"Gets all entities\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n const entity =new MockAppEntity(appObj);\r\n repo.add(entity);\r\n\r\n expect(repo.getAll()).toEqual([entity]);\r\n });\r\n\r\n it(\"Returns undefined for an unknown entity\", () => {\r\n const { repo } = makeTestRig();\r\n\r\n expect(repo.getForAppObject(\"unknownID\")).toBeUndefined();\r\n });\r\n\r\n\r\n it(\"Supports notifying an observer when an entity is added\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n\r\n const addEntityObserver = jest.fn();\r\n repo.addEntityAddedObserver(addEntityObserver);\r\n\r\n const ent =new MockAppEntity(appObj);\r\n repo.add(ent);\r\n\r\n expect(addEntityObserver).toBeCalledWith(ent);\r\n });\r\n\r\n it(\"Add entity observer can be removed\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n\r\n const addEntityObserver = jest.fn();\r\n repo.addEntityAddedObserver(addEntityObserver);\r\n repo.removeEntityAddedObserver(addEntityObserver);\r\n\r\n const ent =new MockAppEntity(appObj);\r\n repo.add(ent);\r\n\r\n expect(addEntityObserver).not.toBeCalled();\r\n });\r\n\r\n it(\"Supports notifying an observer when an entity is removed\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n\r\n const removeEntityObserver = jest.fn();\r\n repo.addEntityRemovedObserver(removeEntityObserver);\r\n\r\n const ent =new MockAppEntity(appObj);\r\n repo.add(ent);\r\n\r\n repo.removeForAppObject(\"appObjID\");\r\n\r\n expect(removeEntityObserver).toBeCalledWith(ent);\r\n });\r\n\r\n it(\"Remove entity observer can be removed\", () => {\r\n const { repo, appObj } = makeTestRig();\r\n\r\n const removeEntityObserver = jest.fn();\r\n repo.addEntityRemovedObserver(removeEntityObserver);\r\n repo.removeEntityRemovedObserver(removeEntityObserver);\r\n\r\n const ent =new MockAppEntity(appObj);\r\n repo.add(ent);\r\n repo.removeForAppObject(\"appObjID\");\r\n\r\n expect(removeEntityObserver).not.toBeCalled();\r\n });\r\n});\r\n"]}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AppObjectPM = void 0;
|
|
4
|
-
const Entities_1 = require("../Entities");
|
|
5
|
-
const AppObjectComponent_1 = require("./AppObjectComponent");
|
|
6
|
-
class AppObjectPM extends AppObjectComponent_1.AppObjectComponent {
|
|
7
|
-
constructor() {
|
|
8
|
-
super(...arguments);
|
|
9
|
-
this.componentType = AppObjectComponent_1.AppObjectComponentType.PM;
|
|
10
|
-
this.observerList = new Entities_1.ObserverList();
|
|
11
|
-
}
|
|
12
|
-
get lastVM() {
|
|
13
|
-
return this._lastVM;
|
|
14
|
-
}
|
|
15
|
-
addView(updateView) {
|
|
16
|
-
this.observerList.add(updateView);
|
|
17
|
-
if (this._lastVM !== undefined) {
|
|
18
|
-
updateView(this._lastVM);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
removeView(updateView) {
|
|
22
|
-
this.observerList.remove(updateView);
|
|
23
|
-
}
|
|
24
|
-
doUpdateView(vm) {
|
|
25
|
-
if (this._lastVM && this.vmsAreEqual(this._lastVM, vm)) {
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
this._lastVM = vm;
|
|
29
|
-
this.observerList.notify(vm);
|
|
30
|
-
}
|
|
31
|
-
dispose() {
|
|
32
|
-
this.observerList.clear();
|
|
33
|
-
if (this.appObject.getComponent(this.type) === this) {
|
|
34
|
-
this.appObject.removeComponent(this.type);
|
|
35
|
-
}
|
|
36
|
-
super.dispose();
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
exports.AppObjectPM = AppObjectPM;
|
|
40
|
-
//# sourceMappingURL=AppObjectPM.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AppObjectPM.js","sourceRoot":"","sources":["../../../src/AppObject/AppObjectPM.ts"],"names":[],"mappings":";;;AAAA,0CAA2C;AAC3C,6DAAkF;AAElF,MAAsB,WAAe,SAAQ,uCAAkB;IAA/D;;QACW,kBAAa,GAAG,2CAAsB,CAAC,EAAE,CAAC;QAQ3C,iBAAY,GAAG,IAAI,uBAAY,EAAK,CAAC;IA8B/C,CAAC;IAlCC,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAID,OAAO,CAAC,UAA2B;QACjC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAElC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,UAAU,CAAC,UAA2B;QACpC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;IAED,YAAY,CAAC,EAAK;QAChB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;YACvD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO;QACL,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACpD,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC;CACF;AAvCD,kCAuCC","sourcesContent":["import { ObserverList } from \"../Entities\";\r\nimport { AppObjectComponent, AppObjectComponentType } from \"./AppObjectComponent\";\r\n\r\nexport abstract class AppObjectPM<T> extends AppObjectComponent {\r\n readonly componentType = AppObjectComponentType.PM;\r\n abstract vmsAreEqual(a: T, b: T): boolean;\r\n\r\n private _lastVM?: T;\r\n get lastVM(): T | undefined {\r\n return this._lastVM;\r\n }\r\n\r\n private observerList = new ObserverList<T>();\r\n\r\n addView(updateView: (vm: T) => void): void {\r\n this.observerList.add(updateView);\r\n\r\n if (this._lastVM !== undefined) {\r\n updateView(this._lastVM);\r\n }\r\n }\r\n\r\n removeView(updateView: (vm: T) => void): void {\r\n this.observerList.remove(updateView);\r\n }\r\n\r\n doUpdateView(vm: T) {\r\n if (this._lastVM && this.vmsAreEqual(this._lastVM, vm)) {\r\n return;\r\n }\r\n\r\n this._lastVM = vm;\r\n this.observerList.notify(vm);\r\n }\r\n\r\n dispose() {\r\n this.observerList.clear();\r\n if (this.appObject.getComponent(this.type) === this) {\r\n this.appObject.removeComponent(this.type);\r\n }\r\n super.dispose();\r\n }\r\n}\r\n"]}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const AppObjectComponent_1 = require("./AppObjectComponent");
|
|
4
|
-
const AppObjectPM_1 = require("./AppObjectPM");
|
|
5
|
-
const AppObjectRepo_1 = require("./AppObjectRepo");
|
|
6
|
-
class MockPM extends AppObjectPM_1.AppObjectPM {
|
|
7
|
-
get currentVM() {
|
|
8
|
-
return { val: 5 };
|
|
9
|
-
}
|
|
10
|
-
vmsAreEqual(a, b) {
|
|
11
|
-
return a.val === b.val;
|
|
12
|
-
}
|
|
13
|
-
constructor(appObj) {
|
|
14
|
-
super(appObj, MockPM.type);
|
|
15
|
-
this.defaultVM = { val: 0 };
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
MockPM.type = "MockPM";
|
|
19
|
-
function makeTestRig() {
|
|
20
|
-
const appObjects = (0, AppObjectRepo_1.makeAppObjectRepo)();
|
|
21
|
-
const appObj = appObjects.getOrCreate("appObj");
|
|
22
|
-
return { appObj, appObjects };
|
|
23
|
-
}
|
|
24
|
-
describe("App Object PM", () => {
|
|
25
|
-
it("Initializes with the last VM if it has been set", () => {
|
|
26
|
-
const { appObj } = makeTestRig();
|
|
27
|
-
const pm = new MockPM(appObj);
|
|
28
|
-
const view = jest.fn();
|
|
29
|
-
pm.doUpdateView({ val: 6 });
|
|
30
|
-
pm.addView(view);
|
|
31
|
-
expect(view).toBeCalledWith({ val: 6 });
|
|
32
|
-
});
|
|
33
|
-
it("Adds a view but does not call it if no VM has been set", () => {
|
|
34
|
-
const { appObj } = makeTestRig();
|
|
35
|
-
const pm = new MockPM(appObj);
|
|
36
|
-
const view = jest.fn();
|
|
37
|
-
pm.addView(view);
|
|
38
|
-
expect(view).not.toBeCalled();
|
|
39
|
-
});
|
|
40
|
-
it("Doesn't notify if the vms are equal", () => {
|
|
41
|
-
const { appObj } = makeTestRig();
|
|
42
|
-
const pm = new MockPM(appObj);
|
|
43
|
-
const view = jest.fn();
|
|
44
|
-
pm.doUpdateView({ val: 6 });
|
|
45
|
-
pm.addView(view);
|
|
46
|
-
view.mockClear();
|
|
47
|
-
pm.doUpdateView({ val: 6 });
|
|
48
|
-
pm.doUpdateView({ val: 6 });
|
|
49
|
-
pm.doUpdateView({ val: 6 });
|
|
50
|
-
expect(view).not.toBeCalled();
|
|
51
|
-
});
|
|
52
|
-
it("Removes a view", () => {
|
|
53
|
-
const { appObj } = makeTestRig();
|
|
54
|
-
const pm = new MockPM(appObj);
|
|
55
|
-
const view = jest.fn();
|
|
56
|
-
pm.addView(view);
|
|
57
|
-
view.mockClear();
|
|
58
|
-
pm.removeView(view);
|
|
59
|
-
pm.doUpdateView({ val: 10 });
|
|
60
|
-
expect(view).not.toBeCalled();
|
|
61
|
-
});
|
|
62
|
-
it("Can be disposed", () => {
|
|
63
|
-
const { appObj } = makeTestRig();
|
|
64
|
-
const pm = new MockPM(appObj);
|
|
65
|
-
const view = jest.fn();
|
|
66
|
-
pm.addView(view);
|
|
67
|
-
view.mockClear();
|
|
68
|
-
pm.dispose();
|
|
69
|
-
pm.doUpdateView({ val: 10 });
|
|
70
|
-
expect(view).not.toBeCalled();
|
|
71
|
-
});
|
|
72
|
-
it("Adds itself to the App Object", () => {
|
|
73
|
-
const { appObj } = makeTestRig();
|
|
74
|
-
expect(appObj.hasComponent(MockPM.type)).toEqual(false);
|
|
75
|
-
const pm = new MockPM(appObj);
|
|
76
|
-
expect(appObj.hasComponent(MockPM.type)).toEqual(true);
|
|
77
|
-
});
|
|
78
|
-
it("Removes itself from the App Object when disposed", () => {
|
|
79
|
-
const { appObj } = makeTestRig();
|
|
80
|
-
const pm = new MockPM(appObj);
|
|
81
|
-
expect(appObj.hasComponent(MockPM.type)).toEqual(true);
|
|
82
|
-
pm.dispose();
|
|
83
|
-
expect(appObj.hasComponent(MockPM.type)).toEqual(false);
|
|
84
|
-
});
|
|
85
|
-
it("Returns the repo", () => {
|
|
86
|
-
const { appObj, appObjects } = makeTestRig();
|
|
87
|
-
const pm = new MockPM(appObj);
|
|
88
|
-
expect(pm.appObjects).toEqual(appObjects);
|
|
89
|
-
});
|
|
90
|
-
it("Forwards a warn to the App Object Repo warn", () => {
|
|
91
|
-
const { appObj, appObjects } = makeTestRig();
|
|
92
|
-
appObjects.submitWarning = jest.fn();
|
|
93
|
-
const pm = new MockPM(appObj);
|
|
94
|
-
pm.warn("Some warning");
|
|
95
|
-
expect(appObjects.submitWarning).toBeCalledWith(`appObj/MockPM`, "Some warning");
|
|
96
|
-
});
|
|
97
|
-
it("Sets Component type to PM", () => {
|
|
98
|
-
const { appObj } = makeTestRig();
|
|
99
|
-
const pm = new MockPM(appObj);
|
|
100
|
-
expect(pm.componentType).toEqual(AppObjectComponent_1.AppObjectComponentType.PM);
|
|
101
|
-
});
|
|
102
|
-
});
|
|
103
|
-
//# sourceMappingURL=AppObjectPM.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AppObjectPM.test.js","sourceRoot":"","sources":["../../../src/AppObject/AppObjectPM.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { AppObject } from \"./AppObject\";\r\nimport { AppObjectComponentType } from \"./AppObjectComponent\";\r\nimport { AppObjectPM } from \"./AppObjectPM\";\r\nimport { makeAppObjectRepo } from \"./AppObjectRepo\";\r\n\r\ninterface MockVM {\r\n val: number;\r\n}\r\n\r\nclass MockPM extends AppObjectPM<MockVM> {\r\n static readonly type = \"MockPM\";\r\n\r\n readonly defaultVM = { val: 0 };\r\n get currentVM(): MockVM {\r\n return { val: 5 };\r\n }\r\n\r\n vmsAreEqual(a: MockVM, b: MockVM): boolean {\r\n return a.val === b.val;\r\n }\r\n\r\n constructor(appObj: AppObject) {\r\n super(appObj, MockPM.type);\r\n }\r\n}\r\n\r\nfunction makeTestRig() {\r\n const appObjects = makeAppObjectRepo();\r\n const appObj = appObjects.getOrCreate(\"appObj\");\r\n\r\n return { appObj, appObjects };\r\n}\r\n\r\ndescribe(\"App Object PM\", () => {\r\n it(\"Initializes with the last VM if it has been set\", () => {\r\n const { appObj } = makeTestRig();\r\n const pm = new MockPM(appObj);\r\n const view = jest.fn();\r\n\r\n pm.doUpdateView({ val: 6 });\r\n\r\n pm.addView(view);\r\n\r\n expect(view).toBeCalledWith({ val: 6 });\r\n });\r\n\r\n it(\"Adds a view but does not call it if no VM has been set\", () => {\r\n const { appObj } = makeTestRig();\r\n const pm = new MockPM(appObj);\r\n const view = jest.fn();\r\n\r\n pm.addView(view);\r\n\r\n expect(view).not.toBeCalled();\r\n });\r\n\r\n it(\"Doesn't notify if the vms are equal\", () => {\r\n const { appObj } = makeTestRig();\r\n const pm = new MockPM(appObj);\r\n const view = jest.fn();\r\n\r\n pm.doUpdateView({ val: 6 });\r\n pm.addView(view);\r\n\r\n view.mockClear();\r\n\r\n pm.doUpdateView({ val: 6 });\r\n pm.doUpdateView({ val: 6 });\r\n pm.doUpdateView({ val: 6 });\r\n\r\n expect(view).not.toBeCalled();\r\n });\r\n\r\n it(\"Removes a view\", () => {\r\n const { appObj } = makeTestRig();\r\n const pm = new MockPM(appObj);\r\n const view = jest.fn();\r\n\r\n pm.addView(view);\r\n\r\n view.mockClear();\r\n\r\n pm.removeView(view);\r\n\r\n pm.doUpdateView({ val: 10 });\r\n\r\n expect(view).not.toBeCalled();\r\n });\r\n\r\n it(\"Can be disposed\", () => {\r\n const { appObj } = makeTestRig();\r\n const pm = new MockPM(appObj);\r\n const view = jest.fn();\r\n\r\n pm.addView(view);\r\n view.mockClear();\r\n\r\n pm.dispose();\r\n\r\n pm.doUpdateView({ val: 10 });\r\n\r\n expect(view).not.toBeCalled();\r\n });\r\n\r\n it(\"Adds itself to the App Object\", () => {\r\n const { appObj } = makeTestRig();\r\n\r\n expect(appObj.hasComponent(MockPM.type)).toEqual(false);\r\n\r\n const pm = new MockPM(appObj);\r\n\r\n expect(appObj.hasComponent(MockPM.type)).toEqual(true);\r\n });\r\n\r\n it(\"Removes itself from the App Object when disposed\", () => {\r\n const { appObj } = makeTestRig();\r\n const pm = new MockPM(appObj);\r\n\r\n expect(appObj.hasComponent(MockPM.type)).toEqual(true);\r\n\r\n pm.dispose();\r\n\r\n expect(appObj.hasComponent(MockPM.type)).toEqual(false);\r\n });\r\n\r\n it(\"Returns the repo\", () => {\r\n const { appObj, appObjects } = makeTestRig();\r\n\r\n const pm = new MockPM(appObj);\r\n expect(pm.appObjects).toEqual(appObjects);\r\n });\r\n\r\n it(\"Forwards a warn to the App Object Repo warn\", () => {\r\n const { appObj, appObjects } = makeTestRig();\r\n appObjects.submitWarning = jest.fn();\r\n\r\n const pm = new MockPM(appObj);\r\n pm.warn(\"Some warning\");\r\n\r\n expect(appObjects.submitWarning).toBeCalledWith(\r\n `appObj/MockPM`,\r\n \"Some warning\"\r\n );\r\n });\r\n\r\n it(\"Sets Component type to PM\", () => {\r\n const { appObj } = makeTestRig();\r\n const pm = new MockPM(appObj);\r\n\r\n expect(pm.componentType).toEqual(AppObjectComponentType.PM);\r\n });\r\n});\r\n"]}
|