entropic-bond 1.46.2 → 1.48.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/lib/persistent/persistent.d.ts +18 -1
- package/lib/persistent/persistent.js +31 -3
- package/lib/persistent/persistent.js.map +1 -1
- package/lib/store/model.d.ts +36 -2
- package/lib/store/model.js +40 -2
- package/lib/store/model.js.map +1 -1
- package/package.json +6 -8
- package/lib/auth/auth-mock.spec.d.ts +0 -1
- package/lib/auth/auth-mock.spec.js +0 -127
- package/lib/auth/auth-mock.spec.js.map +0 -1
- package/lib/cloud-functions/cloud-functions-mock.spec.d.ts +0 -1
- package/lib/cloud-functions/cloud-functions-mock.spec.js +0 -104
- package/lib/cloud-functions/cloud-functions-mock.spec.js.map +0 -1
- package/lib/cloud-storage/cloud-storage.spec.d.ts +0 -1
- package/lib/cloud-storage/cloud-storage.spec.js +0 -173
- package/lib/cloud-storage/cloud-storage.spec.js.map +0 -1
- package/lib/observable/observable.spec.d.ts +0 -1
- package/lib/observable/observable.spec.js +0 -81
- package/lib/observable/observable.spec.js.map +0 -1
- package/lib/persistent/entropic-component.spec.d.ts +0 -1
- package/lib/persistent/entropic-component.spec.js +0 -115
- package/lib/persistent/entropic-component.spec.js.map +0 -1
- package/lib/persistent/persistent.spec.d.ts +0 -67
- package/lib/persistent/persistent.spec.js +0 -708
- package/lib/persistent/persistent.spec.js.map +0 -1
- package/lib/server-auth/server-auth-mock.spec.d.ts +0 -1
- package/lib/server-auth/server-auth-mock.spec.js +0 -43
- package/lib/server-auth/server-auth-mock.spec.js.map +0 -1
- package/lib/store/json-data-source.spec.d.ts +0 -1
- package/lib/store/json-data-source.spec.js +0 -84
- package/lib/store/json-data-source.spec.js.map +0 -1
- package/lib/store/mocks/mock-data.json +0 -155
- package/lib/store/model.spec.d.ts +0 -1
- package/lib/store/model.spec.js +0 -500
- package/lib/store/model.spec.js.map +0 -1
- package/lib/store/store.spec.d.ts +0 -1
- package/lib/store/store.spec.js +0 -21
- package/lib/store/store.spec.js.map +0 -1
- package/lib/types/utility-types.spec.d.ts +0 -1
- package/lib/types/utility-types.spec.js +0 -65
- package/lib/types/utility-types.spec.js.map +0 -1
- package/lib/utils/utils.spec.d.ts +0 -1
- package/lib/utils/utils.spec.js +0 -77
- package/lib/utils/utils.spec.js.map +0 -1
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
const persistent_1 = require("../persistent/persistent");
|
|
10
|
-
const json_data_source_1 = require("../store/json-data-source");
|
|
11
|
-
const store_1 = require("../store/store");
|
|
12
|
-
const cloud_storage_1 = require("./cloud-storage");
|
|
13
|
-
const mock_cloud_storage_1 = require("./mock-cloud-storage");
|
|
14
|
-
const stored_file_1 = require("./stored-file");
|
|
15
|
-
function MockFile(data, filename) {
|
|
16
|
-
this.data = data;
|
|
17
|
-
this.name = filename;
|
|
18
|
-
}
|
|
19
|
-
global.File = MockFile;
|
|
20
|
-
let Test = class Test extends persistent_1.Persistent {
|
|
21
|
-
constructor() {
|
|
22
|
-
super(...arguments);
|
|
23
|
-
this._file = new stored_file_1.StoredFile();
|
|
24
|
-
}
|
|
25
|
-
get file() {
|
|
26
|
-
return this._file;
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
__decorate([
|
|
30
|
-
persistent_1.persistent
|
|
31
|
-
], Test.prototype, "_file", void 0);
|
|
32
|
-
Test = __decorate([
|
|
33
|
-
(0, persistent_1.registerPersistentClass)('Test')
|
|
34
|
-
], Test);
|
|
35
|
-
describe('Cloud Storage', () => {
|
|
36
|
-
let testObj;
|
|
37
|
-
let file;
|
|
38
|
-
const blobData1 = new Uint8Array([0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x2c, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x21]);
|
|
39
|
-
const blobData2 = new Uint8Array([0x6c, 0x6c, 0x6f, 0x2c, 0x48, 0x65, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x21]);
|
|
40
|
-
const fileData = new MockFile([blobData1], 'pepe.dat');
|
|
41
|
-
const mockCloudStorage = new mock_cloud_storage_1.MockCloudStorage('mock-data-folder/');
|
|
42
|
-
beforeEach(() => {
|
|
43
|
-
cloud_storage_1.CloudStorage.useCloudStorage(mockCloudStorage);
|
|
44
|
-
testObj = new Test();
|
|
45
|
-
file = new stored_file_1.StoredFile();
|
|
46
|
-
});
|
|
47
|
-
afterEach(() => mockCloudStorage.mockFileSystem = {});
|
|
48
|
-
it('should save a file from Blob', async () => {
|
|
49
|
-
await file.save({ data: blobData1 });
|
|
50
|
-
expect(mockCloudStorage.mockFileSystem[file.id]).toBeDefined();
|
|
51
|
-
expect(mockCloudStorage.mockFileSystem[file.id]).toEqual(JSON.stringify(blobData1));
|
|
52
|
-
});
|
|
53
|
-
it('should save a file from File', async () => {
|
|
54
|
-
await file.save({ data: fileData });
|
|
55
|
-
expect(mockCloudStorage.mockFileSystem[file.id]).toBeDefined();
|
|
56
|
-
expect(mockCloudStorage.mockFileSystem[file.id]).toEqual(JSON.stringify({ data: [blobData1], name: 'pepe.dat' }));
|
|
57
|
-
expect(file.originalFileName).toEqual('pepe.dat');
|
|
58
|
-
expect(file.url).toEqual('mock-data-folder/pepe.dat');
|
|
59
|
-
});
|
|
60
|
-
it('should get a url', async () => {
|
|
61
|
-
await file.save({ data: blobData1 });
|
|
62
|
-
expect(file.url).toEqual('mock-data-folder/' + file.id);
|
|
63
|
-
});
|
|
64
|
-
it('should report metadata', async () => {
|
|
65
|
-
await file.save({ data: blobData1, fileName: 'test.dat' });
|
|
66
|
-
expect(file.originalFileName).toEqual('test.dat');
|
|
67
|
-
expect(file.provider.className).toEqual('MockCloudStorage');
|
|
68
|
-
});
|
|
69
|
-
it('should delete file', async () => {
|
|
70
|
-
await file.save({ data: blobData1 });
|
|
71
|
-
expect(mockCloudStorage.mockFileSystem[file.id]).toBeDefined();
|
|
72
|
-
await file.delete();
|
|
73
|
-
expect(file.url).toBeUndefined();
|
|
74
|
-
expect(mockCloudStorage.mockFileSystem[file.id]).not.toBeDefined();
|
|
75
|
-
});
|
|
76
|
-
it('should throw if not stored file', async () => {
|
|
77
|
-
let thrown = false;
|
|
78
|
-
try {
|
|
79
|
-
await file.delete();
|
|
80
|
-
}
|
|
81
|
-
catch {
|
|
82
|
-
thrown = true;
|
|
83
|
-
}
|
|
84
|
-
expect(thrown).toBeTruthy();
|
|
85
|
-
});
|
|
86
|
-
it('should overwrite file on subsequent writes', async () => {
|
|
87
|
-
const deleteSpy = jest.spyOn(file, 'delete');
|
|
88
|
-
await file.save({ data: 'first write' });
|
|
89
|
-
expect(deleteSpy).not.toHaveBeenCalled();
|
|
90
|
-
expect(mockCloudStorage.mockFileSystem[file.id]).toEqual('"first write"');
|
|
91
|
-
await file.save({ data: 'second write' });
|
|
92
|
-
expect(deleteSpy).toHaveBeenCalled();
|
|
93
|
-
expect(mockCloudStorage.mockFileSystem[file.id]).toEqual('"second write"');
|
|
94
|
-
});
|
|
95
|
-
it('should save from pending file', async () => {
|
|
96
|
-
file.setDataToStore(fileData);
|
|
97
|
-
await file.save();
|
|
98
|
-
expect(mockCloudStorage.mockFileSystem[file.id]).toBeDefined();
|
|
99
|
-
expect(mockCloudStorage.mockFileSystem[file.id]).toEqual(JSON.stringify({ data: [blobData1], name: 'pepe.dat' }));
|
|
100
|
-
});
|
|
101
|
-
describe('Notify on change', () => {
|
|
102
|
-
let spy;
|
|
103
|
-
beforeEach(() => {
|
|
104
|
-
spy = jest.fn();
|
|
105
|
-
file.onChange(spy);
|
|
106
|
-
});
|
|
107
|
-
afterEach(() => spy.mockClear());
|
|
108
|
-
it('should notify on seting pendind data to store', () => {
|
|
109
|
-
file.setDataToStore(fileData);
|
|
110
|
-
expect(spy).toHaveBeenNthCalledWith(1, {
|
|
111
|
-
event: stored_file_1.StoredFileEvent.pendingDataSet,
|
|
112
|
-
pendingData: fileData,
|
|
113
|
-
storedFile: file
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
it('should notify on data store', async () => {
|
|
117
|
-
await file.save(fileData);
|
|
118
|
-
expect(spy).toHaveBeenNthCalledWith(1, {
|
|
119
|
-
event: stored_file_1.StoredFileEvent.stored,
|
|
120
|
-
storedFile: file
|
|
121
|
-
});
|
|
122
|
-
});
|
|
123
|
-
it('should notify on delete', async () => {
|
|
124
|
-
await file.save(fileData);
|
|
125
|
-
spy.mockClear();
|
|
126
|
-
await file.delete();
|
|
127
|
-
expect(spy).toHaveBeenNthCalledWith(1, {
|
|
128
|
-
event: stored_file_1.StoredFileEvent.deleted,
|
|
129
|
-
storedFile: file
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
});
|
|
133
|
-
describe('Streaming', () => {
|
|
134
|
-
const database = {};
|
|
135
|
-
let model;
|
|
136
|
-
let testObj;
|
|
137
|
-
beforeEach(() => {
|
|
138
|
-
store_1.Store.useDataSource(new json_data_source_1.JsonDataSource(database));
|
|
139
|
-
testObj = new Test();
|
|
140
|
-
model = store_1.Store.getModel(testObj);
|
|
141
|
-
});
|
|
142
|
-
it('should save object with StoredFile', async () => {
|
|
143
|
-
await testObj.file.save({ data: blobData1, fileName: 'test.dat' });
|
|
144
|
-
await model.save(testObj);
|
|
145
|
-
expect(database[testObj.className][testObj.id].file).toBeDefined();
|
|
146
|
-
expect(database[testObj.className][testObj.id].file.reference).toEqual(testObj.file.id);
|
|
147
|
-
expect(database[testObj.className][testObj.id].file.url).toEqual('mock-data-folder/' + testObj.file.id);
|
|
148
|
-
expect(database[testObj.className][testObj.id].file.cloudStorageProviderName).toEqual('MockCloudStorage');
|
|
149
|
-
expect(database[testObj.className][testObj.id].file.originalFileName).toEqual('test.dat');
|
|
150
|
-
});
|
|
151
|
-
it('should load object with StoredFile', async () => {
|
|
152
|
-
await testObj.file.save({ data: blobData1, fileName: 'test.dat' });
|
|
153
|
-
await model.save(testObj);
|
|
154
|
-
const newTestObj = await model.findById(testObj.id);
|
|
155
|
-
expect(newTestObj?.file).toBeInstanceOf(stored_file_1.StoredFile);
|
|
156
|
-
expect(newTestObj?.file.url).toEqual('mock-data-folder/' + testObj.file.id);
|
|
157
|
-
});
|
|
158
|
-
it('should replace file on save after load', async () => {
|
|
159
|
-
const deleteSpy = jest.spyOn(testObj.file, 'delete');
|
|
160
|
-
await testObj.file.save({ data: blobData1, fileName: 'test.dat' });
|
|
161
|
-
await model.save(testObj);
|
|
162
|
-
const newTestObj = await model.findById(testObj.id);
|
|
163
|
-
expect(newTestObj?.file).toBeInstanceOf(stored_file_1.StoredFile);
|
|
164
|
-
expect(newTestObj?.file.url).toEqual('mock-data-folder/' + testObj.file.id);
|
|
165
|
-
expect(deleteSpy).not.toHaveBeenCalled();
|
|
166
|
-
testObj.file.setDataToStore(blobData2);
|
|
167
|
-
await testObj.file.save();
|
|
168
|
-
expect(mockCloudStorage.mockFileSystem[testObj.file.id]).toEqual(JSON.stringify(blobData2));
|
|
169
|
-
expect(deleteSpy).toHaveBeenCalled();
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
});
|
|
173
|
-
//# sourceMappingURL=cloud-storage.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-storage.spec.js","sourceRoot":"","sources":["../../src/cloud-storage/cloud-storage.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const observable_1 = require("./observable");
|
|
4
|
-
class ObserverTest {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.changed = true;
|
|
7
|
-
}
|
|
8
|
-
userChanged() {
|
|
9
|
-
this.changed = true;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
describe('observer', () => {
|
|
13
|
-
let observable;
|
|
14
|
-
beforeEach(() => {
|
|
15
|
-
observable = new observable_1.Observable();
|
|
16
|
-
});
|
|
17
|
-
it('should subscribe ', () => {
|
|
18
|
-
const mockObserver = new ObserverTest();
|
|
19
|
-
const changedSpy = jest.spyOn(mockObserver, 'userChanged');
|
|
20
|
-
observable.subscribe(() => mockObserver.userChanged());
|
|
21
|
-
observable.notify();
|
|
22
|
-
expect(changedSpy).toBeCalledTimes(1);
|
|
23
|
-
});
|
|
24
|
-
it('should notify', () => {
|
|
25
|
-
const myCallback = jest.fn();
|
|
26
|
-
observable.subscribe(myCallback);
|
|
27
|
-
observable.notify();
|
|
28
|
-
expect(myCallback).toHaveBeenCalledTimes(1);
|
|
29
|
-
});
|
|
30
|
-
it('should notify all subscribers', () => {
|
|
31
|
-
const callbackOne = jest.fn();
|
|
32
|
-
const callbackTwo = jest.fn();
|
|
33
|
-
const callbackThree = jest.fn();
|
|
34
|
-
observable.subscribe(callbackOne);
|
|
35
|
-
observable.subscribe(callbackTwo);
|
|
36
|
-
observable.subscribe(callbackThree);
|
|
37
|
-
observable.notify();
|
|
38
|
-
expect(callbackOne).toHaveBeenCalledTimes(1);
|
|
39
|
-
expect(callbackTwo).toHaveBeenCalledTimes(1);
|
|
40
|
-
expect(callbackThree).toHaveBeenCalledTimes(1);
|
|
41
|
-
});
|
|
42
|
-
it('should notify with event', () => {
|
|
43
|
-
const myCallback = jest.fn();
|
|
44
|
-
const obj = { name: 'Juan' };
|
|
45
|
-
observable.subscribe(myCallback);
|
|
46
|
-
observable.notify(obj);
|
|
47
|
-
expect(myCallback).toHaveBeenCalledWith(obj);
|
|
48
|
-
});
|
|
49
|
-
it('should not notify removed listeners', () => {
|
|
50
|
-
const callbackOne = jest.fn();
|
|
51
|
-
const callbackTwo = jest.fn();
|
|
52
|
-
const callbackThree = jest.fn();
|
|
53
|
-
observable.subscribe(callbackOne);
|
|
54
|
-
observable.subscribe(callbackTwo);
|
|
55
|
-
observable.subscribe(callbackThree);
|
|
56
|
-
observable.notify();
|
|
57
|
-
expect(callbackOne).toHaveBeenCalledTimes(1);
|
|
58
|
-
expect(callbackTwo).toHaveBeenCalledTimes(1);
|
|
59
|
-
expect(callbackThree).toHaveBeenCalledTimes(1);
|
|
60
|
-
observable.unsubscribe(callbackThree);
|
|
61
|
-
observable.notify();
|
|
62
|
-
expect(callbackOne).toHaveBeenCalledTimes(2);
|
|
63
|
-
expect(callbackTwo).toHaveBeenCalledTimes(2);
|
|
64
|
-
expect(callbackThree).toHaveBeenCalledTimes(1);
|
|
65
|
-
});
|
|
66
|
-
it('should return an unsubscribe function on subscribe', () => {
|
|
67
|
-
const cb = jest.fn();
|
|
68
|
-
const unsubscriber = observable.subscribe(cb);
|
|
69
|
-
unsubscriber();
|
|
70
|
-
observable.notify();
|
|
71
|
-
expect(cb).not.toHaveBeenCalled();
|
|
72
|
-
});
|
|
73
|
-
it('should return the number of subscribers', () => {
|
|
74
|
-
const cb = jest.fn();
|
|
75
|
-
observable.subscribe(cb);
|
|
76
|
-
observable.subscribe(cb);
|
|
77
|
-
observable.subscribe(jest.fn());
|
|
78
|
-
expect(observable.subscribersCount).toBe(2);
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
//# sourceMappingURL=observable.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"observable.spec.js","sourceRoot":"","sources":["../../src/observable/observable.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const entropic_component_1 = require("./entropic-component");
|
|
4
|
-
class Character extends entropic_component_1.EntropicComponent {
|
|
5
|
-
constructor() {
|
|
6
|
-
super(...arguments);
|
|
7
|
-
this._friends = [];
|
|
8
|
-
this._name = '';
|
|
9
|
-
}
|
|
10
|
-
setName(value) {
|
|
11
|
-
this.changeProp('name', value);
|
|
12
|
-
return this;
|
|
13
|
-
}
|
|
14
|
-
get name() {
|
|
15
|
-
return this._name;
|
|
16
|
-
}
|
|
17
|
-
pushFriend(name, isUnique) {
|
|
18
|
-
return this.pushAndNotify('friends', name, isUnique);
|
|
19
|
-
}
|
|
20
|
-
removeFriend(name, isEqual) {
|
|
21
|
-
return this.removeAndNotify('friends', name, isEqual);
|
|
22
|
-
}
|
|
23
|
-
get friends() {
|
|
24
|
-
return this._friends;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
describe('Observable Persistent', () => {
|
|
28
|
-
let hero;
|
|
29
|
-
beforeEach(() => {
|
|
30
|
-
hero = new Character();
|
|
31
|
-
});
|
|
32
|
-
it('should change properties', () => {
|
|
33
|
-
hero.setName('Rogue I');
|
|
34
|
-
expect(hero.name).toEqual('Rogue I');
|
|
35
|
-
});
|
|
36
|
-
it('should notify on change', () => {
|
|
37
|
-
const changed = jest.fn();
|
|
38
|
-
hero.onChange(changed);
|
|
39
|
-
hero.setName('Rogue I');
|
|
40
|
-
expect(changed).toHaveBeenCalledWith({ name: 'Rogue I' });
|
|
41
|
-
});
|
|
42
|
-
it('should return a unsubscribe function on subscription', () => {
|
|
43
|
-
const changed = jest.fn();
|
|
44
|
-
const unsubscribe = hero.onChange(changed);
|
|
45
|
-
unsubscribe();
|
|
46
|
-
hero.setName('Rogue II');
|
|
47
|
-
expect(changed).not.toHaveBeenCalled();
|
|
48
|
-
});
|
|
49
|
-
describe('Array Props', () => {
|
|
50
|
-
let spy = jest.fn();
|
|
51
|
-
beforeEach(() => {
|
|
52
|
-
hero.onChange(spy);
|
|
53
|
-
});
|
|
54
|
-
afterEach(() => {
|
|
55
|
-
hero.removeOnChange(spy);
|
|
56
|
-
spy.mockClear();
|
|
57
|
-
});
|
|
58
|
-
it('should insert element in array member and notify', () => {
|
|
59
|
-
const res = hero.pushFriend('John');
|
|
60
|
-
expect(res).toEqual('John');
|
|
61
|
-
expect(hero.friends).toContain('John');
|
|
62
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
63
|
-
expect(spy).toHaveBeenCalledWith({ friends: ['John'] });
|
|
64
|
-
});
|
|
65
|
-
it('should insert different elements in array member', () => {
|
|
66
|
-
expect(hero.pushFriend('John')).toBeDefined();
|
|
67
|
-
expect(hero.pushFriend('Jaume')).toBeDefined();
|
|
68
|
-
expect(hero.friends).toContain('John');
|
|
69
|
-
expect(hero.friends).toContain('Jaume');
|
|
70
|
-
expect(spy).toHaveBeenCalledTimes(2);
|
|
71
|
-
});
|
|
72
|
-
it('should insert different elements in array member with check function', () => {
|
|
73
|
-
const isUnique = (a, b) => a !== b;
|
|
74
|
-
expect(hero.pushFriend('John', isUnique)).toBeDefined();
|
|
75
|
-
expect(hero.pushFriend('Jaume', isUnique)).toBeDefined();
|
|
76
|
-
expect(hero.friends).toContain('John');
|
|
77
|
-
expect(hero.friends).toContain('Jaume');
|
|
78
|
-
expect(spy).toHaveBeenCalledTimes(2);
|
|
79
|
-
});
|
|
80
|
-
it('should not insert repeated elements in array member with check function', () => {
|
|
81
|
-
const isUnique = (a, b) => a !== b;
|
|
82
|
-
expect(hero.pushFriend('John', isUnique)).toBeDefined();
|
|
83
|
-
expect(hero.pushFriend('John', isUnique)).not.toBeDefined();
|
|
84
|
-
expect(hero.friends).toContain('John');
|
|
85
|
-
expect(hero.friends).toHaveLength(1);
|
|
86
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
87
|
-
});
|
|
88
|
-
it('should remove an element from array member and notify', () => {
|
|
89
|
-
const isEqual = (a, b) => a === b;
|
|
90
|
-
hero.pushFriend('John');
|
|
91
|
-
hero.pushFriend('Jaume');
|
|
92
|
-
spy.mockReset();
|
|
93
|
-
expect(hero.friends).toHaveLength(2);
|
|
94
|
-
const res = hero.removeFriend('John', isEqual);
|
|
95
|
-
expect(res).toEqual('John');
|
|
96
|
-
expect(hero.friends).not.toContain('John');
|
|
97
|
-
expect(hero.friends).toContain('Jaume');
|
|
98
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
99
|
-
expect(spy).toHaveBeenCalledWith({ friends: ['Jaume'] });
|
|
100
|
-
});
|
|
101
|
-
it('should not notify on element not removed', () => {
|
|
102
|
-
const isEqual = (a, b) => a === b;
|
|
103
|
-
hero.pushFriend('John');
|
|
104
|
-
hero.pushFriend('Jaume');
|
|
105
|
-
spy.mockReset();
|
|
106
|
-
expect(hero.friends).toHaveLength(2);
|
|
107
|
-
const res = hero.removeFriend('Nobody', isEqual);
|
|
108
|
-
expect(res).toBeUndefined();
|
|
109
|
-
expect(hero.friends).toContain('John');
|
|
110
|
-
expect(hero.friends).toContain('Jaume');
|
|
111
|
-
expect(spy).not.toHaveBeenCalled();
|
|
112
|
-
});
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
//# sourceMappingURL=entropic-component.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"entropic-component.spec.js","sourceRoot":"","sources":["../../src/persistent/entropic-component.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { Persistent } from './persistent';
|
|
2
|
-
interface InnerObject {
|
|
3
|
-
nonPersistedReferences: PersistentClass[];
|
|
4
|
-
}
|
|
5
|
-
declare class PersistentClass extends Persistent {
|
|
6
|
-
protected beforeSerialize(): void;
|
|
7
|
-
protected afterDeserialize(): void;
|
|
8
|
-
set persistentProp(val: number | undefined);
|
|
9
|
-
get persistentProp(): number | undefined;
|
|
10
|
-
set personPureRef(value: Person | undefined);
|
|
11
|
-
get personPureRef(): Person | undefined;
|
|
12
|
-
set persistentArray(value: PersistentClass[] | undefined);
|
|
13
|
-
get persistentArray(): PersistentClass[] | undefined;
|
|
14
|
-
_persistentProp: number | undefined;
|
|
15
|
-
_persistentArray: PersistentClass[] | undefined;
|
|
16
|
-
_personPureRef: Person | undefined;
|
|
17
|
-
_nonPersistentProp: number | undefined;
|
|
18
|
-
}
|
|
19
|
-
declare class NotRegistered extends Persistent {
|
|
20
|
-
}
|
|
21
|
-
declare class Person extends Persistent {
|
|
22
|
-
protected beforeSerialize(): void;
|
|
23
|
-
protected afterDeserialize(): void;
|
|
24
|
-
set name(value: string | undefined);
|
|
25
|
-
get name(): string | undefined;
|
|
26
|
-
set salary(value: number | undefined);
|
|
27
|
-
get salary(): number | undefined;
|
|
28
|
-
set doNotPersist(value: number | undefined);
|
|
29
|
-
get doNotPersist(): number | undefined;
|
|
30
|
-
set anObjectProperty(value: PersistentClass);
|
|
31
|
-
get anObjectProperty(): PersistentClass;
|
|
32
|
-
set skills(value: string[] | undefined);
|
|
33
|
-
get skills(): string[] | undefined;
|
|
34
|
-
set arrayOfPersistent(value: PersistentClass[] | undefined);
|
|
35
|
-
get arrayOfPersistent(): PersistentClass[] | undefined;
|
|
36
|
-
set document(value: PersistentClass | undefined);
|
|
37
|
-
get document(): PersistentClass | undefined;
|
|
38
|
-
set arrayOfRefs(value: PersistentClass[]);
|
|
39
|
-
get arrayOfRefs(): PersistentClass[];
|
|
40
|
-
set persistentObject(value: InnerObject | undefined);
|
|
41
|
-
get persistentObject(): InnerObject | undefined;
|
|
42
|
-
private _name?;
|
|
43
|
-
private _salary?;
|
|
44
|
-
private _skills;
|
|
45
|
-
private _anObjectProperty;
|
|
46
|
-
private _arrayOfPersistent;
|
|
47
|
-
_notRegistered: NotRegistered | undefined;
|
|
48
|
-
_arrayOfArray: number[][] | undefined;
|
|
49
|
-
_arrayOfPersistentArray: PersistentClass[][] | undefined;
|
|
50
|
-
_plainObject: {
|
|
51
|
-
[key: string]: unknown;
|
|
52
|
-
} | undefined;
|
|
53
|
-
_document: PersistentClass | undefined;
|
|
54
|
-
_docAtArbitraryCollection: PersistentClass | undefined;
|
|
55
|
-
_docAtArbitraryCollectionRefFunc: PersistentClass | undefined;
|
|
56
|
-
private _arrayOfRefs;
|
|
57
|
-
private _persistentObject;
|
|
58
|
-
_referenceWithStoredValues: PersistentClass | undefined;
|
|
59
|
-
private _doNotPersist;
|
|
60
|
-
}
|
|
61
|
-
export declare class WithAnnotations extends PersistentClass {
|
|
62
|
-
}
|
|
63
|
-
export declare class WithAnnotations2 extends PersistentClass {
|
|
64
|
-
}
|
|
65
|
-
export declare class WithAnnotations3 extends PersistentClass {
|
|
66
|
-
}
|
|
67
|
-
export {};
|