@arrai-innovations/reactive-helpers 1.2.2 → 2.0.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/.lintstagedrc +3 -0
- package/README.md +21 -16
- package/package.json +1 -1
- package/tests/unit/crudPromise.js +23 -0
- package/tests/unit/poll.js +50 -0
- package/tests/unit/use/listInstance.spec.js +47 -89
- package/tests/unit/use/listSort.spec.js +1 -1
- package/tests/unit/use/listSubscription.spec.js +184 -104
- package/tests/unit/use/objectInstance.spec.js +156 -147
- package/tests/unit/use/objectSubscription.spec.js +144 -120
- package/tests/unit/use/watches.spec.js +2 -2
- package/use/listInstance.js +39 -28
- package/use/listSubscription.js +80 -34
- package/use/objectInstance.js +36 -45
- package/use/objectSubscription.js +66 -71
- package/use/paginatedListInstance.js +2 -2
- package/utils/cancellableIntent.js +93 -0
- package/utils/index.js +1 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import flushPromises from "flush-promises";
|
|
2
|
-
import { nextTick } from "vue";
|
|
2
|
+
import { nextTick, reactive, ref } from "vue";
|
|
3
3
|
import { assignReactiveObject } from "../../../utils";
|
|
4
4
|
import { expectErrorToBeNull } from "../expectHelpers";
|
|
5
5
|
import { inspect } from "util";
|
|
@@ -96,21 +96,25 @@ describe("use/objectInstance.js", function () {
|
|
|
96
96
|
const fields = ["id", "__str__", "name"];
|
|
97
97
|
describe("retrieve", function () {
|
|
98
98
|
it("success", async function () {
|
|
99
|
+
const id = ref(1);
|
|
100
|
+
const retrieveArgs = reactive({ fields });
|
|
99
101
|
const objectInstance = useObjectInstance({
|
|
100
102
|
crudArgs: { stream: "test_stream" },
|
|
103
|
+
id,
|
|
104
|
+
retrieveArgs,
|
|
101
105
|
});
|
|
102
|
-
objectInstance.state.
|
|
106
|
+
objectInstance.state.crud.retrieve = jest.fn();
|
|
103
107
|
let crudRetrieveResolve;
|
|
104
108
|
const crudRetrievePromise = new Promise((resolve) => {
|
|
105
109
|
crudRetrieveResolve = resolve;
|
|
106
110
|
});
|
|
107
|
-
objectInstance.state.
|
|
111
|
+
objectInstance.state.crud.retrieve.mockReturnValueOnce(crudRetrievePromise);
|
|
108
112
|
|
|
109
113
|
expectErrorToBeNull(objectInstance.state.error);
|
|
110
114
|
expect(objectInstance.state.errored).toBe(false);
|
|
111
115
|
expect(objectInstance.state.loading).toBeUndefined();
|
|
112
116
|
expect({ ...objectInstance.state.object }).toEqual({});
|
|
113
|
-
const oiRetrieveResolve = objectInstance.retrieve(
|
|
117
|
+
const oiRetrieveResolve = objectInstance.retrieve();
|
|
114
118
|
expectErrorToBeNull(objectInstance.state.error);
|
|
115
119
|
expect(objectInstance.state.errored).toBe(false);
|
|
116
120
|
expect(objectInstance.state.loading).toBe(true);
|
|
@@ -122,31 +126,34 @@ describe("use/objectInstance.js", function () {
|
|
|
122
126
|
expect(objectInstance.state.errored).toBe(false);
|
|
123
127
|
expect(objectInstance.state.loading).toBe(false);
|
|
124
128
|
expect({ ...objectInstance.state.object }).toEqual(crudRetrieveResolved);
|
|
125
|
-
expect(objectInstance.state.
|
|
129
|
+
expect(objectInstance.state.crud.retrieve).toHaveBeenCalledWith({
|
|
126
130
|
crudArgs: { stream: "test_stream" },
|
|
127
131
|
id: 1,
|
|
128
132
|
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
129
133
|
});
|
|
130
|
-
expect(objectInstance.state.
|
|
134
|
+
expect(objectInstance.state.crud.retrieve).toHaveBeenCalledTimes(1);
|
|
131
135
|
await nextTick();
|
|
132
136
|
await expect(oiRetrieveResolve).resolves.toBe(true);
|
|
133
137
|
});
|
|
134
|
-
it("success (
|
|
138
|
+
it("success (retrieveArgs)", async function () {
|
|
139
|
+
const id = ref(1);
|
|
140
|
+
const retrieveArgs = reactive({ fields });
|
|
135
141
|
const objectInstance = useObjectInstance({
|
|
136
142
|
crudArgs: { stream: "test_stream" },
|
|
137
|
-
|
|
143
|
+
id,
|
|
144
|
+
retrieveArgs,
|
|
138
145
|
});
|
|
139
|
-
objectInstance.state.
|
|
146
|
+
objectInstance.state.crud.retrieve = jest.fn();
|
|
140
147
|
let crudRetrieveResolve;
|
|
141
148
|
const crudRetrievePromise = new Promise((resolve) => {
|
|
142
149
|
crudRetrieveResolve = resolve;
|
|
143
150
|
});
|
|
144
|
-
objectInstance.state.
|
|
151
|
+
objectInstance.state.crud.retrieve.mockReturnValueOnce(crudRetrievePromise);
|
|
145
152
|
expectErrorToBeNull(objectInstance.state.error);
|
|
146
153
|
expect(objectInstance.state.errored).toBe(false);
|
|
147
154
|
expect(objectInstance.state.loading).toBeUndefined();
|
|
148
155
|
expect({ ...objectInstance.state.object }).toEqual({});
|
|
149
|
-
const oiRetrieveResolve = objectInstance.retrieve(
|
|
156
|
+
const oiRetrieveResolve = objectInstance.retrieve();
|
|
150
157
|
expectErrorToBeNull(objectInstance.state.error);
|
|
151
158
|
expect(objectInstance.state.errored).toBe(false);
|
|
152
159
|
expect(objectInstance.state.loading).toBe(true);
|
|
@@ -157,30 +164,34 @@ describe("use/objectInstance.js", function () {
|
|
|
157
164
|
expect(objectInstance.state.errored).toBe(false);
|
|
158
165
|
expect(objectInstance.state.loading).toBe(false);
|
|
159
166
|
expect({ ...objectInstance.state.object }).toEqual(crudRetrieveResolved);
|
|
160
|
-
expect(objectInstance.state.
|
|
167
|
+
expect(objectInstance.state.crud.retrieve).toHaveBeenCalledWith({
|
|
161
168
|
crudArgs: { stream: "test_stream" },
|
|
162
169
|
id: 1,
|
|
163
170
|
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
164
171
|
});
|
|
165
|
-
expect(objectInstance.state.
|
|
172
|
+
expect(objectInstance.state.crud.retrieve).toHaveBeenCalledTimes(1);
|
|
166
173
|
const returnValue = await oiRetrieveResolve;
|
|
167
174
|
expect(returnValue).toBe(true);
|
|
168
175
|
});
|
|
169
176
|
it("errored", async function () {
|
|
177
|
+
const id = ref(1);
|
|
178
|
+
const retrieveArgs = reactive({ fields });
|
|
170
179
|
const objectInstance = useObjectInstance({
|
|
171
180
|
crudArgs: { stream: "test_stream" },
|
|
181
|
+
id,
|
|
182
|
+
retrieveArgs,
|
|
172
183
|
});
|
|
173
|
-
objectInstance.state.
|
|
184
|
+
objectInstance.state.crud.retrieve = jest.fn();
|
|
174
185
|
let crudRetrieveReject;
|
|
175
186
|
const crudRetrievePromise = new Promise((resolve, reject) => {
|
|
176
187
|
crudRetrieveReject = reject;
|
|
177
188
|
});
|
|
178
|
-
objectInstance.state.
|
|
189
|
+
objectInstance.state.crud.retrieve.mockReturnValueOnce(crudRetrievePromise);
|
|
179
190
|
expectErrorToBeNull(objectInstance.state.error);
|
|
180
191
|
expect(objectInstance.state.errored).toBe(false);
|
|
181
192
|
expect(objectInstance.state.loading).toBeUndefined();
|
|
182
193
|
expect({ ...objectInstance.state.object }).toEqual({});
|
|
183
|
-
const oiRetrieveResolve = objectInstance.retrieve(
|
|
194
|
+
const oiRetrieveResolve = objectInstance.retrieve();
|
|
184
195
|
expectErrorToBeNull(objectInstance.state.error);
|
|
185
196
|
expect(objectInstance.state.errored).toBe(false);
|
|
186
197
|
expect(objectInstance.state.loading).toBe(true);
|
|
@@ -191,33 +202,37 @@ describe("use/objectInstance.js", function () {
|
|
|
191
202
|
expect(objectInstance.state.errored).toBe(true);
|
|
192
203
|
expect(objectInstance.state.loading).toBe(false);
|
|
193
204
|
expect({ ...objectInstance.state.object }).toEqual({});
|
|
194
|
-
expect(objectInstance.state.
|
|
205
|
+
expect(objectInstance.state.crud.retrieve).toHaveBeenCalledWith({
|
|
195
206
|
crudArgs: { stream: "test_stream" },
|
|
196
207
|
id: 1,
|
|
197
208
|
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
198
209
|
});
|
|
199
|
-
expect(objectInstance.state.
|
|
210
|
+
expect(objectInstance.state.crud.retrieve).toHaveBeenCalledTimes(1);
|
|
200
211
|
const returnValue = await oiRetrieveResolve;
|
|
201
212
|
expect(returnValue).toBe(false);
|
|
202
213
|
});
|
|
203
214
|
it("already loading", async function () {
|
|
215
|
+
const id = ref(1);
|
|
216
|
+
const retrieveArgs = reactive({ fields });
|
|
204
217
|
const objectInstance = useObjectInstance({
|
|
205
218
|
crudArgs: { stream: "test_stream" },
|
|
219
|
+
id,
|
|
220
|
+
retrieveArgs,
|
|
206
221
|
});
|
|
207
|
-
objectInstance.state.
|
|
208
|
-
objectInstance.state.
|
|
222
|
+
objectInstance.state.crud.retrieve = jest.fn();
|
|
223
|
+
objectInstance.state.crud.retrieve.mockImplementation(() => new Promise(() => {}));
|
|
209
224
|
expectErrorToBeNull(objectInstance.state.error);
|
|
210
225
|
expect(objectInstance.state.errored).toBe(false);
|
|
211
226
|
expect(objectInstance.state.loading).toBeUndefined();
|
|
212
227
|
expect({ ...objectInstance.state.object }).toEqual({});
|
|
213
|
-
objectInstance.retrieve(
|
|
214
|
-
await expect(() => objectInstance.retrieve(
|
|
215
|
-
expect(objectInstance.state.
|
|
228
|
+
objectInstance.retrieve();
|
|
229
|
+
await expect(() => objectInstance.retrieve()).rejects.toThrow(ObjectError);
|
|
230
|
+
expect(objectInstance.state.crud.retrieve).toHaveBeenCalledWith({
|
|
216
231
|
crudArgs: { stream: "test_stream" },
|
|
217
232
|
id: 1,
|
|
218
233
|
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
219
234
|
});
|
|
220
|
-
expect(objectInstance.state.
|
|
235
|
+
expect(objectInstance.state.crud.retrieve).toHaveBeenCalledTimes(1);
|
|
221
236
|
expectErrorToBeNull(objectInstance.state.error);
|
|
222
237
|
expect(objectInstance.state.errored).toBe(false);
|
|
223
238
|
expect(objectInstance.state.loading).toBe(true);
|
|
@@ -226,15 +241,19 @@ describe("use/objectInstance.js", function () {
|
|
|
226
241
|
});
|
|
227
242
|
describe("create", function () {
|
|
228
243
|
it("success", async function () {
|
|
244
|
+
const id = ref(1);
|
|
245
|
+
const retrieveArgs = reactive({ fields });
|
|
229
246
|
const objectInstance = useObjectInstance({
|
|
230
247
|
crudArgs: { stream: "test_stream" },
|
|
248
|
+
id,
|
|
249
|
+
retrieveArgs,
|
|
231
250
|
});
|
|
232
|
-
objectInstance.state.
|
|
251
|
+
objectInstance.state.crud.create = jest.fn();
|
|
233
252
|
let crudCreateResolve;
|
|
234
253
|
const crudCreatePromise = new Promise((resolve) => {
|
|
235
254
|
crudCreateResolve = resolve;
|
|
236
255
|
});
|
|
237
|
-
objectInstance.state.
|
|
256
|
+
objectInstance.state.crud.create.mockReturnValueOnce(crudCreatePromise);
|
|
238
257
|
expectErrorToBeNull(objectInstance.state.error);
|
|
239
258
|
expect(objectInstance.state.errored).toBe(false);
|
|
240
259
|
expect(objectInstance.state.loading).toBeUndefined();
|
|
@@ -256,7 +275,7 @@ describe("use/objectInstance.js", function () {
|
|
|
256
275
|
expect(objectInstance.state.errored).toBe(false);
|
|
257
276
|
expect(objectInstance.state.loading).toBe(false);
|
|
258
277
|
expect({ ...objectInstance.state.object }).toEqual(crudCreateResolved);
|
|
259
|
-
expect(objectInstance.state.
|
|
278
|
+
expect(objectInstance.state.crud.create).toHaveBeenCalledWith({
|
|
260
279
|
crudArgs: {
|
|
261
280
|
stream: "test_stream",
|
|
262
281
|
},
|
|
@@ -265,21 +284,24 @@ describe("use/objectInstance.js", function () {
|
|
|
265
284
|
},
|
|
266
285
|
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
267
286
|
});
|
|
268
|
-
expect(objectInstance.state.
|
|
287
|
+
expect(objectInstance.state.crud.create).toHaveBeenCalledTimes(1);
|
|
269
288
|
await nextTick();
|
|
270
289
|
await expect(oiCreateResolve).resolves.toBe(true);
|
|
271
290
|
});
|
|
272
|
-
it("success (
|
|
291
|
+
it("success (retrieveArgs)", async function () {
|
|
292
|
+
const id = ref(undefined);
|
|
293
|
+
const retrieveArgs = reactive({ fields });
|
|
273
294
|
const objectInstance = useObjectInstance({
|
|
274
295
|
crudArgs: { stream: "test_stream" },
|
|
275
|
-
|
|
296
|
+
id,
|
|
297
|
+
retrieveArgs,
|
|
276
298
|
});
|
|
277
|
-
objectInstance.state.
|
|
299
|
+
objectInstance.state.crud.create = jest.fn();
|
|
278
300
|
let crudCreateResolve;
|
|
279
301
|
const crudCreatePromise = new Promise((resolve) => {
|
|
280
302
|
crudCreateResolve = resolve;
|
|
281
303
|
});
|
|
282
|
-
objectInstance.state.
|
|
304
|
+
objectInstance.state.crud.create.mockReturnValueOnce(crudCreatePromise);
|
|
283
305
|
expectErrorToBeNull(objectInstance.state.error);
|
|
284
306
|
expect(objectInstance.state.errored).toBe(false);
|
|
285
307
|
expect(objectInstance.state.loading).toBeUndefined();
|
|
@@ -299,7 +321,7 @@ describe("use/objectInstance.js", function () {
|
|
|
299
321
|
expect(objectInstance.state.errored).toBe(false);
|
|
300
322
|
expect(objectInstance.state.loading).toBe(false);
|
|
301
323
|
expect({ ...objectInstance.state.object }).toEqual(crudCreateResolved);
|
|
302
|
-
expect(objectInstance.state.
|
|
324
|
+
expect(objectInstance.state.crud.create).toHaveBeenCalledWith({
|
|
303
325
|
crudArgs: {
|
|
304
326
|
stream: "test_stream",
|
|
305
327
|
},
|
|
@@ -308,20 +330,24 @@ describe("use/objectInstance.js", function () {
|
|
|
308
330
|
},
|
|
309
331
|
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
310
332
|
});
|
|
311
|
-
expect(objectInstance.state.
|
|
333
|
+
expect(objectInstance.state.crud.create).toHaveBeenCalledTimes(1);
|
|
312
334
|
const returnValue = await oiCreateResolve;
|
|
313
335
|
expect(returnValue).toBe(true);
|
|
314
336
|
});
|
|
315
337
|
it("errored", async function () {
|
|
338
|
+
const id = ref(undefined);
|
|
339
|
+
const retrieveArgs = reactive({ fields });
|
|
316
340
|
const objectInstance = useObjectInstance({
|
|
317
341
|
crudArgs: { stream: "test_stream" },
|
|
342
|
+
id,
|
|
343
|
+
retrieveArgs,
|
|
318
344
|
});
|
|
319
|
-
objectInstance.state.
|
|
345
|
+
objectInstance.state.crud.create = jest.fn();
|
|
320
346
|
let crudCreateReject;
|
|
321
347
|
const crudCreatePromise = new Promise((resolve, reject) => {
|
|
322
348
|
crudCreateReject = reject;
|
|
323
349
|
});
|
|
324
|
-
objectInstance.state.
|
|
350
|
+
objectInstance.state.crud.create.mockReturnValueOnce(crudCreatePromise);
|
|
325
351
|
expectErrorToBeNull(objectInstance.state.error);
|
|
326
352
|
expect(objectInstance.state.errored).toBe(false);
|
|
327
353
|
expect(objectInstance.state.loading).toBeUndefined();
|
|
@@ -342,7 +368,7 @@ describe("use/objectInstance.js", function () {
|
|
|
342
368
|
expect(objectInstance.state.errored).toBe(true);
|
|
343
369
|
expect(objectInstance.state.loading).toBe(false);
|
|
344
370
|
expect({ ...objectInstance.state.object }).toEqual({});
|
|
345
|
-
expect(objectInstance.state.
|
|
371
|
+
expect(objectInstance.state.crud.create).toHaveBeenCalledWith({
|
|
346
372
|
crudArgs: {
|
|
347
373
|
stream: "test_stream",
|
|
348
374
|
},
|
|
@@ -351,17 +377,21 @@ describe("use/objectInstance.js", function () {
|
|
|
351
377
|
},
|
|
352
378
|
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
353
379
|
});
|
|
354
|
-
expect(objectInstance.state.
|
|
380
|
+
expect(objectInstance.state.crud.create).toHaveBeenCalledTimes(1);
|
|
355
381
|
const returnValue = await oiCreateResolve;
|
|
356
382
|
expect(returnValue).toBe(false);
|
|
357
383
|
});
|
|
358
384
|
it("already loading", async function () {
|
|
385
|
+
const id = ref(1);
|
|
386
|
+
const retrieveArgs = reactive({ fields });
|
|
359
387
|
const objectInstance = useObjectInstance({
|
|
360
388
|
crudArgs: { stream: "test_stream" },
|
|
389
|
+
id,
|
|
390
|
+
retrieveArgs,
|
|
361
391
|
});
|
|
362
|
-
objectInstance.state.
|
|
392
|
+
objectInstance.state.crud.create = jest.fn();
|
|
363
393
|
const crudCreatePromise = new Promise(() => {});
|
|
364
|
-
objectInstance.state.
|
|
394
|
+
objectInstance.state.crud.create.mockReturnValueOnce(crudCreatePromise);
|
|
365
395
|
expectErrorToBeNull(objectInstance.state.error);
|
|
366
396
|
expect(objectInstance.state.errored).toBe(false);
|
|
367
397
|
expect(objectInstance.state.loading).toBeUndefined();
|
|
@@ -370,17 +400,15 @@ describe("use/objectInstance.js", function () {
|
|
|
370
400
|
object: {
|
|
371
401
|
name: "qwer",
|
|
372
402
|
},
|
|
373
|
-
fields,
|
|
374
403
|
});
|
|
375
404
|
await expect(() =>
|
|
376
405
|
objectInstance.create({
|
|
377
406
|
object: {
|
|
378
407
|
name: "qwer",
|
|
379
408
|
},
|
|
380
|
-
fields,
|
|
381
409
|
})
|
|
382
410
|
).rejects.toThrow(ObjectError);
|
|
383
|
-
expect(objectInstance.state.
|
|
411
|
+
expect(objectInstance.state.crud.create).toHaveBeenCalledWith({
|
|
384
412
|
crudArgs: {
|
|
385
413
|
stream: "test_stream",
|
|
386
414
|
},
|
|
@@ -389,7 +417,7 @@ describe("use/objectInstance.js", function () {
|
|
|
389
417
|
},
|
|
390
418
|
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
391
419
|
});
|
|
392
|
-
expect(objectInstance.state.
|
|
420
|
+
expect(objectInstance.state.crud.create).toHaveBeenCalledTimes(1);
|
|
393
421
|
expectErrorToBeNull(objectInstance.state.error);
|
|
394
422
|
expect(objectInstance.state.errored).toBe(false);
|
|
395
423
|
expect(objectInstance.state.loading).toBe(true);
|
|
@@ -398,15 +426,19 @@ describe("use/objectInstance.js", function () {
|
|
|
398
426
|
});
|
|
399
427
|
describe("update", function () {
|
|
400
428
|
it("success", async function () {
|
|
429
|
+
const id = ref(1);
|
|
430
|
+
const retrieveArgs = reactive({ fields });
|
|
401
431
|
const objectInstance = useObjectInstance({
|
|
402
432
|
crudArgs: { stream: "test_stream" },
|
|
433
|
+
id,
|
|
434
|
+
retrieveArgs,
|
|
403
435
|
});
|
|
404
436
|
let crudUpdateResolve;
|
|
405
437
|
const crudUpdatePromise = new Promise((resolve) => {
|
|
406
438
|
crudUpdateResolve = resolve;
|
|
407
439
|
});
|
|
408
|
-
objectInstance.state.
|
|
409
|
-
objectInstance.state.
|
|
440
|
+
objectInstance.state.crud.update = jest.fn();
|
|
441
|
+
objectInstance.state.crud.update.mockReturnValueOnce(crudUpdatePromise);
|
|
410
442
|
expectErrorToBeNull(objectInstance.state.error);
|
|
411
443
|
expect(objectInstance.state.errored).toBe(false);
|
|
412
444
|
expect(objectInstance.state.loading).toBeUndefined();
|
|
@@ -416,7 +448,6 @@ describe("use/objectInstance.js", function () {
|
|
|
416
448
|
id: 1,
|
|
417
449
|
name: "zxcv!",
|
|
418
450
|
},
|
|
419
|
-
fields,
|
|
420
451
|
});
|
|
421
452
|
expectErrorToBeNull(objectInstance.state.error);
|
|
422
453
|
expect(objectInstance.state.errored).toBe(false);
|
|
@@ -431,7 +462,7 @@ describe("use/objectInstance.js", function () {
|
|
|
431
462
|
expect({ ...objectInstance.state.object }).toEqual(crudUpdateResolved);
|
|
432
463
|
await nextTick();
|
|
433
464
|
await expect(oiUpdatePromise).resolves.toBe(true);
|
|
434
|
-
expect(objectInstance.state.
|
|
465
|
+
expect(objectInstance.state.crud.update).toHaveBeenCalledWith({
|
|
435
466
|
crudArgs: {
|
|
436
467
|
stream: "test_stream",
|
|
437
468
|
},
|
|
@@ -441,19 +472,22 @@ describe("use/objectInstance.js", function () {
|
|
|
441
472
|
},
|
|
442
473
|
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
443
474
|
});
|
|
444
|
-
expect(objectInstance.state.
|
|
475
|
+
expect(objectInstance.state.crud.update).toHaveBeenCalledTimes(1);
|
|
445
476
|
});
|
|
446
|
-
it("success (
|
|
477
|
+
it("success (retrieveArgs)", async function () {
|
|
478
|
+
const id = ref(1);
|
|
479
|
+
const retrieveArgs = reactive({ fields });
|
|
447
480
|
const objectInstance = useObjectInstance({
|
|
448
481
|
crudArgs: { stream: "test_stream" },
|
|
449
|
-
|
|
482
|
+
id,
|
|
483
|
+
retrieveArgs,
|
|
450
484
|
});
|
|
451
485
|
let crudUpdateResolve;
|
|
452
486
|
const crudUpdatePromise = new Promise((resolve) => {
|
|
453
487
|
crudUpdateResolve = resolve;
|
|
454
488
|
});
|
|
455
|
-
objectInstance.state.
|
|
456
|
-
objectInstance.state.
|
|
489
|
+
objectInstance.state.crud.update = jest.fn();
|
|
490
|
+
objectInstance.state.crud.update.mockReturnValueOnce(crudUpdatePromise);
|
|
457
491
|
expectErrorToBeNull(objectInstance.state.error);
|
|
458
492
|
expect(objectInstance.state.errored).toBe(false);
|
|
459
493
|
expect(objectInstance.state.loading).toBeUndefined();
|
|
@@ -475,7 +509,7 @@ describe("use/objectInstance.js", function () {
|
|
|
475
509
|
expect(objectInstance.state.loading).toBe(false);
|
|
476
510
|
expect({ ...objectInstance.state.object }).toEqual(crudUpdateResolved);
|
|
477
511
|
await expect(oiUpdatePromise).resolves.toBe(true);
|
|
478
|
-
expect(objectInstance.state.
|
|
512
|
+
expect(objectInstance.state.crud.update).toHaveBeenCalledWith({
|
|
479
513
|
crudArgs: {
|
|
480
514
|
stream: "test_stream",
|
|
481
515
|
},
|
|
@@ -485,18 +519,22 @@ describe("use/objectInstance.js", function () {
|
|
|
485
519
|
},
|
|
486
520
|
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
487
521
|
});
|
|
488
|
-
expect(objectInstance.state.
|
|
522
|
+
expect(objectInstance.state.crud.update).toHaveBeenCalledTimes(1);
|
|
489
523
|
});
|
|
490
524
|
it("errored", async function () {
|
|
525
|
+
const id = ref(1);
|
|
526
|
+
const retrieveArgs = reactive({ fields });
|
|
491
527
|
const objectInstance = useObjectInstance({
|
|
492
528
|
crudArgs: { stream: "test_stream" },
|
|
529
|
+
id,
|
|
530
|
+
retrieveArgs,
|
|
493
531
|
});
|
|
494
532
|
let crudUpdateReject;
|
|
495
533
|
const crudUpdatePromise = new Promise((resolve, reject) => {
|
|
496
534
|
crudUpdateReject = reject;
|
|
497
535
|
});
|
|
498
|
-
objectInstance.state.
|
|
499
|
-
objectInstance.state.
|
|
536
|
+
objectInstance.state.crud.update = jest.fn();
|
|
537
|
+
objectInstance.state.crud.update.mockReturnValueOnce(crudUpdatePromise);
|
|
500
538
|
expectErrorToBeNull(objectInstance.state.error);
|
|
501
539
|
expect(objectInstance.state.errored).toBe(false);
|
|
502
540
|
expect(objectInstance.state.loading).toBeUndefined();
|
|
@@ -506,7 +544,6 @@ describe("use/objectInstance.js", function () {
|
|
|
506
544
|
id: 1,
|
|
507
545
|
name: "zxcv!",
|
|
508
546
|
},
|
|
509
|
-
fields,
|
|
510
547
|
});
|
|
511
548
|
expectErrorToBeNull(objectInstance.state.error);
|
|
512
549
|
expect(objectInstance.state.errored).toBe(false);
|
|
@@ -519,7 +556,7 @@ describe("use/objectInstance.js", function () {
|
|
|
519
556
|
expect(objectInstance.state.loading).toBe(false);
|
|
520
557
|
expect({ ...objectInstance.state.object }).toEqual({});
|
|
521
558
|
await expect(oiUpdatePromise).resolves.toBe(false);
|
|
522
|
-
expect(objectInstance.state.
|
|
559
|
+
expect(objectInstance.state.crud.update).toHaveBeenCalledWith({
|
|
523
560
|
crudArgs: {
|
|
524
561
|
stream: "test_stream",
|
|
525
562
|
},
|
|
@@ -529,15 +566,19 @@ describe("use/objectInstance.js", function () {
|
|
|
529
566
|
},
|
|
530
567
|
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
531
568
|
});
|
|
532
|
-
expect(objectInstance.state.
|
|
569
|
+
expect(objectInstance.state.crud.update).toHaveBeenCalledTimes(1);
|
|
533
570
|
});
|
|
534
571
|
it("already loading", async function () {
|
|
572
|
+
const id = ref(1);
|
|
573
|
+
const retrieveArgs = reactive({ fields });
|
|
535
574
|
const objectInstance = useObjectInstance({
|
|
536
575
|
crudArgs: { stream: "test_stream" },
|
|
576
|
+
id,
|
|
577
|
+
retrieveArgs,
|
|
537
578
|
});
|
|
538
579
|
const crudUpdatePromise = new Promise(() => {});
|
|
539
|
-
objectInstance.state.
|
|
540
|
-
objectInstance.state.
|
|
580
|
+
objectInstance.state.crud.update = jest.fn();
|
|
581
|
+
objectInstance.state.crud.update.mockReturnValueOnce(crudUpdatePromise);
|
|
541
582
|
expectErrorToBeNull(objectInstance.state.error);
|
|
542
583
|
expect(objectInstance.state.errored).toBe(false);
|
|
543
584
|
expect(objectInstance.state.loading).toBeUndefined();
|
|
@@ -547,7 +588,6 @@ describe("use/objectInstance.js", function () {
|
|
|
547
588
|
id: 1,
|
|
548
589
|
name: "zxcv!",
|
|
549
590
|
},
|
|
550
|
-
fields,
|
|
551
591
|
});
|
|
552
592
|
await expect(() =>
|
|
553
593
|
objectInstance.update({
|
|
@@ -555,14 +595,13 @@ describe("use/objectInstance.js", function () {
|
|
|
555
595
|
id: 1,
|
|
556
596
|
name: "zxcv!",
|
|
557
597
|
},
|
|
558
|
-
fields,
|
|
559
598
|
})
|
|
560
599
|
).rejects.toThrow(ObjectError);
|
|
561
600
|
expectErrorToBeNull(objectInstance.state.error);
|
|
562
601
|
expect(objectInstance.state.errored).toBe(false);
|
|
563
602
|
expect(objectInstance.state.loading).toBe(true);
|
|
564
603
|
expect({ ...objectInstance.state.object }).toEqual({});
|
|
565
|
-
expect(objectInstance.state.
|
|
604
|
+
expect(objectInstance.state.crud.update).toHaveBeenCalledWith({
|
|
566
605
|
crudArgs: {
|
|
567
606
|
stream: "test_stream",
|
|
568
607
|
},
|
|
@@ -572,31 +611,33 @@ describe("use/objectInstance.js", function () {
|
|
|
572
611
|
},
|
|
573
612
|
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
574
613
|
});
|
|
575
|
-
expect(objectInstance.state.
|
|
614
|
+
expect(objectInstance.state.crud.update).toHaveBeenCalledTimes(1);
|
|
576
615
|
});
|
|
577
616
|
});
|
|
578
617
|
describe("patch", function () {
|
|
579
618
|
it("success", async function () {
|
|
619
|
+
const id = ref(1);
|
|
620
|
+
const retrieveArgs = reactive({ fields });
|
|
580
621
|
const objectInstance = useObjectInstance({
|
|
581
622
|
crudArgs: { stream: "test_stream" },
|
|
623
|
+
id,
|
|
624
|
+
retrieveArgs,
|
|
582
625
|
});
|
|
583
626
|
let crudPatchResolve;
|
|
584
627
|
const crudPatchPromise = new Promise((resolve) => {
|
|
585
628
|
crudPatchResolve = resolve;
|
|
586
629
|
});
|
|
587
|
-
objectInstance.state.
|
|
588
|
-
objectInstance.state.
|
|
630
|
+
objectInstance.state.crud.patch = jest.fn();
|
|
631
|
+
objectInstance.state.crud.patch.mockReturnValueOnce(crudPatchPromise);
|
|
589
632
|
expectErrorToBeNull(objectInstance.state.error);
|
|
590
633
|
expect(objectInstance.state.errored).toBe(false);
|
|
591
634
|
expect(objectInstance.state.loading).toBeUndefined();
|
|
592
635
|
expect({ ...objectInstance.state.object }).toEqual({});
|
|
593
636
|
const oiPatchPromise = objectInstance.patch({
|
|
594
|
-
id: 1,
|
|
595
637
|
partialObject: {
|
|
596
638
|
id: 1,
|
|
597
639
|
name: "zxcv!",
|
|
598
640
|
},
|
|
599
|
-
fields,
|
|
600
641
|
});
|
|
601
642
|
expectErrorToBeNull(objectInstance.state.error);
|
|
602
643
|
expect(objectInstance.state.errored).toBe(false);
|
|
@@ -611,53 +652,7 @@ describe("use/objectInstance.js", function () {
|
|
|
611
652
|
expect({ ...objectInstance.state.object }).toEqual(crudPatchResolved);
|
|
612
653
|
await nextTick();
|
|
613
654
|
await expect(oiPatchPromise).resolves.toBe(true);
|
|
614
|
-
expect(objectInstance.state.
|
|
615
|
-
crudArgs: {
|
|
616
|
-
stream: "test_stream",
|
|
617
|
-
},
|
|
618
|
-
id: 1,
|
|
619
|
-
partialObject: {
|
|
620
|
-
id: 1,
|
|
621
|
-
name: "zxcv!",
|
|
622
|
-
},
|
|
623
|
-
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
624
|
-
});
|
|
625
|
-
expect(objectInstance.state.objectInstanceCrud.patch).toHaveBeenCalledTimes(1);
|
|
626
|
-
});
|
|
627
|
-
it("success (defaultRetrieveArgs)", async function () {
|
|
628
|
-
const objectInstance = useObjectInstance({
|
|
629
|
-
crudArgs: { stream: "test_stream" },
|
|
630
|
-
retrieveArgs: { fields },
|
|
631
|
-
});
|
|
632
|
-
let crudPatchResolve;
|
|
633
|
-
const crudPatchPromise = new Promise((resolve) => {
|
|
634
|
-
crudPatchResolve = resolve;
|
|
635
|
-
});
|
|
636
|
-
objectInstance.state.objectInstanceCrud.patch = jest.fn();
|
|
637
|
-
objectInstance.state.objectInstanceCrud.patch.mockReturnValueOnce(crudPatchPromise);
|
|
638
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
639
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
640
|
-
expect(objectInstance.state.loading).toBeUndefined();
|
|
641
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
642
|
-
const oiPatchPromise = objectInstance.patch({
|
|
643
|
-
id: 1,
|
|
644
|
-
partialObject: {
|
|
645
|
-
id: 1,
|
|
646
|
-
name: "zxcv!",
|
|
647
|
-
},
|
|
648
|
-
});
|
|
649
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
650
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
651
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
652
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
653
|
-
crudPatchResolve(crudPatchResolved);
|
|
654
|
-
await flushPromises();
|
|
655
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
656
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
657
|
-
expect(objectInstance.state.loading).toBe(false);
|
|
658
|
-
expect({ ...objectInstance.state.object }).toEqual(crudPatchResolved);
|
|
659
|
-
await expect(oiPatchPromise).resolves.toBe(true);
|
|
660
|
-
expect(objectInstance.state.objectInstanceCrud.patch).toHaveBeenCalledWith({
|
|
655
|
+
expect(objectInstance.state.crud.patch).toHaveBeenCalledWith({
|
|
661
656
|
crudArgs: {
|
|
662
657
|
stream: "test_stream",
|
|
663
658
|
},
|
|
@@ -668,29 +663,31 @@ describe("use/objectInstance.js", function () {
|
|
|
668
663
|
},
|
|
669
664
|
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
670
665
|
});
|
|
671
|
-
expect(objectInstance.state.
|
|
666
|
+
expect(objectInstance.state.crud.patch).toHaveBeenCalledTimes(1);
|
|
672
667
|
});
|
|
673
668
|
it("errored", async function () {
|
|
669
|
+
const id = ref(1);
|
|
670
|
+
const retrieveArgs = reactive({ fields });
|
|
674
671
|
const objectInstance = useObjectInstance({
|
|
675
672
|
crudArgs: { stream: "test_stream" },
|
|
673
|
+
id,
|
|
674
|
+
retrieveArgs,
|
|
676
675
|
});
|
|
677
676
|
let crudPatchReject;
|
|
678
677
|
const crudPatchPromise = new Promise((resolve, reject) => {
|
|
679
678
|
crudPatchReject = reject;
|
|
680
679
|
});
|
|
681
|
-
objectInstance.state.
|
|
682
|
-
objectInstance.state.
|
|
680
|
+
objectInstance.state.crud.patch = jest.fn();
|
|
681
|
+
objectInstance.state.crud.patch.mockReturnValueOnce(crudPatchPromise);
|
|
683
682
|
expectErrorToBeNull(objectInstance.state.error);
|
|
684
683
|
expect(objectInstance.state.errored).toBe(false);
|
|
685
684
|
expect(objectInstance.state.loading).toBeUndefined();
|
|
686
685
|
expect({ ...objectInstance.state.object }).toEqual({});
|
|
687
686
|
const oiPatchPromise = objectInstance.patch({
|
|
688
|
-
id: 1,
|
|
689
687
|
partialObject: {
|
|
690
688
|
id: 1,
|
|
691
689
|
name: "zxcv!",
|
|
692
690
|
},
|
|
693
|
-
fields,
|
|
694
691
|
});
|
|
695
692
|
expectErrorToBeNull(objectInstance.state.error);
|
|
696
693
|
expect(objectInstance.state.errored).toBe(false);
|
|
@@ -703,7 +700,7 @@ describe("use/objectInstance.js", function () {
|
|
|
703
700
|
expect(objectInstance.state.loading).toBe(false);
|
|
704
701
|
expect({ ...objectInstance.state.object }).toEqual({});
|
|
705
702
|
await expect(oiPatchPromise).resolves.toBe(false);
|
|
706
|
-
expect(objectInstance.state.
|
|
703
|
+
expect(objectInstance.state.crud.patch).toHaveBeenCalledWith({
|
|
707
704
|
crudArgs: {
|
|
708
705
|
stream: "test_stream",
|
|
709
706
|
},
|
|
@@ -714,34 +711,34 @@ describe("use/objectInstance.js", function () {
|
|
|
714
711
|
},
|
|
715
712
|
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
716
713
|
});
|
|
717
|
-
expect(objectInstance.state.
|
|
714
|
+
expect(objectInstance.state.crud.patch).toHaveBeenCalledTimes(1);
|
|
718
715
|
});
|
|
719
716
|
it("already loading", async function () {
|
|
717
|
+
const id = ref(1);
|
|
718
|
+
const retrieveArgs = reactive({ fields });
|
|
720
719
|
const objectInstance = useObjectInstance({
|
|
721
720
|
crudArgs: { stream: "test_stream" },
|
|
721
|
+
id,
|
|
722
|
+
retrieveArgs,
|
|
722
723
|
});
|
|
723
724
|
const crudPatchPromise = new Promise(() => {});
|
|
724
|
-
objectInstance.state.
|
|
725
|
-
objectInstance.state.
|
|
725
|
+
objectInstance.state.crud.patch = jest.fn();
|
|
726
|
+
objectInstance.state.crud.patch.mockReturnValueOnce(crudPatchPromise);
|
|
726
727
|
objectInstance.patch({
|
|
727
|
-
id: 1,
|
|
728
728
|
partialObject: {
|
|
729
729
|
id: 1,
|
|
730
730
|
name: "zxcv!",
|
|
731
731
|
},
|
|
732
|
-
fields,
|
|
733
732
|
});
|
|
734
733
|
await expect(() =>
|
|
735
734
|
objectInstance.patch({
|
|
736
|
-
id: 1,
|
|
737
735
|
partialObject: {
|
|
738
736
|
id: 1,
|
|
739
737
|
name: "zxcv!",
|
|
740
738
|
},
|
|
741
|
-
fields,
|
|
742
739
|
})
|
|
743
740
|
).rejects.toThrow(ObjectError);
|
|
744
|
-
expect(objectInstance.state.
|
|
741
|
+
expect(objectInstance.state.crud.patch).toHaveBeenCalledWith({
|
|
745
742
|
crudArgs: {
|
|
746
743
|
stream: "test_stream",
|
|
747
744
|
},
|
|
@@ -752,21 +749,25 @@ describe("use/objectInstance.js", function () {
|
|
|
752
749
|
},
|
|
753
750
|
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
754
751
|
});
|
|
755
|
-
expect(objectInstance.state.
|
|
752
|
+
expect(objectInstance.state.crud.patch).toHaveBeenCalledTimes(1);
|
|
756
753
|
});
|
|
757
754
|
});
|
|
758
755
|
describe("delete", function () {
|
|
759
756
|
it("success", async function () {
|
|
757
|
+
const id = ref(1);
|
|
758
|
+
const retrieveArgs = reactive({ fields });
|
|
760
759
|
const objectInstance = useObjectInstance({
|
|
761
760
|
crudArgs: { stream: "test_stream" },
|
|
761
|
+
id,
|
|
762
|
+
retrieveArgs,
|
|
762
763
|
});
|
|
763
764
|
assignReactiveObject(objectInstance.state.object, crudRetrieveResolved);
|
|
764
765
|
let deleteResolve;
|
|
765
766
|
const deletePromise = new Promise((resolve) => {
|
|
766
767
|
deleteResolve = resolve;
|
|
767
768
|
});
|
|
768
|
-
objectInstance.state.
|
|
769
|
-
objectInstance.state.
|
|
769
|
+
objectInstance.state.crud.delete = jest.fn();
|
|
770
|
+
objectInstance.state.crud.delete.mockReturnValueOnce(deletePromise);
|
|
770
771
|
|
|
771
772
|
expectErrorToBeNull(objectInstance.state.error);
|
|
772
773
|
expect(objectInstance.state.errored).toBe(false);
|
|
@@ -774,7 +775,7 @@ describe("use/objectInstance.js", function () {
|
|
|
774
775
|
expect(objectInstance.state.deleted).toBe(false);
|
|
775
776
|
expect({ ...objectInstance.state.object }).toEqual(crudRetrieveResolved);
|
|
776
777
|
|
|
777
|
-
const returnsPromise = objectInstance.delete(
|
|
778
|
+
const returnsPromise = objectInstance.delete();
|
|
778
779
|
|
|
779
780
|
expectErrorToBeNull(objectInstance.state.error);
|
|
780
781
|
expect(objectInstance.state.errored).toBe(false);
|
|
@@ -794,23 +795,27 @@ describe("use/objectInstance.js", function () {
|
|
|
794
795
|
await nextTick();
|
|
795
796
|
|
|
796
797
|
await expect(returnsPromise).resolves.toBe(true);
|
|
797
|
-
expect(objectInstance.state.
|
|
798
|
+
expect(objectInstance.state.crud.delete).toHaveBeenCalledWith({
|
|
798
799
|
crudArgs: { stream: "test_stream" },
|
|
799
800
|
id: 1,
|
|
800
801
|
});
|
|
801
|
-
expect(objectInstance.state.
|
|
802
|
+
expect(objectInstance.state.crud.delete).toHaveBeenCalledTimes(1);
|
|
802
803
|
});
|
|
803
804
|
it("errored", async function () {
|
|
805
|
+
const id = ref(1);
|
|
806
|
+
const retrieveArgs = reactive({ fields });
|
|
804
807
|
const objectInstance = useObjectInstance({
|
|
805
808
|
crudArgs: { stream: "test_stream" },
|
|
809
|
+
id,
|
|
810
|
+
retrieveArgs,
|
|
806
811
|
});
|
|
807
812
|
assignReactiveObject(objectInstance.state.object, crudRetrieveResolved);
|
|
808
813
|
let deleteReject;
|
|
809
814
|
const deletePromise = new Promise((resolve, reject) => {
|
|
810
815
|
deleteReject = reject;
|
|
811
816
|
});
|
|
812
|
-
objectInstance.state.
|
|
813
|
-
objectInstance.state.
|
|
817
|
+
objectInstance.state.crud.delete = jest.fn();
|
|
818
|
+
objectInstance.state.crud.delete.mockReturnValueOnce(deletePromise);
|
|
814
819
|
|
|
815
820
|
expectErrorToBeNull(objectInstance.state.error);
|
|
816
821
|
expect(objectInstance.state.errored).toBe(false);
|
|
@@ -818,7 +823,7 @@ describe("use/objectInstance.js", function () {
|
|
|
818
823
|
expect(objectInstance.state.deleted).toBe(false);
|
|
819
824
|
expect({ ...objectInstance.state.object }).toEqual(crudRetrieveResolved);
|
|
820
825
|
|
|
821
|
-
const returnsPromise = objectInstance.delete(
|
|
826
|
+
const returnsPromise = objectInstance.delete();
|
|
822
827
|
|
|
823
828
|
expectErrorToBeNull(objectInstance.state.error);
|
|
824
829
|
expect(objectInstance.state.errored).toBe(false);
|
|
@@ -838,26 +843,30 @@ describe("use/objectInstance.js", function () {
|
|
|
838
843
|
await nextTick();
|
|
839
844
|
|
|
840
845
|
await expect(returnsPromise).resolves.toBe(false);
|
|
841
|
-
expect(objectInstance.state.
|
|
846
|
+
expect(objectInstance.state.crud.delete).toHaveBeenCalledWith({
|
|
842
847
|
crudArgs: { stream: "test_stream" },
|
|
843
848
|
id: 1,
|
|
844
849
|
});
|
|
845
|
-
expect(objectInstance.state.
|
|
850
|
+
expect(objectInstance.state.crud.delete).toHaveBeenCalledTimes(1);
|
|
846
851
|
});
|
|
847
852
|
it("already loading", async function () {
|
|
853
|
+
const id = ref(1);
|
|
854
|
+
const retrieveArgs = reactive({ fields });
|
|
848
855
|
const objectInstance = useObjectInstance({
|
|
849
856
|
crudArgs: { stream: "test_stream" },
|
|
857
|
+
id,
|
|
858
|
+
retrieveArgs,
|
|
850
859
|
});
|
|
851
860
|
const deletePromise = new Promise(() => {});
|
|
852
|
-
objectInstance.state.
|
|
853
|
-
objectInstance.state.
|
|
861
|
+
objectInstance.state.crud.delete = jest.fn();
|
|
862
|
+
objectInstance.state.crud.delete.mockReturnValueOnce(deletePromise);
|
|
854
863
|
objectInstance.delete(1);
|
|
855
|
-
await expect(() => objectInstance.delete(
|
|
856
|
-
expect(objectInstance.state.
|
|
864
|
+
await expect(() => objectInstance.delete()).rejects.toThrow(ObjectError);
|
|
865
|
+
expect(objectInstance.state.crud.delete).toHaveBeenCalledWith({
|
|
857
866
|
crudArgs: { stream: "test_stream" },
|
|
858
867
|
id: 1,
|
|
859
868
|
});
|
|
860
|
-
expect(objectInstance.state.
|
|
869
|
+
expect(objectInstance.state.crud.delete).toHaveBeenCalledTimes(1);
|
|
861
870
|
});
|
|
862
871
|
});
|
|
863
872
|
it("useObjectSubscriptions", async function () {
|