@furystack/repository 7.0.10 → 7.0.12
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/esm/data-set.js.map +1 -1
- package/esm/dataset.spec.d.ts +2 -0
- package/esm/dataset.spec.d.ts.map +1 -0
- package/esm/dataset.spec.js +460 -0
- package/esm/dataset.spec.js.map +1 -0
- package/esm/repository.js.map +1 -1
- package/esm/repository.spec.d.ts +2 -0
- package/esm/repository.spec.d.ts.map +1 -0
- package/esm/repository.spec.js +20 -0
- package/esm/repository.spec.js.map +1 -0
- package/package.json +6 -6
- package/src/dataset.spec.ts +3 -3
- package/src/repository.spec.ts +2 -2
package/esm/data-set.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-set.js","sourceRoot":"","sources":["../src/data-set.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAGpD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD;;GAEG;AACH,MAAM,OAAO,OAAO;IAgLU;IA7KrB,OAAO;QACZ,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAA;QAC5B,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAA;QAC9B,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAA;IAChC,CAAC;IAED;;OAEG;IACI,UAAU,CAAa;IAE9B;;;;;OAKG;IACI,KAAK,CAAC,GAAG,CAAC,QAAkB,EAAE,GAAG,QAAyB;QAC/D,MAAM,OAAO,CAAC,GAAG,CACf,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAC5B,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;
|
|
1
|
+
{"version":3,"file":"data-set.js","sourceRoot":"","sources":["../src/data-set.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataset.spec.d.ts","sourceRoot":"","sources":["../src/dataset.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,460 @@
|
|
|
1
|
+
import { Injector } from '@furystack/inject';
|
|
2
|
+
import { using, usingAsync } from '@furystack/utils';
|
|
3
|
+
import { InMemoryStore, addStore } from '@furystack/core';
|
|
4
|
+
import { Repository } from './repository.js';
|
|
5
|
+
import { getDataSetFor, getRepository } from './helpers.js';
|
|
6
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
7
|
+
class TestClass {
|
|
8
|
+
id = 1;
|
|
9
|
+
value = '';
|
|
10
|
+
}
|
|
11
|
+
describe('DataSet', () => {
|
|
12
|
+
describe('Construction', () => {
|
|
13
|
+
it('can be retrieved from an extension method with class', () => {
|
|
14
|
+
using(new Injector(), (i) => {
|
|
15
|
+
addStore(i, new InMemoryStore({
|
|
16
|
+
model: TestClass,
|
|
17
|
+
primaryKey: 'id',
|
|
18
|
+
}));
|
|
19
|
+
getRepository(i).createDataSet(TestClass, 'id');
|
|
20
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
21
|
+
expect(dataSet.settings.physicalStore.model).toBe(TestClass);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
it('can be retrieved from an extension method with string', () => {
|
|
25
|
+
using(new Injector(), (i) => {
|
|
26
|
+
addStore(i, new InMemoryStore({
|
|
27
|
+
model: TestClass,
|
|
28
|
+
primaryKey: 'id',
|
|
29
|
+
}));
|
|
30
|
+
getRepository(i).createDataSet(TestClass, 'id');
|
|
31
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
32
|
+
expect(dataSet.settings.physicalStore.model).toBe(TestClass);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
it('Should throw if dataset is not registered through extension', () => {
|
|
36
|
+
using(new Injector(), (i) => {
|
|
37
|
+
expect(() => getDataSetFor(i, TestClass, 'id')).toThrowError('');
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
it('Should throw if dataset is not registered through service', () => {
|
|
41
|
+
using(new Injector(), (i) => {
|
|
42
|
+
expect(() => i.getInstance(Repository).getDataSetFor(TestClass, 'id')).toThrowError('');
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
describe('Authorizers', () => {
|
|
47
|
+
describe('Add', () => {
|
|
48
|
+
it('should add an entity if no settings are provided', async () => {
|
|
49
|
+
await usingAsync(new Injector(), async (i) => {
|
|
50
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
51
|
+
getRepository(i).createDataSet(TestClass, 'id');
|
|
52
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
53
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
54
|
+
const result = await dataSet.get(i, 1);
|
|
55
|
+
expect(result && result.value).toBe('asd');
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
it('should call the add async authorizer and add the entity on pass', async () => {
|
|
59
|
+
await usingAsync(new Injector(), async (i) => {
|
|
60
|
+
const authorizeAdd = vi.fn(async () => ({ isAllowed: true }));
|
|
61
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
62
|
+
getRepository(i).createDataSet(TestClass, 'id', { authorizeAdd });
|
|
63
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
64
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
65
|
+
expect(authorizeAdd).toBeCalled();
|
|
66
|
+
const added = await dataSet.get(i, 1);
|
|
67
|
+
expect(added && added.value).toBe('asd');
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
it('should throw if the add authorizer returns a non-valid result and should not add a value to the store', async () => {
|
|
71
|
+
await usingAsync(new Injector(), async (i) => {
|
|
72
|
+
const authorizeAdd = vi.fn(async () => ({ isAllowed: false, message: '...' }));
|
|
73
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
74
|
+
getRepository(i).createDataSet(TestClass, 'id', { authorizeAdd });
|
|
75
|
+
const dataSet = await getDataSetFor(i, TestClass, 'id');
|
|
76
|
+
try {
|
|
77
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
78
|
+
throw Error('Should throw');
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
/** */
|
|
82
|
+
expect(authorizeAdd).toBeCalled();
|
|
83
|
+
const added = await dataSet.get(i, 1);
|
|
84
|
+
expect(added).toBeUndefined();
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
it('should modify an entity on add, if modifyOnAdd is provided', async () => {
|
|
89
|
+
await usingAsync(new Injector(), async (i) => {
|
|
90
|
+
const modifyOnAdd = vi.fn(async (options) => ({
|
|
91
|
+
...options.entity,
|
|
92
|
+
value: options.entity.value.toUpperCase(),
|
|
93
|
+
}));
|
|
94
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
95
|
+
getRepository(i).createDataSet(TestClass, 'id', { modifyOnAdd });
|
|
96
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
97
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
98
|
+
const result = await dataSet.get(i, 1);
|
|
99
|
+
expect(modifyOnAdd).toBeCalled();
|
|
100
|
+
expect(result && result.value).toBe('ASD');
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
it('should call the onEntityAdded callback if an entity has been added', async () => {
|
|
104
|
+
await usingAsync(new Injector(), async (i) => {
|
|
105
|
+
expect.assertions(1);
|
|
106
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
107
|
+
getRepository(i).createDataSet(TestClass, 'id', {});
|
|
108
|
+
getRepository(i)
|
|
109
|
+
.getDataSetFor(TestClass, 'id')
|
|
110
|
+
.onEntityAdded.subscribe(({ entity }) => {
|
|
111
|
+
expect(entity.value).toBe('asd');
|
|
112
|
+
});
|
|
113
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
114
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
describe('Update', () => {
|
|
119
|
+
it('should update an entity if no settings are provided', async () => {
|
|
120
|
+
await usingAsync(new Injector(), async (i) => {
|
|
121
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
122
|
+
getRepository(i).createDataSet(TestClass, 'id');
|
|
123
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
124
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
125
|
+
await dataSet.update(i, 1, { id: 1, value: 'asd2' });
|
|
126
|
+
const result = await dataSet.get(i, 1);
|
|
127
|
+
expect(result && result.value).toBe('asd2');
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
it('should call the authorizeUpdate authorizer and add the entity on pass', async () => {
|
|
131
|
+
await usingAsync(new Injector(), async (i) => {
|
|
132
|
+
const authorizeUpdate = vi.fn(async () => ({ isAllowed: true }));
|
|
133
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
134
|
+
getRepository(i).createDataSet(TestClass, 'id', { authorizeUpdate });
|
|
135
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
136
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
137
|
+
await dataSet.update(i, 1, { id: 1, value: 'asd2' });
|
|
138
|
+
expect(authorizeUpdate).toBeCalled();
|
|
139
|
+
const added = await dataSet.get(i, 1);
|
|
140
|
+
expect(added && added.value).toBe('asd2');
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
it('should throw if the authorizeUpdateEntity returns a non-valid result and should not update a value to the store', async () => {
|
|
144
|
+
await usingAsync(new Injector(), async (i) => {
|
|
145
|
+
const authorizeUpdateEntity = vi.fn(async () => ({ isAllowed: false, message: '...' }));
|
|
146
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
147
|
+
getRepository(i).createDataSet(TestClass, 'id', { authorizeUpdateEntity });
|
|
148
|
+
const dataSet = await getDataSetFor(i, TestClass, 'id');
|
|
149
|
+
try {
|
|
150
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
151
|
+
await dataSet.update(i, 1, { id: 1, value: 'asd2' });
|
|
152
|
+
throw Error('Should throw');
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
/** */
|
|
156
|
+
expect(authorizeUpdateEntity).toBeCalled();
|
|
157
|
+
const added = await dataSet.get(i, 1);
|
|
158
|
+
expect(added && added.value).toBe('asd');
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
it('should call the authorizeUpdateEntity authorizer and add the entity on pass', async () => {
|
|
163
|
+
await usingAsync(new Injector(), async (i) => {
|
|
164
|
+
const authorizeUpdateEntity = vi.fn(async () => ({ isAllowed: true }));
|
|
165
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
166
|
+
getRepository(i).createDataSet(TestClass, 'id', { authorizeUpdateEntity });
|
|
167
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
168
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
169
|
+
await dataSet.update(i, 1, { id: 1, value: 'asd2' });
|
|
170
|
+
expect(authorizeUpdateEntity).toBeCalled();
|
|
171
|
+
const added = await dataSet.get(i, 1);
|
|
172
|
+
expect(added && added.value).toBe('asd2');
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
it('should throw if the authorizeUpdate returns a non-valid result and should not update a value to the store', async () => {
|
|
176
|
+
await usingAsync(new Injector(), async (i) => {
|
|
177
|
+
const authorizeUpdate = vi.fn(async () => ({ isAllowed: false, message: '...' }));
|
|
178
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
179
|
+
getRepository(i).createDataSet(TestClass, 'id', { authorizeUpdate });
|
|
180
|
+
const dataSet = await getDataSetFor(i, TestClass, 'id');
|
|
181
|
+
try {
|
|
182
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
183
|
+
await dataSet.update(i, 1, { id: 1, value: 'asd2' });
|
|
184
|
+
throw Error('Should throw');
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
/** */
|
|
188
|
+
expect(authorizeUpdate).toBeCalled();
|
|
189
|
+
const added = await dataSet.get(i, 1);
|
|
190
|
+
expect(added && added.value).toBe('asd');
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
it('should modify an entity on update, if modifyOnAdd is provided', async () => {
|
|
195
|
+
await usingAsync(new Injector(), async (i) => {
|
|
196
|
+
const modifyOnUpdate = vi.fn(async (options) => ({
|
|
197
|
+
...options.entity,
|
|
198
|
+
value: options.entity.value?.toUpperCase(),
|
|
199
|
+
}));
|
|
200
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
201
|
+
getRepository(i).createDataSet(TestClass, 'id', { modifyOnUpdate });
|
|
202
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
203
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
204
|
+
await dataSet.update(i, 1, { id: 1, value: 'asd2' });
|
|
205
|
+
const result = await dataSet.get(i, 1);
|
|
206
|
+
expect(modifyOnUpdate).toBeCalled();
|
|
207
|
+
expect(result && result.value).toBe('ASD2');
|
|
208
|
+
});
|
|
209
|
+
});
|
|
210
|
+
it('should publish to the onEntityUpdated observable if an entity has been updated', async () => {
|
|
211
|
+
await usingAsync(new Injector(), async (i) => {
|
|
212
|
+
expect.assertions(1);
|
|
213
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
214
|
+
getRepository(i).createDataSet(TestClass, 'id');
|
|
215
|
+
getRepository(i)
|
|
216
|
+
.getDataSetFor(TestClass, 'id')
|
|
217
|
+
.onEntityUpdated.subscribe(({ change }) => {
|
|
218
|
+
expect(change).toEqual({ id: 1, value: 'asd2' });
|
|
219
|
+
});
|
|
220
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
221
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
222
|
+
await dataSet.update(i, 1, { id: 1, value: 'asd2' });
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
describe('Count', () => {
|
|
227
|
+
it('should return the count if no settings are provided', async () => {
|
|
228
|
+
await usingAsync(new Injector(), async (i) => {
|
|
229
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
230
|
+
getRepository(i).createDataSet(TestClass, 'id');
|
|
231
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
232
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
233
|
+
const result = await dataSet.count(i);
|
|
234
|
+
expect(result).toBe(1);
|
|
235
|
+
});
|
|
236
|
+
});
|
|
237
|
+
it('should return the count if authorizeGet returns valid result', async () => {
|
|
238
|
+
await usingAsync(new Injector(), async (i) => {
|
|
239
|
+
const authorizeGet = vi.fn(async () => ({ isAllowed: true, message: '' }));
|
|
240
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
241
|
+
getRepository(i).createDataSet(TestClass, 'id', { authorizeGet });
|
|
242
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
243
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
244
|
+
const result = await dataSet.count(i);
|
|
245
|
+
expect(result).toBe(1);
|
|
246
|
+
});
|
|
247
|
+
});
|
|
248
|
+
it('should throw if authorizeGet returns invalid result', async () => {
|
|
249
|
+
await usingAsync(new Injector(), async (i) => {
|
|
250
|
+
const authorizeGet = vi.fn(async () => ({ isAllowed: false, message: ':(' }));
|
|
251
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
252
|
+
getRepository(i).createDataSet(TestClass, 'id', { authorizeGet });
|
|
253
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
254
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
255
|
+
try {
|
|
256
|
+
await dataSet.count(i);
|
|
257
|
+
throw Error('Should throw');
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
/** */
|
|
261
|
+
}
|
|
262
|
+
});
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
});
|
|
266
|
+
describe('filter', () => {
|
|
267
|
+
it('should return the unfiltered result if no settings are provided', async () => {
|
|
268
|
+
await usingAsync(new Injector(), async (i) => {
|
|
269
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
270
|
+
getRepository(i).createDataSet(TestClass, 'id');
|
|
271
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
272
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
273
|
+
const result = await dataSet.find(i, {});
|
|
274
|
+
expect(result.length).toBe(1);
|
|
275
|
+
});
|
|
276
|
+
});
|
|
277
|
+
it('should return the unfiltered result if authorizeGet returns valid result', async () => {
|
|
278
|
+
await usingAsync(new Injector(), async (i) => {
|
|
279
|
+
const authorizeGet = vi.fn(async () => ({ isAllowed: true, message: '' }));
|
|
280
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
281
|
+
getRepository(i).createDataSet(TestClass, 'id', { authorizeGet });
|
|
282
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
283
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
284
|
+
const result = await dataSet.find(i, {});
|
|
285
|
+
expect(result.length).toBe(1);
|
|
286
|
+
});
|
|
287
|
+
});
|
|
288
|
+
it('should throw if authorizeGet returns invalid result', async () => {
|
|
289
|
+
await usingAsync(new Injector(), async (i) => {
|
|
290
|
+
const authorizeGet = vi.fn(async () => ({ isAllowed: false, message: ':(' }));
|
|
291
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
292
|
+
getRepository(i).createDataSet(TestClass, 'id', { authorizeGet });
|
|
293
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
294
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
295
|
+
try {
|
|
296
|
+
await dataSet.find(i, {});
|
|
297
|
+
throw Error('Should throw');
|
|
298
|
+
}
|
|
299
|
+
catch (error) {
|
|
300
|
+
/** */
|
|
301
|
+
}
|
|
302
|
+
});
|
|
303
|
+
});
|
|
304
|
+
});
|
|
305
|
+
describe('get', () => {
|
|
306
|
+
it('should return the entity if no settings are provided', async () => {
|
|
307
|
+
await usingAsync(new Injector(), async (i) => {
|
|
308
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
309
|
+
getRepository(i).createDataSet(TestClass, 'id');
|
|
310
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
311
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
312
|
+
const result = await dataSet.get(i, 1);
|
|
313
|
+
expect(result && result.id).toBe(1);
|
|
314
|
+
});
|
|
315
|
+
});
|
|
316
|
+
it('should return the entity if authorizeGet returns valid result', async () => {
|
|
317
|
+
await usingAsync(new Injector(), async (i) => {
|
|
318
|
+
const authorizeGet = vi.fn(async () => ({ isAllowed: true, message: '' }));
|
|
319
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
320
|
+
getRepository(i).createDataSet(TestClass, 'id', { authorizeGet });
|
|
321
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
322
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
323
|
+
const result = await dataSet.get(i, 1);
|
|
324
|
+
expect(result && result.id).toBe(1);
|
|
325
|
+
});
|
|
326
|
+
});
|
|
327
|
+
it('should throw if authorizeGet returns invalid result', async () => {
|
|
328
|
+
await usingAsync(new Injector(), async (i) => {
|
|
329
|
+
const authorizeGet = vi.fn(async () => ({ isAllowed: false, message: ':(' }));
|
|
330
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
331
|
+
getRepository(i).createDataSet(TestClass, 'id', { authorizeGet });
|
|
332
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
333
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
334
|
+
try {
|
|
335
|
+
await dataSet.get(i, 1);
|
|
336
|
+
throw Error('Should throw');
|
|
337
|
+
}
|
|
338
|
+
catch (error) {
|
|
339
|
+
/** */
|
|
340
|
+
}
|
|
341
|
+
});
|
|
342
|
+
});
|
|
343
|
+
it('should return the entity if authorizeGetEntity returns valid result', async () => {
|
|
344
|
+
await usingAsync(new Injector(), async (i) => {
|
|
345
|
+
const authorizeGetEntity = vi.fn(async () => ({ isAllowed: true, message: '' }));
|
|
346
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
347
|
+
getRepository(i).createDataSet(TestClass, 'id', { authorizeGetEntity });
|
|
348
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
349
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
350
|
+
const result = await dataSet.get(i, 1);
|
|
351
|
+
expect(result && result.id).toBe(1);
|
|
352
|
+
});
|
|
353
|
+
});
|
|
354
|
+
it('should throw if authorizeGetEntity returns invalid result', async () => {
|
|
355
|
+
await usingAsync(new Injector(), async (i) => {
|
|
356
|
+
const authorizeGetEntity = vi.fn(async () => ({ isAllowed: false, message: ':(' }));
|
|
357
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
358
|
+
getRepository(i).createDataSet(TestClass, 'id', { authorizeGetEntity });
|
|
359
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
360
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
361
|
+
try {
|
|
362
|
+
await dataSet.get(i, 1);
|
|
363
|
+
throw Error('Should throw');
|
|
364
|
+
}
|
|
365
|
+
catch (error) {
|
|
366
|
+
/** */
|
|
367
|
+
}
|
|
368
|
+
});
|
|
369
|
+
});
|
|
370
|
+
});
|
|
371
|
+
describe('remove', () => {
|
|
372
|
+
it('should remove the entity if no settings are provided', async () => {
|
|
373
|
+
await usingAsync(new Injector(), async (i) => {
|
|
374
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
375
|
+
getRepository(i).createDataSet(TestClass, 'id');
|
|
376
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
377
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
378
|
+
await dataSet.remove(i, 1);
|
|
379
|
+
const countValue = await dataSet.count(i);
|
|
380
|
+
expect(countValue).toBe(0);
|
|
381
|
+
});
|
|
382
|
+
});
|
|
383
|
+
it('should remove the entity if authorizeRemove returns valid result', async () => {
|
|
384
|
+
await usingAsync(new Injector(), async (i) => {
|
|
385
|
+
const authorizeRemove = vi.fn(async () => ({ isAllowed: true, message: '' }));
|
|
386
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
387
|
+
getRepository(i).createDataSet(TestClass, 'id', { authorizeRemove });
|
|
388
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
389
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
390
|
+
await dataSet.remove(i, 1);
|
|
391
|
+
const count = await dataSet.count(i);
|
|
392
|
+
expect(count).toBe(0);
|
|
393
|
+
});
|
|
394
|
+
});
|
|
395
|
+
it('should throw if authorizeRemove returns invalid result', async () => {
|
|
396
|
+
await usingAsync(new Injector(), async (i) => {
|
|
397
|
+
const authorizeRemove = vi.fn(async () => ({ isAllowed: false, message: ':(' }));
|
|
398
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
399
|
+
getRepository(i).createDataSet(TestClass, 'id', { authorizeRemove });
|
|
400
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
401
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
402
|
+
try {
|
|
403
|
+
await dataSet.remove(i, 1);
|
|
404
|
+
throw Error('Should throw');
|
|
405
|
+
}
|
|
406
|
+
catch (error) {
|
|
407
|
+
/** */
|
|
408
|
+
}
|
|
409
|
+
const count = await dataSet.count(i);
|
|
410
|
+
expect(count).toBe(1);
|
|
411
|
+
});
|
|
412
|
+
});
|
|
413
|
+
it('should remove the entity if authroizeRemoveEntity returns valid result', async () => {
|
|
414
|
+
await usingAsync(new Injector(), async (i) => {
|
|
415
|
+
const authroizeRemoveEntity = vi.fn(async () => ({ isAllowed: true, message: '' }));
|
|
416
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
417
|
+
getRepository(i).createDataSet(TestClass, 'id', { authroizeRemoveEntity });
|
|
418
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
419
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
420
|
+
await dataSet.remove(i, 1);
|
|
421
|
+
const count = await dataSet.count(i);
|
|
422
|
+
expect(count).toBe(0);
|
|
423
|
+
});
|
|
424
|
+
});
|
|
425
|
+
it('should throw if authroizeRemoveEntity returns invalid result', async () => {
|
|
426
|
+
await usingAsync(new Injector(), async (i) => {
|
|
427
|
+
const authroizeRemoveEntity = vi.fn(async () => ({ isAllowed: false, message: ':(' }));
|
|
428
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
429
|
+
getRepository(i).createDataSet(TestClass, 'id', { authroizeRemoveEntity });
|
|
430
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
431
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
432
|
+
try {
|
|
433
|
+
await dataSet.remove(i, 1);
|
|
434
|
+
throw Error('Should throw');
|
|
435
|
+
}
|
|
436
|
+
catch (error) {
|
|
437
|
+
/** */
|
|
438
|
+
}
|
|
439
|
+
const count = await dataSet.count(i);
|
|
440
|
+
expect(count).toBe(1);
|
|
441
|
+
});
|
|
442
|
+
});
|
|
443
|
+
it('should publish to the onEntityRemoved observable if an entity has been removed', async () => {
|
|
444
|
+
await usingAsync(new Injector(), async (i) => {
|
|
445
|
+
expect.assertions(1);
|
|
446
|
+
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
447
|
+
getRepository(i).createDataSet(TestClass, 'id');
|
|
448
|
+
getRepository(i)
|
|
449
|
+
.getDataSetFor(TestClass, 'id')
|
|
450
|
+
.onEntityRemoved.subscribe(({ key }) => {
|
|
451
|
+
expect(key).toEqual(1);
|
|
452
|
+
});
|
|
453
|
+
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
454
|
+
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
455
|
+
await dataSet.remove(i, 1);
|
|
456
|
+
});
|
|
457
|
+
});
|
|
458
|
+
});
|
|
459
|
+
});
|
|
460
|
+
//# sourceMappingURL=dataset.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataset.spec.js","sourceRoot":"","sources":["../src/dataset.spec.ts"],"names":[],"mappings":"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"}
|
package/esm/repository.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAGxD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEvC;;GAEG;AAEI,IAAM,UAAU,GAAhB,MAAM,UAAU;IACd,OAAO;QACZ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;QAC3C,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;IACvB,CAAC;IAEO,QAAQ,GAAgC,IAAI,GAAG,EAAE,CAAA;IAElD,aAAa,CAClB,KAAuB,EACvB,UAAuB;QAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACzC,IAAI,CAAC,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAGxD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEvC;;GAEG;AAEI,IAAM,UAAU,GAAhB,MAAM,UAAU;IACd,OAAO;QACZ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;QAC3C,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;IACvB,CAAC;IAEO,QAAQ,GAAgC,IAAI,GAAG,EAAE,CAAA;IAElD,aAAa,CAClB,KAAuB,EACvB,UAAuB;QAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,KAAK,CAAC,yBAAyB,KAAK,GAAG,CAAC,CAAA;QAChD,CAAC;QACD,IAAI,QAAQ,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YACvC,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAA;QACrC,CAAC;QACD,OAAO,QAA6D,CAAA;IACtE,CAAC;IACM,aAAa,CAClB,KAAuB,EACvB,UAAuB,EACvB,QAAmD;QAEnD,MAAM,aAAa,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;QAC9G,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC;YAC3B,GAAG,QAAQ;YACX,aAAa;SACd,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QAClC,OAAO,IAAI,CAAA;IACb,CAAC;IAGgB,YAAY,CAAe;CAC7C,CAAA;AADkB;IADhB,QAAQ,CAAC,YAAY,CAAC;8BACS,YAAY;gDAAA;AApCjC,UAAU;IADtB,UAAU,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;GACzB,UAAU,CAqCtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository.spec.d.ts","sourceRoot":"","sources":["../src/repository.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Injector } from '@furystack/inject';
|
|
2
|
+
import { using } from '@furystack/utils';
|
|
3
|
+
import { getDataSetFor, getRepository } from './helpers.js';
|
|
4
|
+
import { addStore, InMemoryStore } from '@furystack/core';
|
|
5
|
+
import { DataSet } from './data-set.js';
|
|
6
|
+
import { describe, it, expect } from 'vitest';
|
|
7
|
+
describe('Repository', () => {
|
|
8
|
+
it('Should retrieve a dataSet', () => {
|
|
9
|
+
using(new Injector(), (i) => {
|
|
10
|
+
class ExampleClass {
|
|
11
|
+
id;
|
|
12
|
+
}
|
|
13
|
+
addStore(i, new InMemoryStore({ model: ExampleClass, primaryKey: 'id' }));
|
|
14
|
+
getRepository(i).createDataSet(ExampleClass, 'id', {});
|
|
15
|
+
const dataSet = getDataSetFor(i, ExampleClass, 'id');
|
|
16
|
+
expect(dataSet).toBeInstanceOf(DataSet);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=repository.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository.spec.js","sourceRoot":"","sources":["../src/repository.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE7C,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,KAAK,CAAC,IAAI,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE;YAC1B,MAAM,YAAY;gBAChB,EAAE,CAAS;aACZ;YACD,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YACzE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;YAEtD,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,CAAA;YACpD,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@furystack/repository",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.12",
|
|
4
4
|
"description": "Repository implementation for FuryStack",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -37,13 +37,13 @@
|
|
|
37
37
|
},
|
|
38
38
|
"homepage": "https://github.com/furystack/furystack",
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@furystack/core": "^12.0.
|
|
41
|
-
"@furystack/inject": "^8.1.
|
|
42
|
-
"@furystack/utils": "^4.0.
|
|
40
|
+
"@furystack/core": "^12.0.12",
|
|
41
|
+
"@furystack/inject": "^8.1.2",
|
|
42
|
+
"@furystack/utils": "^4.0.11"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
|
-
"typescript": "^5.
|
|
46
|
-
"vitest": "^0.34.
|
|
45
|
+
"typescript": "^5.3.2",
|
|
46
|
+
"vitest": "^0.34.6"
|
|
47
47
|
},
|
|
48
48
|
"gitHead": "1045d854bfd8c475b7035471d130d401417a2321"
|
|
49
49
|
}
|
package/src/dataset.spec.ts
CHANGED
|
@@ -2,9 +2,9 @@ import { Injector } from '@furystack/inject'
|
|
|
2
2
|
import { using, usingAsync } from '@furystack/utils'
|
|
3
3
|
import type { WithOptionalId } from '@furystack/core'
|
|
4
4
|
import { InMemoryStore, addStore } from '@furystack/core'
|
|
5
|
-
import { Repository } from './repository'
|
|
6
|
-
import type { AuthorizationResult, DataSetSettings } from './data-set-setting'
|
|
7
|
-
import { getDataSetFor, getRepository } from './helpers'
|
|
5
|
+
import { Repository } from './repository.js'
|
|
6
|
+
import type { AuthorizationResult, DataSetSettings } from './data-set-setting.js'
|
|
7
|
+
import { getDataSetFor, getRepository } from './helpers.js'
|
|
8
8
|
import { describe, it, expect, vi } from 'vitest'
|
|
9
9
|
|
|
10
10
|
class TestClass {
|
package/src/repository.spec.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Injector } from '@furystack/inject'
|
|
2
2
|
import { using } from '@furystack/utils'
|
|
3
|
-
import { getDataSetFor, getRepository } from './helpers'
|
|
3
|
+
import { getDataSetFor, getRepository } from './helpers.js'
|
|
4
4
|
import { addStore, InMemoryStore } from '@furystack/core'
|
|
5
|
-
import { DataSet } from './data-set'
|
|
5
|
+
import { DataSet } from './data-set.js'
|
|
6
6
|
import { describe, it, expect } from 'vitest'
|
|
7
7
|
|
|
8
8
|
describe('Repository', () => {
|