@arrai-innovations/reactive-helpers 18.0.0 → 18.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +20 -6
- package/types/config/listCrud.d.ts +153 -0
- package/types/config/listCrud.d.ts.map +1 -0
- package/types/config/objectCrud.d.ts +171 -0
- package/types/config/objectCrud.d.ts.map +1 -0
- package/types/index.d.ts +37 -0
- package/types/index.d.ts.map +1 -0
- package/types/tests/unit/config/listCrud.spec.d.ts +2 -0
- package/types/tests/unit/config/listCrud.spec.d.ts.map +1 -0
- package/types/tests/unit/config/objectCrud.spec.d.ts +2 -0
- package/types/tests/unit/config/objectCrud.spec.d.ts.map +1 -0
- package/types/tests/unit/crudPromise.d.ts +25 -0
- package/types/tests/unit/crudPromise.d.ts.map +1 -0
- package/types/tests/unit/expectHelpers.d.ts +2 -0
- package/types/tests/unit/expectHelpers.d.ts.map +1 -0
- package/types/tests/unit/mockOnUnmounted.d.ts +2 -0
- package/types/tests/unit/mockOnUnmounted.d.ts.map +1 -0
- package/types/tests/unit/poll.d.ts +2 -0
- package/types/tests/unit/poll.d.ts.map +1 -0
- package/types/tests/unit/use/cancellableIntent.spec.d.ts +2 -0
- package/types/tests/unit/use/cancellableIntent.spec.d.ts.map +1 -0
- package/types/tests/unit/use/listCalculated.spec.d.ts +2 -0
- package/types/tests/unit/use/listCalculated.spec.d.ts.map +1 -0
- package/types/tests/unit/use/listFilter.spec.d.ts +2 -0
- package/types/tests/unit/use/listFilter.spec.d.ts.map +1 -0
- package/types/tests/unit/use/listInstance.spec.d.ts +2 -0
- package/types/tests/unit/use/listInstance.spec.d.ts.map +1 -0
- package/types/tests/unit/use/listRelated.spec.d.ts +2 -0
- package/types/tests/unit/use/listRelated.spec.d.ts.map +1 -0
- package/types/tests/unit/use/listSearch.spec.d.ts +2 -0
- package/types/tests/unit/use/listSearch.spec.d.ts.map +1 -0
- package/types/tests/unit/use/listSort.spec.d.ts +2 -0
- package/types/tests/unit/use/listSort.spec.d.ts.map +1 -0
- package/types/tests/unit/use/listSubscription.spec.d.ts +2 -0
- package/types/tests/unit/use/listSubscription.spec.d.ts.map +1 -0
- package/types/tests/unit/use/loadingError.spec.d.ts +2 -0
- package/types/tests/unit/use/loadingError.spec.d.ts.map +1 -0
- package/types/tests/unit/use/objectInstance.spec.d.ts +2 -0
- package/types/tests/unit/use/objectInstance.spec.d.ts.map +1 -0
- package/types/tests/unit/use/objectSubscription.spec.d.ts +2 -0
- package/types/tests/unit/use/objectSubscription.spec.d.ts.map +1 -0
- package/types/tests/unit/use/proxyLoadingError.spec.d.ts +2 -0
- package/types/tests/unit/use/proxyLoadingError.spec.d.ts.map +1 -0
- package/types/tests/unit/use/search.spec.d.ts +2 -0
- package/types/tests/unit/use/search.spec.d.ts.map +1 -0
- package/types/tests/unit/utils/assignReactiveObject.spec.d.ts +2 -0
- package/types/tests/unit/utils/assignReactiveObject.spec.d.ts.map +1 -0
- package/types/tests/unit/utils/classes.spec.d.ts +2 -0
- package/types/tests/unit/utils/classes.spec.d.ts.map +1 -0
- package/types/tests/unit/utils/deleteKey.spec.d.ts +2 -0
- package/types/tests/unit/utils/deleteKey.spec.d.ts.map +1 -0
- package/types/tests/unit/utils/flattenPaths.spec.d.ts +2 -0
- package/types/tests/unit/utils/flattenPaths.spec.d.ts.map +1 -0
- package/types/tests/unit/utils/keyDiff.spec.d.ts +2 -0
- package/types/tests/unit/utils/keyDiff.spec.d.ts.map +1 -0
- package/types/tests/unit/utils/set.spec.d.ts +2 -0
- package/types/tests/unit/utils/set.spec.d.ts.map +1 -0
- package/types/tests/unit/utils/watches.spec.d.ts +2 -0
- package/types/tests/unit/utils/watches.spec.d.ts.map +1 -0
- package/types/use/cancellableIntent.d.ts +129 -0
- package/types/use/cancellableIntent.d.ts.map +1 -0
- package/types/use/combineClasses.d.ts +43 -0
- package/types/use/combineClasses.d.ts.map +1 -0
- package/types/use/list.d.ts +176 -0
- package/types/use/list.d.ts.map +1 -0
- package/types/use/listCalculated.d.ts +192 -0
- package/types/use/listCalculated.d.ts.map +1 -0
- package/types/use/listFilter.d.ts +203 -0
- package/types/use/listFilter.d.ts.map +1 -0
- package/types/use/listInstance.d.ts +357 -0
- package/types/use/listInstance.d.ts.map +1 -0
- package/types/use/listKeys.d.ts +15 -0
- package/types/use/listKeys.d.ts.map +1 -0
- package/types/use/listRelated.d.ts +239 -0
- package/types/use/listRelated.d.ts.map +1 -0
- package/types/use/listSearch.d.ts +298 -0
- package/types/use/listSearch.d.ts.map +1 -0
- package/types/use/listSort.d.ts +235 -0
- package/types/use/listSort.d.ts.map +1 -0
- package/types/use/listSubscription.d.ts +218 -0
- package/types/use/listSubscription.d.ts.map +1 -0
- package/types/use/loadingError.d.ts +81 -0
- package/types/use/loadingError.d.ts.map +1 -0
- package/types/use/object.d.ts +67 -0
- package/types/use/object.d.ts.map +1 -0
- package/types/use/objectCalculated.d.ts +215 -0
- package/types/use/objectCalculated.d.ts.map +1 -0
- package/types/use/objectInstance.d.ts +289 -0
- package/types/use/objectInstance.d.ts.map +1 -0
- package/types/use/objectRelated.d.ts +264 -0
- package/types/use/objectRelated.d.ts.map +1 -0
- package/types/use/objectSubscription.d.ts +249 -0
- package/types/use/objectSubscription.d.ts.map +1 -0
- package/types/use/paginatedListInstance.d.ts +51 -0
- package/types/use/paginatedListInstance.d.ts.map +1 -0
- package/types/use/proxyLoadingError.d.ts +36 -0
- package/types/use/proxyLoadingError.d.ts.map +1 -0
- package/types/use/search.d.ts +144 -0
- package/types/use/search.d.ts.map +1 -0
- package/types/use/watchesRunning.d.ts +63 -0
- package/types/use/watchesRunning.d.ts.map +1 -0
- package/types/utils/assignReactiveObject.d.ts +115 -0
- package/types/utils/assignReactiveObject.d.ts.map +1 -0
- package/types/utils/classes.d.ts +22 -0
- package/types/utils/classes.d.ts.map +1 -0
- package/types/utils/compact.d.ts +4 -0
- package/types/utils/compact.d.ts.map +1 -0
- package/types/utils/deleteKey.d.ts +16 -0
- package/types/utils/deleteKey.d.ts.map +1 -0
- package/types/utils/flattenPaths.d.ts +23 -0
- package/types/utils/flattenPaths.d.ts.map +1 -0
- package/types/utils/getFakePk.d.ts +13 -0
- package/types/utils/getFakePk.d.ts.map +1 -0
- package/types/utils/keepAliveTry.d.ts +15 -0
- package/types/utils/keepAliveTry.d.ts.map +1 -0
- package/types/utils/keyDiff.d.ts +63 -0
- package/types/utils/keyDiff.d.ts.map +1 -0
- package/types/utils/loadingCombine.d.ts +9 -0
- package/types/utils/loadingCombine.d.ts.map +1 -0
- package/types/utils/proxyRunning.d.ts +9 -0
- package/types/utils/proxyRunning.d.ts.map +1 -0
- package/types/utils/relatedCalculatedHelpers.d.ts +5 -0
- package/types/utils/relatedCalculatedHelpers.d.ts.map +1 -0
- package/types/utils/set.d.ts +7 -0
- package/types/utils/set.d.ts.map +1 -0
- package/types/utils/transformWalk.d.ts +2 -0
- package/types/utils/transformWalk.d.ts.map +1 -0
- package/types/utils/watches.d.ts +155 -0
- package/types/utils/watches.d.ts.map +1 -0
- package/use/loadingError.js +1 -1
- package/.circleci/config.yml +0 -88
- package/.commitlintrc.json +0 -25
- package/.editorconfig +0 -5
- package/.husky/commit-msg +0 -3
- package/.husky/pre-commit +0 -3
- package/.idea/codeStyles/codeStyleConfig.xml +0 -5
- package/.idea/encodings.xml +0 -6
- package/.idea/inspectionProfiles/Project_Default.xml +0 -7
- package/.idea/modules.xml +0 -8
- package/.idea/prettier.xml +0 -8
- package/.idea/reactive-helpers.iml +0 -15
- package/.prettierignore +0 -5
- package/.prettierrc.cjs +0 -5
- package/.vscode/extensions.json +0 -3
- package/docs/README.md +0 -45
- package/docs/config/listCrud.md +0 -422
- package/docs/config/objectCrud.md +0 -427
- package/docs/use/cancellableIntent.md +0 -165
- package/docs/use/combineClasses.md +0 -62
- package/docs/use/list.md +0 -361
- package/docs/use/listCalculated.md +0 -794
- package/docs/use/listFilter.md +0 -897
- package/docs/use/listInstance.md +0 -559
- package/docs/use/listKeys.md +0 -91
- package/docs/use/listRelated.md +0 -706
- package/docs/use/listSearch.md +0 -903
- package/docs/use/listSort.md +0 -1171
- package/docs/use/listSubscription.md +0 -393
- package/docs/use/loadingError.md +0 -115
- package/docs/use/object.md +0 -668
- package/docs/use/objectCalculated.md +0 -741
- package/docs/use/objectInstance.md +0 -685
- package/docs/use/objectRelated.md +0 -723
- package/docs/use/objectSubscription.md +0 -538
- package/docs/use/paginatedListInstance.md +0 -155
- package/docs/use/proxyLoadingError.md +0 -51
- package/docs/use/search.md +0 -321
- package/docs/use/watchesRunning.md +0 -84
- package/docs/utils/assignReactiveObject.md +0 -413
- package/docs/utils/classes.md +0 -139
- package/docs/utils/compact.md +0 -67
- package/docs/utils/deleteKey.md +0 -61
- package/docs/utils/flattenPaths.md +0 -53
- package/docs/utils/getFakePk.md +0 -39
- package/docs/utils/keepAliveTry.md +0 -59
- package/docs/utils/keyDiff.md +0 -117
- package/docs/utils/loadingCombine.md +0 -30
- package/docs/utils/proxyRunning.md +0 -39
- package/docs/utils/relatedCalculatedHelpers.md +0 -93
- package/docs/utils/set.md +0 -223
- package/docs/utils/transformWalk.md +0 -68
- package/docs/utils/watches.md +0 -489
- package/eslint.config.js +0 -125
- package/lint-staged.config.js +0 -10
- package/makeTypeDoc.sh +0 -25
- package/make_type_doc.js +0 -59
- package/tests/unit/config/listCrud.spec.js +0 -114
- package/tests/unit/config/objectCrud.spec.js +0 -160
- package/tests/unit/crudPromise.js +0 -40
- package/tests/unit/expectHelpers.js +0 -6
- package/tests/unit/mockOnUnmounted.js +0 -9
- package/tests/unit/poll.js +0 -50
- package/tests/unit/use/cancellableIntent.spec.js +0 -152
- package/tests/unit/use/listCalculated.spec.js +0 -135
- package/tests/unit/use/listFilter.spec.js +0 -484
- package/tests/unit/use/listInstance.spec.js +0 -1166
- package/tests/unit/use/listRelated.spec.js +0 -260
- package/tests/unit/use/listSearch.spec.js +0 -586
- package/tests/unit/use/listSort.spec.js +0 -418
- package/tests/unit/use/listSubscription.spec.js +0 -845
- package/tests/unit/use/loadingError.spec.js +0 -43
- package/tests/unit/use/objectInstance.spec.js +0 -1525
- package/tests/unit/use/objectSubscription.spec.js +0 -849
- package/tests/unit/use/proxyLoadingError.spec.js +0 -64
- package/tests/unit/use/search.spec.js +0 -248
- package/tests/unit/utils/assignReactiveObject.spec.js +0 -593
- package/tests/unit/utils/classes.spec.js +0 -427
- package/tests/unit/utils/deleteKey.spec.js +0 -265
- package/tests/unit/utils/flattenPaths.spec.js +0 -126
- package/tests/unit/utils/keyDiff.spec.js +0 -110
- package/tests/unit/utils/set.spec.js +0 -81
- package/tests/unit/utils/watches.spec.js +0 -276
- package/tsconfig.json +0 -19
- package/typedoc-local-plugins/customize-output.js +0 -13
- package/typedoc.json +0 -11
- package/vitest.config.js +0 -11
|
@@ -1,1525 +0,0 @@
|
|
|
1
|
-
import { assignReactiveObject } from "../../../utils/assignReactiveObject.js";
|
|
2
|
-
import { expectErrorToBeNull } from "../expectHelpers.js";
|
|
3
|
-
import flushPromises from "flush-promises";
|
|
4
|
-
import { nextTick, reactive, ref } from "vue";
|
|
5
|
-
import { deepUnref } from "vue-deepunref";
|
|
6
|
-
|
|
7
|
-
afterAll(() => {
|
|
8
|
-
vi.restoreAllMocks();
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
describe("use/objectInstance.js", function () {
|
|
12
|
-
let useObjectInstance, ObjectError, useObjectInstances;
|
|
13
|
-
beforeAll(async () => {
|
|
14
|
-
const imported = await import("../../../use/objectInstance.js");
|
|
15
|
-
useObjectInstance = imported.useObjectInstance;
|
|
16
|
-
ObjectError = imported.ObjectError;
|
|
17
|
-
useObjectInstances = imported.useObjectInstances;
|
|
18
|
-
});
|
|
19
|
-
afterEach(function () {
|
|
20
|
-
vi.resetAllMocks();
|
|
21
|
-
});
|
|
22
|
-
const crudRetrieveResolved = {
|
|
23
|
-
id: 1,
|
|
24
|
-
__str__: "asdf",
|
|
25
|
-
name: "zxcv",
|
|
26
|
-
};
|
|
27
|
-
const crudRetrieveResolvedNonStandardPrimaryKey = {
|
|
28
|
-
unique: 1,
|
|
29
|
-
__str__: "test",
|
|
30
|
-
name: "test",
|
|
31
|
-
};
|
|
32
|
-
const crudRetrieveRejected = {
|
|
33
|
-
errors: ["Not found"],
|
|
34
|
-
data: null,
|
|
35
|
-
action: "retrieve",
|
|
36
|
-
response_status: 404,
|
|
37
|
-
request_id: "60799141-959a-4ff7-80bc-1ad6b805a8fd",
|
|
38
|
-
};
|
|
39
|
-
const crudCreateResolved = {
|
|
40
|
-
id: 1,
|
|
41
|
-
__str__: "tset",
|
|
42
|
-
name: "tset",
|
|
43
|
-
};
|
|
44
|
-
const crudCreateResolvedNonStandardPK = {
|
|
45
|
-
unique: 1,
|
|
46
|
-
__str__: "tset",
|
|
47
|
-
name: "tset",
|
|
48
|
-
};
|
|
49
|
-
const crudCreateRejected = {
|
|
50
|
-
errors: [
|
|
51
|
-
{
|
|
52
|
-
name: ["Test object with this name already exists."],
|
|
53
|
-
},
|
|
54
|
-
],
|
|
55
|
-
data: null,
|
|
56
|
-
action: "create",
|
|
57
|
-
response_status: 400,
|
|
58
|
-
request_id: "60799141-959a-4ff7-80bc-1ad6b805a8fd",
|
|
59
|
-
};
|
|
60
|
-
const crudUpdateResolved = {
|
|
61
|
-
id: 1,
|
|
62
|
-
__str__: "asdf!",
|
|
63
|
-
name: "zxcv!",
|
|
64
|
-
};
|
|
65
|
-
const crudUpdateResolvedWithNonStandardPk = {
|
|
66
|
-
unique: 1,
|
|
67
|
-
__str__: "asdf!",
|
|
68
|
-
name: "zxcv!",
|
|
69
|
-
};
|
|
70
|
-
const crudUpdateRejected = {
|
|
71
|
-
errors: [
|
|
72
|
-
{
|
|
73
|
-
name: ["Test object with this name already exists."],
|
|
74
|
-
},
|
|
75
|
-
],
|
|
76
|
-
data: null,
|
|
77
|
-
action: "update",
|
|
78
|
-
response_status: 400,
|
|
79
|
-
request_id: "60799141-959a-4ff7-80bc-1ad6b805a8fd",
|
|
80
|
-
};
|
|
81
|
-
const crudPatchResolved = {
|
|
82
|
-
id: 1,
|
|
83
|
-
__str__: "asdf!",
|
|
84
|
-
name: "zxcv!",
|
|
85
|
-
};
|
|
86
|
-
const crudPatchResolvedWithNonStandardPk = {
|
|
87
|
-
unique: 1,
|
|
88
|
-
__str__: "asdf!",
|
|
89
|
-
name: "zxcv!",
|
|
90
|
-
};
|
|
91
|
-
const crudPatchRejected = {
|
|
92
|
-
errors: [
|
|
93
|
-
{
|
|
94
|
-
name: ["Test object with this name already exists."],
|
|
95
|
-
},
|
|
96
|
-
],
|
|
97
|
-
data: null,
|
|
98
|
-
action: "patch",
|
|
99
|
-
response_status: 400,
|
|
100
|
-
request_id: "60799141-959a-4ff7-80bc-1ad6b805a8fd",
|
|
101
|
-
};
|
|
102
|
-
const crudDeleteResolved = {
|
|
103
|
-
errors: [],
|
|
104
|
-
data: null,
|
|
105
|
-
action: "delete",
|
|
106
|
-
response_status: 204,
|
|
107
|
-
request_id: "454619de-6687-4664-ad2a-67cdb393eb70",
|
|
108
|
-
};
|
|
109
|
-
const crudDeleteRejected = {
|
|
110
|
-
errors: ["You cannot delete this object at this time."],
|
|
111
|
-
data: null,
|
|
112
|
-
action: "delete",
|
|
113
|
-
response_status: 400,
|
|
114
|
-
request_id: "454619de-6687-4664-ad2a-67cdb393eb70",
|
|
115
|
-
};
|
|
116
|
-
const fields = ["id", "__str__", "name"];
|
|
117
|
-
describe("retrieve", function () {
|
|
118
|
-
it("success", async function () {
|
|
119
|
-
const id = ref(1);
|
|
120
|
-
const retrieveArgs = reactive({ fields });
|
|
121
|
-
const objectInstance = useObjectInstance({
|
|
122
|
-
props: {
|
|
123
|
-
crudArgs: { stream: "test_stream" },
|
|
124
|
-
pk: id,
|
|
125
|
-
pkKey: "id",
|
|
126
|
-
retrieveArgs,
|
|
127
|
-
},
|
|
128
|
-
});
|
|
129
|
-
objectInstance.state.crud.retrieve = vi.fn();
|
|
130
|
-
let crudRetrieveResolve;
|
|
131
|
-
const crudRetrievePromise = new Promise((resolve) => {
|
|
132
|
-
crudRetrieveResolve = resolve;
|
|
133
|
-
});
|
|
134
|
-
objectInstance.state.crud.retrieve.mockReturnValueOnce(crudRetrievePromise);
|
|
135
|
-
|
|
136
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
137
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
138
|
-
expect(objectInstance.state.loading).toBeUndefined();
|
|
139
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
140
|
-
const oiRetrieveResolve = objectInstance.retrieve();
|
|
141
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
142
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
143
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
144
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
145
|
-
await nextTick();
|
|
146
|
-
// @ts-ignore - crudRetrieveResolve is set in the promise, so it will be defined
|
|
147
|
-
crudRetrieveResolve(crudRetrieveResolved);
|
|
148
|
-
await flushPromises();
|
|
149
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
150
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
151
|
-
expect(objectInstance.state.loading).toBe(false);
|
|
152
|
-
expect({ ...objectInstance.state.object }).toEqual(crudRetrieveResolved);
|
|
153
|
-
expect(objectInstance.state.crud.retrieve).toHaveBeenCalledWith({
|
|
154
|
-
crudArgs: { stream: "test_stream" },
|
|
155
|
-
pk: 1,
|
|
156
|
-
pkKey: "id",
|
|
157
|
-
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
158
|
-
});
|
|
159
|
-
expect(objectInstance.state.crud.retrieve).toHaveBeenCalledTimes(1);
|
|
160
|
-
await nextTick();
|
|
161
|
-
await expect(oiRetrieveResolve).resolves.toBe(true);
|
|
162
|
-
});
|
|
163
|
-
it("success with non-standard pk", async function () {
|
|
164
|
-
const id = ref(1);
|
|
165
|
-
const retrieveArgs = reactive({ fields });
|
|
166
|
-
const objectInstance = useObjectInstance({
|
|
167
|
-
props: {
|
|
168
|
-
crudArgs: { stream: "test_stream" },
|
|
169
|
-
pk: id,
|
|
170
|
-
pkKey: "unique",
|
|
171
|
-
retrieveArgs,
|
|
172
|
-
},
|
|
173
|
-
});
|
|
174
|
-
objectInstance.state.crud.retrieve = vi.fn();
|
|
175
|
-
let crudRetrieveResolve;
|
|
176
|
-
const crudRetrievePromise = new Promise((resolve) => {
|
|
177
|
-
crudRetrieveResolve = resolve;
|
|
178
|
-
});
|
|
179
|
-
objectInstance.state.crud.retrieve.mockReturnValueOnce(crudRetrievePromise);
|
|
180
|
-
|
|
181
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
182
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
183
|
-
expect(objectInstance.state.loading).toBeUndefined();
|
|
184
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
185
|
-
const oiRetrieveResolve = objectInstance.retrieve();
|
|
186
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
187
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
188
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
189
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
190
|
-
await nextTick();
|
|
191
|
-
// @ts-ignore - crudRetrieveResolve is set in the promise, so it will be defined
|
|
192
|
-
crudRetrieveResolve(crudRetrieveResolvedNonStandardPrimaryKey);
|
|
193
|
-
await flushPromises();
|
|
194
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
195
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
196
|
-
expect(objectInstance.state.loading).toBe(false);
|
|
197
|
-
expect({ ...objectInstance.state.object }).toEqual(crudRetrieveResolvedNonStandardPrimaryKey);
|
|
198
|
-
expect(objectInstance.state.crud.retrieve).toHaveBeenCalledWith({
|
|
199
|
-
crudArgs: { stream: "test_stream" },
|
|
200
|
-
pk: 1,
|
|
201
|
-
pkKey: "unique",
|
|
202
|
-
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
203
|
-
});
|
|
204
|
-
expect(objectInstance.state.crud.retrieve).toHaveBeenCalledTimes(1);
|
|
205
|
-
await nextTick();
|
|
206
|
-
await expect(oiRetrieveResolve).resolves.toBe(true);
|
|
207
|
-
});
|
|
208
|
-
it("success (retrieveArgs)", async function () {
|
|
209
|
-
const pk = ref(1);
|
|
210
|
-
const retrieveArgs = reactive({ fields });
|
|
211
|
-
const objectInstance = useObjectInstance({
|
|
212
|
-
props: {
|
|
213
|
-
crudArgs: { stream: "test_stream" },
|
|
214
|
-
pk,
|
|
215
|
-
pkKey: "id",
|
|
216
|
-
retrieveArgs,
|
|
217
|
-
},
|
|
218
|
-
});
|
|
219
|
-
objectInstance.state.crud.retrieve = vi.fn();
|
|
220
|
-
let crudRetrieveResolve;
|
|
221
|
-
const crudRetrievePromise = new Promise((resolve) => {
|
|
222
|
-
crudRetrieveResolve = resolve;
|
|
223
|
-
});
|
|
224
|
-
objectInstance.state.crud.retrieve.mockReturnValueOnce(crudRetrievePromise);
|
|
225
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
226
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
227
|
-
expect(objectInstance.state.loading).toBeUndefined();
|
|
228
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
229
|
-
const oiRetrieveResolve = objectInstance.retrieve();
|
|
230
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
231
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
232
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
233
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
234
|
-
// @ts-ignore - crudRetrieveResolve is set in the promise, so it will be defined
|
|
235
|
-
crudRetrieveResolve(crudRetrieveResolved);
|
|
236
|
-
await flushPromises();
|
|
237
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
238
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
239
|
-
expect(objectInstance.state.loading).toBe(false);
|
|
240
|
-
expect({ ...objectInstance.state.object }).toEqual(crudRetrieveResolved);
|
|
241
|
-
expect(objectInstance.state.crud.retrieve).toHaveBeenCalledWith({
|
|
242
|
-
crudArgs: { stream: "test_stream" },
|
|
243
|
-
pk: 1,
|
|
244
|
-
pkKey: "id",
|
|
245
|
-
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
246
|
-
});
|
|
247
|
-
expect(objectInstance.state.crud.retrieve).toHaveBeenCalledTimes(1);
|
|
248
|
-
const returnValue = await oiRetrieveResolve;
|
|
249
|
-
expect(returnValue).toBe(true);
|
|
250
|
-
});
|
|
251
|
-
it("errored", async function () {
|
|
252
|
-
const pk = ref(1);
|
|
253
|
-
const retrieveArgs = reactive({ fields });
|
|
254
|
-
const objectInstance = useObjectInstance({
|
|
255
|
-
props: {
|
|
256
|
-
crudArgs: { stream: "test_stream" },
|
|
257
|
-
pk,
|
|
258
|
-
pkKey: "id",
|
|
259
|
-
retrieveArgs,
|
|
260
|
-
},
|
|
261
|
-
});
|
|
262
|
-
objectInstance.state.crud.retrieve = vi.fn();
|
|
263
|
-
let crudRetrieveReject;
|
|
264
|
-
const crudRetrievePromise = new Promise((resolve, reject) => {
|
|
265
|
-
crudRetrieveReject = reject;
|
|
266
|
-
});
|
|
267
|
-
objectInstance.state.crud.retrieve.mockReturnValueOnce(crudRetrievePromise);
|
|
268
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
269
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
270
|
-
expect(objectInstance.state.loading).toBeUndefined();
|
|
271
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
272
|
-
const oiRetrieveResolve = objectInstance.retrieve();
|
|
273
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
274
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
275
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
276
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
277
|
-
// @ts-ignore - crudRetrieveReject is set in the promise, so it will be defined
|
|
278
|
-
crudRetrieveReject(crudRetrieveRejected);
|
|
279
|
-
await flushPromises();
|
|
280
|
-
expect(objectInstance.state.error).toEqual(crudRetrieveRejected);
|
|
281
|
-
expect(objectInstance.state.errored).toBe(true);
|
|
282
|
-
expect(objectInstance.state.loading).toBe(false);
|
|
283
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
284
|
-
expect(objectInstance.state.crud.retrieve).toHaveBeenCalledWith({
|
|
285
|
-
crudArgs: { stream: "test_stream" },
|
|
286
|
-
pk: 1,
|
|
287
|
-
pkKey: "id",
|
|
288
|
-
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
289
|
-
});
|
|
290
|
-
expect(objectInstance.state.crud.retrieve).toHaveBeenCalledTimes(1);
|
|
291
|
-
const returnValue = await oiRetrieveResolve;
|
|
292
|
-
expect(returnValue).toBe(false);
|
|
293
|
-
});
|
|
294
|
-
it("errored with non-matching pkKey", async function () {
|
|
295
|
-
const pk = ref(1);
|
|
296
|
-
const retrieveArgs = reactive({ fields });
|
|
297
|
-
const objectInstance = useObjectInstance({
|
|
298
|
-
props: {
|
|
299
|
-
crudArgs: { stream: "test_stream" },
|
|
300
|
-
pk,
|
|
301
|
-
pkKey: "pk",
|
|
302
|
-
retrieveArgs,
|
|
303
|
-
},
|
|
304
|
-
});
|
|
305
|
-
objectInstance.state.crud.retrieve = vi.fn();
|
|
306
|
-
let crudRetrieveReject;
|
|
307
|
-
const crudRetrievePromise = new Promise((resolve, reject) => {
|
|
308
|
-
crudRetrieveReject = reject;
|
|
309
|
-
});
|
|
310
|
-
objectInstance.state.crud.retrieve.mockReturnValueOnce(crudRetrievePromise);
|
|
311
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
312
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
313
|
-
expect(objectInstance.state.loading).toBeUndefined();
|
|
314
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
315
|
-
const oiRetrieveResolve = objectInstance.retrieve();
|
|
316
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
317
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
318
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
319
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
320
|
-
// @ts-ignore - crudRetrieveReject is set in the promise, so it will be defined
|
|
321
|
-
crudRetrieveReject(crudRetrieveRejected);
|
|
322
|
-
await flushPromises();
|
|
323
|
-
expect(objectInstance.state.error).toEqual(crudRetrieveRejected);
|
|
324
|
-
expect(objectInstance.state.errored).toBe(true);
|
|
325
|
-
expect(objectInstance.state.loading).toBe(false);
|
|
326
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
327
|
-
expect(objectInstance.state.crud.retrieve).toHaveBeenCalledWith({
|
|
328
|
-
crudArgs: { stream: "test_stream" },
|
|
329
|
-
pk: 1,
|
|
330
|
-
pkKey: "pk",
|
|
331
|
-
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
332
|
-
});
|
|
333
|
-
expect(objectInstance.state.crud.retrieve).toHaveBeenCalledTimes(1);
|
|
334
|
-
const returnValue = await oiRetrieveResolve;
|
|
335
|
-
expect(returnValue).toBe(false);
|
|
336
|
-
});
|
|
337
|
-
it("already loading", async function () {
|
|
338
|
-
const pk = ref(1);
|
|
339
|
-
const retrieveArgs = reactive({ fields });
|
|
340
|
-
const objectInstance = useObjectInstance({
|
|
341
|
-
props: {
|
|
342
|
-
crudArgs: { stream: "test_stream" },
|
|
343
|
-
pk,
|
|
344
|
-
pkKey: "id",
|
|
345
|
-
retrieveArgs,
|
|
346
|
-
},
|
|
347
|
-
});
|
|
348
|
-
objectInstance.state.crud.create = vi.fn();
|
|
349
|
-
objectInstance.state.crud.create.mockImplementation(() => new Promise(() => {}));
|
|
350
|
-
objectInstance.state.crud.retrieve = vi.fn();
|
|
351
|
-
objectInstance.state.crud.retrieve.mockImplementation(() => new Promise(() => {}));
|
|
352
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
353
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
354
|
-
expect(objectInstance.state.loading).toBeUndefined();
|
|
355
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
356
|
-
objectInstance.create({
|
|
357
|
-
fake: "object",
|
|
358
|
-
});
|
|
359
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
360
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
361
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
362
|
-
await expect(() => objectInstance.retrieve()).rejects.toThrow(ObjectError);
|
|
363
|
-
expect(objectInstance.state.crud.retrieve).toHaveBeenCalledTimes(0);
|
|
364
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
365
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
366
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
367
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
368
|
-
});
|
|
369
|
-
it("double retrieve gets the same promise", async function () {
|
|
370
|
-
const pk = ref(1);
|
|
371
|
-
const retrieveArgs = reactive({ fields });
|
|
372
|
-
const objectInstance = useObjectInstance({
|
|
373
|
-
props: {
|
|
374
|
-
crudArgs: { stream: "test_stream" },
|
|
375
|
-
pk,
|
|
376
|
-
pkKey: "id",
|
|
377
|
-
retrieveArgs,
|
|
378
|
-
},
|
|
379
|
-
});
|
|
380
|
-
objectInstance.state.crud.retrieve = vi.fn();
|
|
381
|
-
objectInstance.state.crud.retrieve.mockImplementation(() => new Promise(() => {}));
|
|
382
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
383
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
384
|
-
expect(objectInstance.state.loading).toBeUndefined();
|
|
385
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
386
|
-
const firstPromise = objectInstance.retrieve();
|
|
387
|
-
const secondPromise = objectInstance.retrieve();
|
|
388
|
-
// await expect(() => objectInstance.retrieve()).rejects.toThrow(ObjectError);
|
|
389
|
-
expect(firstPromise).toBe(secondPromise);
|
|
390
|
-
expect(objectInstance.state.crud.retrieve).toHaveBeenCalledWith({
|
|
391
|
-
crudArgs: { stream: "test_stream" },
|
|
392
|
-
pk: 1,
|
|
393
|
-
pkKey: "id",
|
|
394
|
-
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
395
|
-
});
|
|
396
|
-
expect(objectInstance.state.crud.retrieve).toHaveBeenCalledTimes(1);
|
|
397
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
398
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
399
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
400
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
401
|
-
});
|
|
402
|
-
});
|
|
403
|
-
describe("create", function () {
|
|
404
|
-
it("success", async function () {
|
|
405
|
-
const id = ref(1);
|
|
406
|
-
const retrieveArgs = reactive({ fields });
|
|
407
|
-
const objectInstance = useObjectInstance({
|
|
408
|
-
props: {
|
|
409
|
-
crudArgs: { stream: "test_stream" },
|
|
410
|
-
pk: id,
|
|
411
|
-
pkKey: "id",
|
|
412
|
-
retrieveArgs,
|
|
413
|
-
},
|
|
414
|
-
});
|
|
415
|
-
objectInstance.state.crud.create = vi.fn();
|
|
416
|
-
let crudCreateResolve;
|
|
417
|
-
const crudCreatePromise = new Promise((resolve) => {
|
|
418
|
-
crudCreateResolve = resolve;
|
|
419
|
-
});
|
|
420
|
-
objectInstance.state.crud.create.mockReturnValueOnce(crudCreatePromise);
|
|
421
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
422
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
423
|
-
expect(objectInstance.state.loading).toBeUndefined();
|
|
424
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
425
|
-
const oiCreateResolve = objectInstance.create({
|
|
426
|
-
object: {
|
|
427
|
-
name: "qwer",
|
|
428
|
-
},
|
|
429
|
-
fields,
|
|
430
|
-
});
|
|
431
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
432
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
433
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
434
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
435
|
-
await nextTick();
|
|
436
|
-
// @ts-ignore - crudCreateResolve is set in the promise, so it will be defined
|
|
437
|
-
crudCreateResolve(crudCreateResolved);
|
|
438
|
-
await flushPromises();
|
|
439
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
440
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
441
|
-
expect(objectInstance.state.loading).toBe(false);
|
|
442
|
-
expect({ ...objectInstance.state.object }).toEqual(crudCreateResolved);
|
|
443
|
-
expect(objectInstance.state.crud.create).toHaveBeenCalledWith({
|
|
444
|
-
crudArgs: {
|
|
445
|
-
stream: "test_stream",
|
|
446
|
-
},
|
|
447
|
-
object: {
|
|
448
|
-
name: "qwer",
|
|
449
|
-
},
|
|
450
|
-
pkKey: "id",
|
|
451
|
-
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
452
|
-
});
|
|
453
|
-
expect(objectInstance.state.crud.create).toHaveBeenCalledTimes(1);
|
|
454
|
-
await nextTick();
|
|
455
|
-
await expect(oiCreateResolve).resolves.toBe(true);
|
|
456
|
-
});
|
|
457
|
-
it("success (retrieveArgs)", async function () {
|
|
458
|
-
const id = ref(undefined);
|
|
459
|
-
const retrieveArgs = reactive({ fields });
|
|
460
|
-
const objectInstance = useObjectInstance({
|
|
461
|
-
props: {
|
|
462
|
-
crudArgs: { stream: "test_stream" },
|
|
463
|
-
pk: id,
|
|
464
|
-
pkKey: "id",
|
|
465
|
-
retrieveArgs,
|
|
466
|
-
},
|
|
467
|
-
});
|
|
468
|
-
objectInstance.state.crud.create = vi.fn();
|
|
469
|
-
let crudCreateResolve;
|
|
470
|
-
const crudCreatePromise = new Promise((resolve) => {
|
|
471
|
-
crudCreateResolve = resolve;
|
|
472
|
-
});
|
|
473
|
-
objectInstance.state.crud.create.mockReturnValueOnce(crudCreatePromise);
|
|
474
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
475
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
476
|
-
expect(objectInstance.state.loading).toBeUndefined();
|
|
477
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
478
|
-
const oiCreateResolve = objectInstance.create({
|
|
479
|
-
object: {
|
|
480
|
-
name: "qwer",
|
|
481
|
-
},
|
|
482
|
-
});
|
|
483
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
484
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
485
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
486
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
487
|
-
// @ts-ignore - crudCreateResolve is set in the promise, so it will be defined
|
|
488
|
-
crudCreateResolve(crudCreateResolved);
|
|
489
|
-
await flushPromises();
|
|
490
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
491
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
492
|
-
expect(objectInstance.state.loading).toBe(false);
|
|
493
|
-
expect({ ...objectInstance.state.object }).toEqual(crudCreateResolved);
|
|
494
|
-
expect(objectInstance.state.crud.create).toHaveBeenCalledWith({
|
|
495
|
-
crudArgs: {
|
|
496
|
-
stream: "test_stream",
|
|
497
|
-
},
|
|
498
|
-
pkKey: "id",
|
|
499
|
-
object: {
|
|
500
|
-
name: "qwer",
|
|
501
|
-
},
|
|
502
|
-
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
503
|
-
});
|
|
504
|
-
expect(objectInstance.state.crud.create).toHaveBeenCalledTimes(1);
|
|
505
|
-
const returnValue = await oiCreateResolve;
|
|
506
|
-
expect(returnValue).toBe(true);
|
|
507
|
-
});
|
|
508
|
-
it("success with non-standard pk", async function () {
|
|
509
|
-
const id = ref(1);
|
|
510
|
-
const retrieveArgs = reactive({ fields });
|
|
511
|
-
const objectInstance = useObjectInstance({
|
|
512
|
-
props: {
|
|
513
|
-
crudArgs: { stream: "test_stream" },
|
|
514
|
-
pk: id,
|
|
515
|
-
pkKey: "unique",
|
|
516
|
-
retrieveArgs,
|
|
517
|
-
},
|
|
518
|
-
});
|
|
519
|
-
objectInstance.state.crud.create = vi.fn();
|
|
520
|
-
let crudCreateResolve;
|
|
521
|
-
const crudCreatePromise = new Promise((resolve) => {
|
|
522
|
-
crudCreateResolve = resolve;
|
|
523
|
-
});
|
|
524
|
-
objectInstance.state.crud.create.mockReturnValueOnce(crudCreatePromise);
|
|
525
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
526
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
527
|
-
expect(objectInstance.state.loading).toBeUndefined();
|
|
528
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
529
|
-
const oiCreateResolve = objectInstance.create({
|
|
530
|
-
object: {
|
|
531
|
-
name: "qwer",
|
|
532
|
-
},
|
|
533
|
-
fields,
|
|
534
|
-
});
|
|
535
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
536
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
537
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
538
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
539
|
-
await nextTick();
|
|
540
|
-
// @ts-ignore - crudCreateResolve is set in the promise, so it will be defined
|
|
541
|
-
crudCreateResolve(crudCreateResolvedNonStandardPK);
|
|
542
|
-
await flushPromises();
|
|
543
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
544
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
545
|
-
expect(objectInstance.state.loading).toBe(false);
|
|
546
|
-
expect({ ...objectInstance.state.object }).toEqual(crudCreateResolvedNonStandardPK);
|
|
547
|
-
expect(objectInstance.state.crud.create).toHaveBeenCalledWith({
|
|
548
|
-
crudArgs: {
|
|
549
|
-
stream: "test_stream",
|
|
550
|
-
},
|
|
551
|
-
object: {
|
|
552
|
-
name: "qwer",
|
|
553
|
-
},
|
|
554
|
-
pkKey: "unique",
|
|
555
|
-
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
556
|
-
});
|
|
557
|
-
expect(objectInstance.state.crud.create).toHaveBeenCalledTimes(1);
|
|
558
|
-
await nextTick();
|
|
559
|
-
await expect(oiCreateResolve).resolves.toBe(true);
|
|
560
|
-
});
|
|
561
|
-
it("errored", async function () {
|
|
562
|
-
const id = ref(undefined);
|
|
563
|
-
const retrieveArgs = reactive({ fields });
|
|
564
|
-
const objectInstance = useObjectInstance({
|
|
565
|
-
props: {
|
|
566
|
-
crudArgs: { stream: "test_stream" },
|
|
567
|
-
pk: id,
|
|
568
|
-
pkKey: "id",
|
|
569
|
-
retrieveArgs,
|
|
570
|
-
},
|
|
571
|
-
});
|
|
572
|
-
objectInstance.state.crud.create = vi.fn();
|
|
573
|
-
let crudCreateReject;
|
|
574
|
-
const crudCreatePromise = new Promise((resolve, reject) => {
|
|
575
|
-
crudCreateReject = reject;
|
|
576
|
-
});
|
|
577
|
-
objectInstance.state.crud.create.mockReturnValueOnce(crudCreatePromise);
|
|
578
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
579
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
580
|
-
expect(objectInstance.state.loading).toBeUndefined();
|
|
581
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
582
|
-
const oiCreateResolve = objectInstance.create({
|
|
583
|
-
object: {
|
|
584
|
-
name: "qwer",
|
|
585
|
-
},
|
|
586
|
-
fields,
|
|
587
|
-
});
|
|
588
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
589
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
590
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
591
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
592
|
-
// @ts-ignore - crudCreateReject is set in the promise, so it will be defined
|
|
593
|
-
crudCreateReject(crudCreateRejected);
|
|
594
|
-
await flushPromises();
|
|
595
|
-
expect(objectInstance.state.error).toEqual(crudCreateRejected);
|
|
596
|
-
expect(objectInstance.state.errored).toBe(true);
|
|
597
|
-
expect(objectInstance.state.loading).toBe(false);
|
|
598
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
599
|
-
expect(objectInstance.state.crud.create).toHaveBeenCalledWith({
|
|
600
|
-
crudArgs: {
|
|
601
|
-
stream: "test_stream",
|
|
602
|
-
},
|
|
603
|
-
pkKey: "id",
|
|
604
|
-
object: {
|
|
605
|
-
name: "qwer",
|
|
606
|
-
},
|
|
607
|
-
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
608
|
-
});
|
|
609
|
-
expect(objectInstance.state.crud.create).toHaveBeenCalledTimes(1);
|
|
610
|
-
const returnValue = await oiCreateResolve;
|
|
611
|
-
expect(returnValue).toBe(false);
|
|
612
|
-
});
|
|
613
|
-
it("errored with non-matching pkKey", async function () {
|
|
614
|
-
const id = ref(undefined);
|
|
615
|
-
const retrieveArgs = reactive({ fields });
|
|
616
|
-
const objectInstance = useObjectInstance({
|
|
617
|
-
props: {
|
|
618
|
-
crudArgs: { stream: "test_stream" },
|
|
619
|
-
pk: id,
|
|
620
|
-
pkKey: "pk",
|
|
621
|
-
retrieveArgs,
|
|
622
|
-
},
|
|
623
|
-
});
|
|
624
|
-
objectInstance.state.crud.create = vi.fn();
|
|
625
|
-
let crudCreateReject;
|
|
626
|
-
const crudCreatePromise = new Promise((resolve, reject) => {
|
|
627
|
-
crudCreateReject = reject;
|
|
628
|
-
});
|
|
629
|
-
objectInstance.state.crud.create.mockReturnValueOnce(crudCreatePromise);
|
|
630
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
631
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
632
|
-
expect(objectInstance.state.loading).toBeUndefined();
|
|
633
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
634
|
-
const oiCreateResolve = objectInstance.create({
|
|
635
|
-
object: {
|
|
636
|
-
name: "qwer",
|
|
637
|
-
},
|
|
638
|
-
fields,
|
|
639
|
-
});
|
|
640
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
641
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
642
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
643
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
644
|
-
// @ts-ignore - crudCreateReject is set in the promise, so it will be defined
|
|
645
|
-
crudCreateReject(crudCreateRejected);
|
|
646
|
-
await flushPromises();
|
|
647
|
-
expect(objectInstance.state.error).toEqual(crudCreateRejected);
|
|
648
|
-
expect(objectInstance.state.errored).toBe(true);
|
|
649
|
-
expect(objectInstance.state.loading).toBe(false);
|
|
650
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
651
|
-
expect(objectInstance.state.crud.create).toHaveBeenCalledWith({
|
|
652
|
-
crudArgs: {
|
|
653
|
-
stream: "test_stream",
|
|
654
|
-
},
|
|
655
|
-
pkKey: "pk",
|
|
656
|
-
object: {
|
|
657
|
-
name: "qwer",
|
|
658
|
-
},
|
|
659
|
-
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
660
|
-
});
|
|
661
|
-
expect(objectInstance.state.crud.create).toHaveBeenCalledTimes(1);
|
|
662
|
-
const returnValue = await oiCreateResolve;
|
|
663
|
-
expect(returnValue).toBe(false);
|
|
664
|
-
});
|
|
665
|
-
it("already loading", async function () {
|
|
666
|
-
const id = ref(1);
|
|
667
|
-
const retrieveArgs = reactive({ fields });
|
|
668
|
-
const objectInstance = useObjectInstance({
|
|
669
|
-
props: {
|
|
670
|
-
crudArgs: { stream: "test_stream" },
|
|
671
|
-
pk: id,
|
|
672
|
-
pkKey: "id",
|
|
673
|
-
retrieveArgs,
|
|
674
|
-
},
|
|
675
|
-
});
|
|
676
|
-
objectInstance.state.crud.create = vi.fn();
|
|
677
|
-
const crudCreatePromise = new Promise(() => {});
|
|
678
|
-
objectInstance.state.crud.create.mockReturnValueOnce(crudCreatePromise);
|
|
679
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
680
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
681
|
-
expect(objectInstance.state.loading).toBeUndefined();
|
|
682
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
683
|
-
objectInstance.create({
|
|
684
|
-
object: {
|
|
685
|
-
name: "qwer",
|
|
686
|
-
},
|
|
687
|
-
});
|
|
688
|
-
await expect(() =>
|
|
689
|
-
objectInstance.create({
|
|
690
|
-
object: {
|
|
691
|
-
name: "qwer",
|
|
692
|
-
},
|
|
693
|
-
})
|
|
694
|
-
).rejects.toThrow(ObjectError);
|
|
695
|
-
expect(objectInstance.state.crud.create).toHaveBeenCalledWith({
|
|
696
|
-
crudArgs: {
|
|
697
|
-
stream: "test_stream",
|
|
698
|
-
},
|
|
699
|
-
pkKey: "id",
|
|
700
|
-
object: {
|
|
701
|
-
name: "qwer",
|
|
702
|
-
},
|
|
703
|
-
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
704
|
-
});
|
|
705
|
-
expect(objectInstance.state.crud.create).toHaveBeenCalledTimes(1);
|
|
706
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
707
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
708
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
709
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
710
|
-
});
|
|
711
|
-
});
|
|
712
|
-
describe("update", function () {
|
|
713
|
-
it("success", async function () {
|
|
714
|
-
const id = ref(1);
|
|
715
|
-
const retrieveArgs = reactive({ fields });
|
|
716
|
-
const objectInstance = useObjectInstance({
|
|
717
|
-
props: {
|
|
718
|
-
crudArgs: { stream: "test_stream" },
|
|
719
|
-
pk: id,
|
|
720
|
-
pkKey: "id",
|
|
721
|
-
retrieveArgs,
|
|
722
|
-
},
|
|
723
|
-
});
|
|
724
|
-
let crudUpdateResolve;
|
|
725
|
-
const crudUpdatePromise = new Promise((resolve) => {
|
|
726
|
-
crudUpdateResolve = resolve;
|
|
727
|
-
});
|
|
728
|
-
objectInstance.state.crud.update = vi.fn();
|
|
729
|
-
objectInstance.state.crud.update.mockReturnValueOnce(crudUpdatePromise);
|
|
730
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
731
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
732
|
-
expect(objectInstance.state.loading).toBeUndefined();
|
|
733
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
734
|
-
const oiUpdatePromise = objectInstance.update({
|
|
735
|
-
object: {
|
|
736
|
-
id: 1,
|
|
737
|
-
name: "zxcv!",
|
|
738
|
-
},
|
|
739
|
-
});
|
|
740
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
741
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
742
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
743
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
744
|
-
await nextTick();
|
|
745
|
-
// @ts-ignore - crudUpdateResolve is set in the promise, so it will be defined
|
|
746
|
-
crudUpdateResolve(crudUpdateResolved);
|
|
747
|
-
await flushPromises();
|
|
748
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
749
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
750
|
-
expect(objectInstance.state.loading).toBe(false);
|
|
751
|
-
expect({ ...objectInstance.state.object }).toEqual(crudUpdateResolved);
|
|
752
|
-
await nextTick();
|
|
753
|
-
await expect(oiUpdatePromise).resolves.toBe(true);
|
|
754
|
-
expect(objectInstance.state.crud.update).toHaveBeenCalledWith({
|
|
755
|
-
crudArgs: {
|
|
756
|
-
stream: "test_stream",
|
|
757
|
-
},
|
|
758
|
-
pkKey: "id",
|
|
759
|
-
object: {
|
|
760
|
-
id: 1,
|
|
761
|
-
name: "zxcv!",
|
|
762
|
-
},
|
|
763
|
-
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
764
|
-
});
|
|
765
|
-
expect(objectInstance.state.crud.update).toHaveBeenCalledTimes(1);
|
|
766
|
-
});
|
|
767
|
-
it("success (retrieveArgs)", async function () {
|
|
768
|
-
const id = ref(1);
|
|
769
|
-
const retrieveArgs = reactive({ fields });
|
|
770
|
-
const objectInstance = useObjectInstance({
|
|
771
|
-
props: {
|
|
772
|
-
crudArgs: { stream: "test_stream" },
|
|
773
|
-
pk: id,
|
|
774
|
-
pkKey: "id",
|
|
775
|
-
retrieveArgs,
|
|
776
|
-
},
|
|
777
|
-
});
|
|
778
|
-
let crudUpdateResolve;
|
|
779
|
-
const crudUpdatePromise = new Promise((resolve) => {
|
|
780
|
-
crudUpdateResolve = resolve;
|
|
781
|
-
});
|
|
782
|
-
objectInstance.state.crud.update = vi.fn();
|
|
783
|
-
objectInstance.state.crud.update.mockReturnValueOnce(crudUpdatePromise);
|
|
784
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
785
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
786
|
-
expect(objectInstance.state.loading).toBeUndefined();
|
|
787
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
788
|
-
const oiUpdatePromise = objectInstance.update({
|
|
789
|
-
object: {
|
|
790
|
-
id: 1,
|
|
791
|
-
name: "zxcv!",
|
|
792
|
-
},
|
|
793
|
-
});
|
|
794
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
795
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
796
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
797
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
798
|
-
// @ts-ignore - crudUpdateResolve is set in the promise, so it will be defined
|
|
799
|
-
crudUpdateResolve(crudUpdateResolved);
|
|
800
|
-
await flushPromises();
|
|
801
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
802
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
803
|
-
expect(objectInstance.state.loading).toBe(false);
|
|
804
|
-
expect({ ...objectInstance.state.object }).toEqual(crudUpdateResolved);
|
|
805
|
-
await expect(oiUpdatePromise).resolves.toBe(true);
|
|
806
|
-
expect(objectInstance.state.crud.update).toHaveBeenCalledWith({
|
|
807
|
-
crudArgs: {
|
|
808
|
-
stream: "test_stream",
|
|
809
|
-
},
|
|
810
|
-
pkKey: "id",
|
|
811
|
-
object: {
|
|
812
|
-
id: 1,
|
|
813
|
-
name: "zxcv!",
|
|
814
|
-
},
|
|
815
|
-
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
816
|
-
});
|
|
817
|
-
expect(objectInstance.state.crud.update).toHaveBeenCalledTimes(1);
|
|
818
|
-
});
|
|
819
|
-
it("success with non-standard pk", async function () {
|
|
820
|
-
const id = ref(1);
|
|
821
|
-
const retrieveArgs = reactive({ fields });
|
|
822
|
-
const objectInstance = useObjectInstance({
|
|
823
|
-
props: {
|
|
824
|
-
crudArgs: { stream: "test_stream" },
|
|
825
|
-
pk: id,
|
|
826
|
-
pkKey: "unique",
|
|
827
|
-
retrieveArgs,
|
|
828
|
-
},
|
|
829
|
-
});
|
|
830
|
-
let crudUpdateResolve;
|
|
831
|
-
const crudUpdatePromise = new Promise((resolve) => {
|
|
832
|
-
crudUpdateResolve = resolve;
|
|
833
|
-
});
|
|
834
|
-
objectInstance.state.crud.update = vi.fn();
|
|
835
|
-
objectInstance.state.crud.update.mockReturnValueOnce(crudUpdatePromise);
|
|
836
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
837
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
838
|
-
expect(objectInstance.state.loading).toBeUndefined();
|
|
839
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
840
|
-
const oiUpdatePromise = objectInstance.update({
|
|
841
|
-
object: {
|
|
842
|
-
unique: 1,
|
|
843
|
-
name: "zxcv!",
|
|
844
|
-
},
|
|
845
|
-
});
|
|
846
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
847
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
848
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
849
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
850
|
-
// @ts-ignore - crudUpdateResolve is set in the promise, so it will be defined
|
|
851
|
-
crudUpdateResolve(crudUpdateResolvedWithNonStandardPk);
|
|
852
|
-
await flushPromises();
|
|
853
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
854
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
855
|
-
expect(objectInstance.state.loading).toBe(false);
|
|
856
|
-
expect({ ...objectInstance.state.object }).toEqual(crudUpdateResolvedWithNonStandardPk);
|
|
857
|
-
await expect(oiUpdatePromise).resolves.toBe(true);
|
|
858
|
-
expect(objectInstance.state.crud.update).toHaveBeenCalledWith({
|
|
859
|
-
crudArgs: {
|
|
860
|
-
stream: "test_stream",
|
|
861
|
-
},
|
|
862
|
-
pkKey: "unique",
|
|
863
|
-
object: {
|
|
864
|
-
unique: 1,
|
|
865
|
-
name: "zxcv!",
|
|
866
|
-
},
|
|
867
|
-
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
868
|
-
});
|
|
869
|
-
expect(objectInstance.state.crud.update).toHaveBeenCalledTimes(1);
|
|
870
|
-
});
|
|
871
|
-
it("errored", async function () {
|
|
872
|
-
const id = ref(1);
|
|
873
|
-
const retrieveArgs = reactive({ fields });
|
|
874
|
-
const objectInstance = useObjectInstance({
|
|
875
|
-
props: {
|
|
876
|
-
crudArgs: { stream: "test_stream" },
|
|
877
|
-
pk: id,
|
|
878
|
-
pkKey: "id",
|
|
879
|
-
retrieveArgs,
|
|
880
|
-
},
|
|
881
|
-
});
|
|
882
|
-
let crudUpdateReject;
|
|
883
|
-
const crudUpdatePromise = new Promise((resolve, reject) => {
|
|
884
|
-
crudUpdateReject = reject;
|
|
885
|
-
});
|
|
886
|
-
objectInstance.state.crud.update = vi.fn();
|
|
887
|
-
objectInstance.state.crud.update.mockReturnValueOnce(crudUpdatePromise);
|
|
888
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
889
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
890
|
-
expect(objectInstance.state.loading).toBeUndefined();
|
|
891
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
892
|
-
const oiUpdatePromise = objectInstance.update({
|
|
893
|
-
object: {
|
|
894
|
-
id: 1,
|
|
895
|
-
name: "zxcv!",
|
|
896
|
-
},
|
|
897
|
-
});
|
|
898
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
899
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
900
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
901
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
902
|
-
// @ts-ignore - crudUpdateReject is set in the promise, so it will be defined
|
|
903
|
-
crudUpdateReject(crudUpdateRejected);
|
|
904
|
-
await flushPromises();
|
|
905
|
-
expect(objectInstance.state.error).toEqual(crudUpdateRejected);
|
|
906
|
-
expect(objectInstance.state.errored).toBe(true);
|
|
907
|
-
expect(objectInstance.state.loading).toBe(false);
|
|
908
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
909
|
-
await expect(oiUpdatePromise).resolves.toBe(false);
|
|
910
|
-
expect(objectInstance.state.crud.update).toHaveBeenCalledWith({
|
|
911
|
-
crudArgs: {
|
|
912
|
-
stream: "test_stream",
|
|
913
|
-
},
|
|
914
|
-
pkKey: "id",
|
|
915
|
-
object: {
|
|
916
|
-
id: 1,
|
|
917
|
-
name: "zxcv!",
|
|
918
|
-
},
|
|
919
|
-
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
920
|
-
});
|
|
921
|
-
expect(objectInstance.state.crud.update).toHaveBeenCalledTimes(1);
|
|
922
|
-
});
|
|
923
|
-
it("errored with non-matching pkKey", async function () {
|
|
924
|
-
const id = ref(1);
|
|
925
|
-
const retrieveArgs = reactive({ fields });
|
|
926
|
-
const objectInstance = useObjectInstance({
|
|
927
|
-
props: {
|
|
928
|
-
crudArgs: { stream: "test_stream" },
|
|
929
|
-
pk: id,
|
|
930
|
-
pkKey: "id",
|
|
931
|
-
retrieveArgs,
|
|
932
|
-
},
|
|
933
|
-
});
|
|
934
|
-
let crudUpdateReject;
|
|
935
|
-
const crudUpdatePromise = new Promise((resolve, reject) => {
|
|
936
|
-
crudUpdateReject = reject;
|
|
937
|
-
});
|
|
938
|
-
objectInstance.state.crud.update = vi.fn();
|
|
939
|
-
objectInstance.state.crud.update.mockReturnValueOnce(crudUpdatePromise);
|
|
940
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
941
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
942
|
-
expect(objectInstance.state.loading).toBeUndefined();
|
|
943
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
944
|
-
const oiUpdatePromise = objectInstance.update({
|
|
945
|
-
object: {
|
|
946
|
-
id: 1,
|
|
947
|
-
name: "zxcv!",
|
|
948
|
-
},
|
|
949
|
-
});
|
|
950
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
951
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
952
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
953
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
954
|
-
// @ts-ignore - crudUpdateReject is set in the promise, so it will be defined
|
|
955
|
-
crudUpdateReject(crudUpdateRejected);
|
|
956
|
-
await flushPromises();
|
|
957
|
-
expect(objectInstance.state.error).toEqual(crudUpdateRejected);
|
|
958
|
-
expect(objectInstance.state.errored).toBe(true);
|
|
959
|
-
expect(objectInstance.state.loading).toBe(false);
|
|
960
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
961
|
-
await expect(oiUpdatePromise).resolves.toBe(false);
|
|
962
|
-
expect(objectInstance.state.crud.update).toHaveBeenCalledWith({
|
|
963
|
-
crudArgs: {
|
|
964
|
-
stream: "test_stream",
|
|
965
|
-
},
|
|
966
|
-
pkKey: "id",
|
|
967
|
-
object: {
|
|
968
|
-
id: 1,
|
|
969
|
-
name: "zxcv!",
|
|
970
|
-
},
|
|
971
|
-
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
972
|
-
});
|
|
973
|
-
expect(objectInstance.state.crud.update).toHaveBeenCalledTimes(1);
|
|
974
|
-
});
|
|
975
|
-
it("already loading", async function () {
|
|
976
|
-
const id = ref(1);
|
|
977
|
-
const retrieveArgs = reactive({ fields });
|
|
978
|
-
const objectInstance = useObjectInstance({
|
|
979
|
-
props: {
|
|
980
|
-
crudArgs: { stream: "test_stream" },
|
|
981
|
-
pk: id,
|
|
982
|
-
pkKey: "id",
|
|
983
|
-
retrieveArgs,
|
|
984
|
-
},
|
|
985
|
-
});
|
|
986
|
-
const crudUpdatePromise = new Promise(() => {});
|
|
987
|
-
objectInstance.state.crud.update = vi.fn();
|
|
988
|
-
objectInstance.state.crud.update.mockReturnValueOnce(crudUpdatePromise);
|
|
989
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
990
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
991
|
-
expect(objectInstance.state.loading).toBeUndefined();
|
|
992
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
993
|
-
objectInstance.update({
|
|
994
|
-
object: {
|
|
995
|
-
id: 1,
|
|
996
|
-
name: "zxcv!",
|
|
997
|
-
},
|
|
998
|
-
});
|
|
999
|
-
await expect(() =>
|
|
1000
|
-
objectInstance.update({
|
|
1001
|
-
object: {
|
|
1002
|
-
id: 1,
|
|
1003
|
-
name: "zxcv!",
|
|
1004
|
-
},
|
|
1005
|
-
})
|
|
1006
|
-
).rejects.toThrow(ObjectError);
|
|
1007
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
1008
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
1009
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
1010
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
1011
|
-
expect(objectInstance.state.crud.update).toHaveBeenCalledWith({
|
|
1012
|
-
crudArgs: {
|
|
1013
|
-
stream: "test_stream",
|
|
1014
|
-
},
|
|
1015
|
-
pkKey: "id",
|
|
1016
|
-
object: {
|
|
1017
|
-
id: 1,
|
|
1018
|
-
name: "zxcv!",
|
|
1019
|
-
},
|
|
1020
|
-
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
1021
|
-
});
|
|
1022
|
-
expect(objectInstance.state.crud.update).toHaveBeenCalledTimes(1);
|
|
1023
|
-
});
|
|
1024
|
-
});
|
|
1025
|
-
describe("patch", function () {
|
|
1026
|
-
it("success", async function () {
|
|
1027
|
-
const id = ref(1);
|
|
1028
|
-
const retrieveArgs = reactive({ fields });
|
|
1029
|
-
const objectInstance = useObjectInstance({
|
|
1030
|
-
props: {
|
|
1031
|
-
crudArgs: { stream: "test_stream" },
|
|
1032
|
-
pk: id,
|
|
1033
|
-
pkKey: "id",
|
|
1034
|
-
retrieveArgs,
|
|
1035
|
-
},
|
|
1036
|
-
});
|
|
1037
|
-
let crudPatchResolve;
|
|
1038
|
-
const crudPatchPromise = new Promise((resolve) => {
|
|
1039
|
-
crudPatchResolve = resolve;
|
|
1040
|
-
});
|
|
1041
|
-
objectInstance.state.crud.patch = vi.fn();
|
|
1042
|
-
objectInstance.state.crud.patch.mockReturnValueOnce(crudPatchPromise);
|
|
1043
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
1044
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
1045
|
-
expect(objectInstance.state.loading).toBeUndefined();
|
|
1046
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
1047
|
-
const oiPatchPromise = objectInstance.patch({
|
|
1048
|
-
partialObject: {
|
|
1049
|
-
id: 1,
|
|
1050
|
-
name: "zxcv!",
|
|
1051
|
-
},
|
|
1052
|
-
});
|
|
1053
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
1054
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
1055
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
1056
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
1057
|
-
await nextTick();
|
|
1058
|
-
// @ts-ignore - crudPatchResolve is set in the promise, so it will be defined
|
|
1059
|
-
crudPatchResolve(crudPatchResolved);
|
|
1060
|
-
await flushPromises();
|
|
1061
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
1062
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
1063
|
-
expect(objectInstance.state.loading).toBe(false);
|
|
1064
|
-
expect({ ...objectInstance.state.object }).toEqual(crudPatchResolved);
|
|
1065
|
-
await nextTick();
|
|
1066
|
-
await expect(oiPatchPromise).resolves.toBe(true);
|
|
1067
|
-
expect(objectInstance.state.crud.patch).toHaveBeenCalledWith({
|
|
1068
|
-
crudArgs: {
|
|
1069
|
-
stream: "test_stream",
|
|
1070
|
-
},
|
|
1071
|
-
pk: 1,
|
|
1072
|
-
pkKey: "id",
|
|
1073
|
-
partialObject: {
|
|
1074
|
-
id: 1,
|
|
1075
|
-
name: "zxcv!",
|
|
1076
|
-
},
|
|
1077
|
-
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
1078
|
-
});
|
|
1079
|
-
expect(objectInstance.state.crud.patch).toHaveBeenCalledTimes(1);
|
|
1080
|
-
});
|
|
1081
|
-
it("success with non-standard pk", async function () {
|
|
1082
|
-
const id = ref(1);
|
|
1083
|
-
const retrieveArgs = reactive({ fields });
|
|
1084
|
-
const objectInstance = useObjectInstance({
|
|
1085
|
-
props: {
|
|
1086
|
-
crudArgs: { stream: "test_stream" },
|
|
1087
|
-
pk: id,
|
|
1088
|
-
pkKey: "unique",
|
|
1089
|
-
retrieveArgs,
|
|
1090
|
-
},
|
|
1091
|
-
});
|
|
1092
|
-
let crudPatchResolve;
|
|
1093
|
-
const crudPatchPromise = new Promise((resolve) => {
|
|
1094
|
-
crudPatchResolve = resolve;
|
|
1095
|
-
});
|
|
1096
|
-
objectInstance.state.crud.patch = vi.fn();
|
|
1097
|
-
objectInstance.state.crud.patch.mockReturnValueOnce(crudPatchPromise);
|
|
1098
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
1099
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
1100
|
-
expect(objectInstance.state.loading).toBeUndefined();
|
|
1101
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
1102
|
-
const oiPatchPromise = objectInstance.patch({
|
|
1103
|
-
partialObject: {
|
|
1104
|
-
unique: 1,
|
|
1105
|
-
name: "zxcv!",
|
|
1106
|
-
},
|
|
1107
|
-
});
|
|
1108
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
1109
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
1110
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
1111
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
1112
|
-
await nextTick();
|
|
1113
|
-
// @ts-ignore - crudPatchResolve is set in the promise, so it will be defined
|
|
1114
|
-
crudPatchResolve(crudPatchResolvedWithNonStandardPk);
|
|
1115
|
-
await flushPromises();
|
|
1116
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
1117
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
1118
|
-
expect(objectInstance.state.loading).toBe(false);
|
|
1119
|
-
expect({ ...objectInstance.state.object }).toEqual(crudPatchResolvedWithNonStandardPk);
|
|
1120
|
-
await nextTick();
|
|
1121
|
-
await expect(oiPatchPromise).resolves.toBe(true);
|
|
1122
|
-
expect(objectInstance.state.crud.patch).toHaveBeenCalledWith({
|
|
1123
|
-
crudArgs: {
|
|
1124
|
-
stream: "test_stream",
|
|
1125
|
-
},
|
|
1126
|
-
pk: 1,
|
|
1127
|
-
pkKey: "unique",
|
|
1128
|
-
partialObject: {
|
|
1129
|
-
unique: 1,
|
|
1130
|
-
name: "zxcv!",
|
|
1131
|
-
},
|
|
1132
|
-
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
1133
|
-
});
|
|
1134
|
-
expect(objectInstance.state.crud.patch).toHaveBeenCalledTimes(1);
|
|
1135
|
-
});
|
|
1136
|
-
it("errored", async function () {
|
|
1137
|
-
const id = ref(1);
|
|
1138
|
-
const retrieveArgs = reactive({ fields });
|
|
1139
|
-
const objectInstance = useObjectInstance({
|
|
1140
|
-
props: {
|
|
1141
|
-
crudArgs: { stream: "test_stream" },
|
|
1142
|
-
pk: id,
|
|
1143
|
-
pkKey: "id",
|
|
1144
|
-
retrieveArgs,
|
|
1145
|
-
},
|
|
1146
|
-
});
|
|
1147
|
-
let crudPatchReject;
|
|
1148
|
-
const crudPatchPromise = new Promise((resolve, reject) => {
|
|
1149
|
-
crudPatchReject = reject;
|
|
1150
|
-
});
|
|
1151
|
-
objectInstance.state.crud.patch = vi.fn();
|
|
1152
|
-
objectInstance.state.crud.patch.mockReturnValueOnce(crudPatchPromise);
|
|
1153
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
1154
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
1155
|
-
expect(objectInstance.state.loading).toBeUndefined();
|
|
1156
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
1157
|
-
const oiPatchPromise = objectInstance.patch({
|
|
1158
|
-
partialObject: {
|
|
1159
|
-
id: 1,
|
|
1160
|
-
name: "zxcv!",
|
|
1161
|
-
},
|
|
1162
|
-
});
|
|
1163
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
1164
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
1165
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
1166
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
1167
|
-
// @ts-ignore - crudPatchReject is set in the promise, so it will be defined
|
|
1168
|
-
crudPatchReject(crudPatchRejected);
|
|
1169
|
-
await flushPromises();
|
|
1170
|
-
expect(objectInstance.state.error).toEqual(crudPatchRejected);
|
|
1171
|
-
expect(objectInstance.state.errored).toBe(true);
|
|
1172
|
-
expect(objectInstance.state.loading).toBe(false);
|
|
1173
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
1174
|
-
await expect(oiPatchPromise).resolves.toBe(false);
|
|
1175
|
-
expect(objectInstance.state.crud.patch).toHaveBeenCalledWith({
|
|
1176
|
-
crudArgs: {
|
|
1177
|
-
stream: "test_stream",
|
|
1178
|
-
},
|
|
1179
|
-
pk: 1,
|
|
1180
|
-
pkKey: "id",
|
|
1181
|
-
partialObject: {
|
|
1182
|
-
id: 1,
|
|
1183
|
-
name: "zxcv!",
|
|
1184
|
-
},
|
|
1185
|
-
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
1186
|
-
});
|
|
1187
|
-
expect(objectInstance.state.crud.patch).toHaveBeenCalledTimes(1);
|
|
1188
|
-
});
|
|
1189
|
-
it("errored with non-matching pkKey", async function () {
|
|
1190
|
-
const id = ref(1);
|
|
1191
|
-
const retrieveArgs = reactive({ fields });
|
|
1192
|
-
const objectInstance = useObjectInstance({
|
|
1193
|
-
props: {
|
|
1194
|
-
crudArgs: { stream: "test_stream" },
|
|
1195
|
-
pk: id,
|
|
1196
|
-
pkKey: "pk",
|
|
1197
|
-
retrieveArgs,
|
|
1198
|
-
},
|
|
1199
|
-
});
|
|
1200
|
-
let crudPatchReject;
|
|
1201
|
-
const crudPatchPromise = new Promise((resolve, reject) => {
|
|
1202
|
-
crudPatchReject = reject;
|
|
1203
|
-
});
|
|
1204
|
-
objectInstance.state.crud.patch = vi.fn();
|
|
1205
|
-
objectInstance.state.crud.patch.mockReturnValueOnce(crudPatchPromise);
|
|
1206
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
1207
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
1208
|
-
expect(objectInstance.state.loading).toBeUndefined();
|
|
1209
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
1210
|
-
const oiPatchPromise = objectInstance.patch({
|
|
1211
|
-
partialObject: {
|
|
1212
|
-
id: 1,
|
|
1213
|
-
name: "zxcv!",
|
|
1214
|
-
},
|
|
1215
|
-
});
|
|
1216
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
1217
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
1218
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
1219
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
1220
|
-
// @ts-ignore - crudPatchReject is set in the promise, so it will be defined
|
|
1221
|
-
crudPatchReject(crudPatchRejected);
|
|
1222
|
-
await flushPromises();
|
|
1223
|
-
expect(objectInstance.state.error).toEqual(crudPatchRejected);
|
|
1224
|
-
expect(objectInstance.state.errored).toBe(true);
|
|
1225
|
-
expect(objectInstance.state.loading).toBe(false);
|
|
1226
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
1227
|
-
await expect(oiPatchPromise).resolves.toBe(false);
|
|
1228
|
-
expect(objectInstance.state.crud.patch).toHaveBeenCalledWith({
|
|
1229
|
-
crudArgs: {
|
|
1230
|
-
stream: "test_stream",
|
|
1231
|
-
},
|
|
1232
|
-
pk: 1,
|
|
1233
|
-
pkKey: "pk",
|
|
1234
|
-
partialObject: {
|
|
1235
|
-
id: 1,
|
|
1236
|
-
name: "zxcv!",
|
|
1237
|
-
},
|
|
1238
|
-
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
1239
|
-
});
|
|
1240
|
-
expect(objectInstance.state.crud.patch).toHaveBeenCalledTimes(1);
|
|
1241
|
-
});
|
|
1242
|
-
it("already loading", async function () {
|
|
1243
|
-
const pk = ref(1);
|
|
1244
|
-
const retrieveArgs = reactive({ fields });
|
|
1245
|
-
const objectInstance = useObjectInstance({
|
|
1246
|
-
props: {
|
|
1247
|
-
crudArgs: { stream: "test_stream" },
|
|
1248
|
-
pk,
|
|
1249
|
-
pkKey: "id",
|
|
1250
|
-
retrieveArgs,
|
|
1251
|
-
},
|
|
1252
|
-
});
|
|
1253
|
-
const crudPatchPromise = new Promise(() => {});
|
|
1254
|
-
objectInstance.state.crud.patch = vi.fn();
|
|
1255
|
-
objectInstance.state.crud.patch.mockReturnValueOnce(crudPatchPromise);
|
|
1256
|
-
objectInstance.patch({
|
|
1257
|
-
partialObject: {
|
|
1258
|
-
id: 1,
|
|
1259
|
-
name: "zxcv!",
|
|
1260
|
-
},
|
|
1261
|
-
});
|
|
1262
|
-
await expect(() =>
|
|
1263
|
-
objectInstance.patch({
|
|
1264
|
-
partialObject: {
|
|
1265
|
-
id: 1,
|
|
1266
|
-
name: "zxcv!",
|
|
1267
|
-
},
|
|
1268
|
-
})
|
|
1269
|
-
).rejects.toThrow(ObjectError);
|
|
1270
|
-
expect(objectInstance.state.crud.patch).toHaveBeenCalledWith({
|
|
1271
|
-
crudArgs: {
|
|
1272
|
-
stream: "test_stream",
|
|
1273
|
-
},
|
|
1274
|
-
pk: 1,
|
|
1275
|
-
pkKey: "id",
|
|
1276
|
-
partialObject: {
|
|
1277
|
-
id: 1,
|
|
1278
|
-
name: "zxcv!",
|
|
1279
|
-
},
|
|
1280
|
-
retrieveArgs: { fields: ["id", "__str__", "name"] },
|
|
1281
|
-
});
|
|
1282
|
-
expect(objectInstance.state.crud.patch).toHaveBeenCalledTimes(1);
|
|
1283
|
-
});
|
|
1284
|
-
});
|
|
1285
|
-
describe("delete", function () {
|
|
1286
|
-
it("success", async function () {
|
|
1287
|
-
const pk = ref(1);
|
|
1288
|
-
const retrieveArgs = reactive({ fields });
|
|
1289
|
-
const objectInstance = useObjectInstance({
|
|
1290
|
-
props: {
|
|
1291
|
-
crudArgs: { stream: "test_stream" },
|
|
1292
|
-
pk,
|
|
1293
|
-
pkKey: "unique",
|
|
1294
|
-
retrieveArgs,
|
|
1295
|
-
},
|
|
1296
|
-
});
|
|
1297
|
-
assignReactiveObject(objectInstance.state.object, crudRetrieveResolvedNonStandardPrimaryKey);
|
|
1298
|
-
let deleteResolve;
|
|
1299
|
-
const deletePromise = new Promise((resolve) => {
|
|
1300
|
-
deleteResolve = resolve;
|
|
1301
|
-
});
|
|
1302
|
-
objectInstance.state.crud.delete = vi.fn();
|
|
1303
|
-
objectInstance.state.crud.delete.mockReturnValueOnce(deletePromise);
|
|
1304
|
-
|
|
1305
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
1306
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
1307
|
-
expect(objectInstance.state.loading).toBeUndefined();
|
|
1308
|
-
expect(objectInstance.state.deleted).toBe(false);
|
|
1309
|
-
expect({ ...objectInstance.state.object }).toEqual(crudRetrieveResolvedNonStandardPrimaryKey);
|
|
1310
|
-
|
|
1311
|
-
const returnsPromise = objectInstance.delete();
|
|
1312
|
-
|
|
1313
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
1314
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
1315
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
1316
|
-
expect(objectInstance.state.deleted).toBe(false);
|
|
1317
|
-
expect({ ...objectInstance.state.object }).toEqual(crudRetrieveResolvedNonStandardPrimaryKey);
|
|
1318
|
-
await nextTick();
|
|
1319
|
-
|
|
1320
|
-
// @ts-ignore - deleteResolve is set in the promise, so it will be defined
|
|
1321
|
-
deleteResolve(crudDeleteResolved);
|
|
1322
|
-
await flushPromises();
|
|
1323
|
-
|
|
1324
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
1325
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
1326
|
-
expect(objectInstance.state.loading).toBe(false);
|
|
1327
|
-
expect(objectInstance.state.deleted).toBe(true);
|
|
1328
|
-
expect({ ...objectInstance.state.object }).toEqual({});
|
|
1329
|
-
await nextTick();
|
|
1330
|
-
|
|
1331
|
-
await expect(returnsPromise).resolves.toBe(true);
|
|
1332
|
-
expect(objectInstance.state.crud.delete).toHaveBeenCalledWith({
|
|
1333
|
-
crudArgs: { stream: "test_stream" },
|
|
1334
|
-
pk: 1,
|
|
1335
|
-
pkKey: "unique",
|
|
1336
|
-
});
|
|
1337
|
-
expect(objectInstance.state.crud.delete).toHaveBeenCalledTimes(1);
|
|
1338
|
-
});
|
|
1339
|
-
it("errored", async function () {
|
|
1340
|
-
const pk = ref(1);
|
|
1341
|
-
const retrieveArgs = reactive({ fields });
|
|
1342
|
-
const objectInstance = useObjectInstance({
|
|
1343
|
-
props: {
|
|
1344
|
-
crudArgs: { stream: "test_stream" },
|
|
1345
|
-
pk,
|
|
1346
|
-
pkKey: "id",
|
|
1347
|
-
retrieveArgs,
|
|
1348
|
-
},
|
|
1349
|
-
});
|
|
1350
|
-
assignReactiveObject(objectInstance.state.object, crudRetrieveResolved);
|
|
1351
|
-
let deleteReject;
|
|
1352
|
-
const deletePromise = new Promise((resolve, reject) => {
|
|
1353
|
-
deleteReject = reject;
|
|
1354
|
-
});
|
|
1355
|
-
objectInstance.state.crud.delete = vi.fn();
|
|
1356
|
-
objectInstance.state.crud.delete.mockReturnValueOnce(deletePromise);
|
|
1357
|
-
|
|
1358
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
1359
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
1360
|
-
expect(objectInstance.state.loading).toBeUndefined();
|
|
1361
|
-
expect(objectInstance.state.deleted).toBe(false);
|
|
1362
|
-
expect({ ...objectInstance.state.object }).toEqual(crudRetrieveResolved);
|
|
1363
|
-
|
|
1364
|
-
const returnsPromise = objectInstance.delete();
|
|
1365
|
-
|
|
1366
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
1367
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
1368
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
1369
|
-
expect(objectInstance.state.deleted).toBe(false);
|
|
1370
|
-
expect({ ...objectInstance.state.object }).toEqual(crudRetrieveResolved);
|
|
1371
|
-
await nextTick();
|
|
1372
|
-
|
|
1373
|
-
// @ts-ignore - deleteReject is set in the promise, so it will be defined
|
|
1374
|
-
deleteReject(crudDeleteRejected);
|
|
1375
|
-
await flushPromises();
|
|
1376
|
-
|
|
1377
|
-
expect(objectInstance.state.error).toEqual(crudDeleteRejected);
|
|
1378
|
-
expect(objectInstance.state.errored).toBe(true);
|
|
1379
|
-
expect(objectInstance.state.loading).toBe(false);
|
|
1380
|
-
expect(objectInstance.state.deleted).toBe(false);
|
|
1381
|
-
expect({ ...objectInstance.state.object }).toEqual(crudRetrieveResolved);
|
|
1382
|
-
await nextTick();
|
|
1383
|
-
|
|
1384
|
-
await expect(returnsPromise).resolves.toBe(false);
|
|
1385
|
-
expect(objectInstance.state.crud.delete).toHaveBeenCalledWith({
|
|
1386
|
-
crudArgs: { stream: "test_stream" },
|
|
1387
|
-
pk: 1,
|
|
1388
|
-
pkKey: "id",
|
|
1389
|
-
});
|
|
1390
|
-
expect(objectInstance.state.crud.delete).toHaveBeenCalledTimes(1);
|
|
1391
|
-
});
|
|
1392
|
-
it("errored with non-matching pkKey", async function () {
|
|
1393
|
-
const pk = ref(1);
|
|
1394
|
-
const retrieveArgs = reactive({ fields });
|
|
1395
|
-
const objectInstance = useObjectInstance({
|
|
1396
|
-
props: {
|
|
1397
|
-
crudArgs: { stream: "test_stream" },
|
|
1398
|
-
pk,
|
|
1399
|
-
pkKey: "unique",
|
|
1400
|
-
retrieveArgs,
|
|
1401
|
-
},
|
|
1402
|
-
});
|
|
1403
|
-
assignReactiveObject(objectInstance.state.object, crudRetrieveResolved);
|
|
1404
|
-
let deleteReject;
|
|
1405
|
-
const deletePromise = new Promise((resolve, reject) => {
|
|
1406
|
-
deleteReject = reject;
|
|
1407
|
-
});
|
|
1408
|
-
objectInstance.state.crud.delete = vi.fn();
|
|
1409
|
-
objectInstance.state.crud.delete.mockReturnValueOnce(deletePromise);
|
|
1410
|
-
|
|
1411
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
1412
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
1413
|
-
expect(objectInstance.state.loading).toBeUndefined();
|
|
1414
|
-
expect(objectInstance.state.deleted).toBe(false);
|
|
1415
|
-
expect({ ...objectInstance.state.object }).toEqual(crudRetrieveResolved);
|
|
1416
|
-
|
|
1417
|
-
const returnsPromise = objectInstance.delete();
|
|
1418
|
-
|
|
1419
|
-
expectErrorToBeNull(objectInstance.state.error);
|
|
1420
|
-
expect(objectInstance.state.errored).toBe(false);
|
|
1421
|
-
expect(objectInstance.state.loading).toBe(true);
|
|
1422
|
-
expect(objectInstance.state.deleted).toBe(false);
|
|
1423
|
-
expect({ ...objectInstance.state.object }).toEqual(crudRetrieveResolved);
|
|
1424
|
-
await nextTick();
|
|
1425
|
-
|
|
1426
|
-
// @ts-ignore - deleteReject is set in the promise, so it will be defined
|
|
1427
|
-
deleteReject(crudDeleteRejected);
|
|
1428
|
-
await flushPromises();
|
|
1429
|
-
|
|
1430
|
-
expect(objectInstance.state.error).toEqual(crudDeleteRejected);
|
|
1431
|
-
expect(objectInstance.state.errored).toBe(true);
|
|
1432
|
-
expect(objectInstance.state.loading).toBe(false);
|
|
1433
|
-
expect(objectInstance.state.deleted).toBe(false);
|
|
1434
|
-
expect({ ...objectInstance.state.object }).toEqual(crudRetrieveResolved);
|
|
1435
|
-
await nextTick();
|
|
1436
|
-
|
|
1437
|
-
await expect(returnsPromise).resolves.toBe(false);
|
|
1438
|
-
expect(objectInstance.state.crud.delete).toHaveBeenCalledWith({
|
|
1439
|
-
crudArgs: { stream: "test_stream" },
|
|
1440
|
-
pk: 1,
|
|
1441
|
-
pkKey: "unique",
|
|
1442
|
-
});
|
|
1443
|
-
expect(objectInstance.state.crud.delete).toHaveBeenCalledTimes(1);
|
|
1444
|
-
});
|
|
1445
|
-
it("already loading", async function () {
|
|
1446
|
-
const pk = ref(1);
|
|
1447
|
-
const retrieveArgs = reactive({ fields });
|
|
1448
|
-
const objectInstance = useObjectInstance({
|
|
1449
|
-
props: {
|
|
1450
|
-
crudArgs: { stream: "test_stream" },
|
|
1451
|
-
pk,
|
|
1452
|
-
pkKey: "id",
|
|
1453
|
-
retrieveArgs,
|
|
1454
|
-
},
|
|
1455
|
-
});
|
|
1456
|
-
const deletePromise = new Promise(() => {});
|
|
1457
|
-
objectInstance.state.crud.delete = vi.fn();
|
|
1458
|
-
objectInstance.state.crud.delete.mockReturnValueOnce(deletePromise);
|
|
1459
|
-
objectInstance.delete(1);
|
|
1460
|
-
await expect(() => objectInstance.delete()).rejects.toThrow(ObjectError);
|
|
1461
|
-
expect(objectInstance.state.crud.delete).toHaveBeenCalledWith({
|
|
1462
|
-
crudArgs: { stream: "test_stream" },
|
|
1463
|
-
pk: 1,
|
|
1464
|
-
pkKey: "id",
|
|
1465
|
-
});
|
|
1466
|
-
expect(objectInstance.state.crud.delete).toHaveBeenCalledTimes(1);
|
|
1467
|
-
});
|
|
1468
|
-
});
|
|
1469
|
-
it("useObjectSubscriptions", async function () {
|
|
1470
|
-
const objectInstanceA = useObjectInstance({
|
|
1471
|
-
props: {
|
|
1472
|
-
crudArgs: { stream: "test_streamA" },
|
|
1473
|
-
pk: 1,
|
|
1474
|
-
pkKey: "id",
|
|
1475
|
-
retrieveArgs: {
|
|
1476
|
-
fields,
|
|
1477
|
-
},
|
|
1478
|
-
},
|
|
1479
|
-
});
|
|
1480
|
-
const objectInstanceB = useObjectInstance({
|
|
1481
|
-
props: {
|
|
1482
|
-
crudArgs: { stream: "test_streamB" },
|
|
1483
|
-
pk: 2,
|
|
1484
|
-
pkKey: "id",
|
|
1485
|
-
retrieveArgs: {
|
|
1486
|
-
fields,
|
|
1487
|
-
},
|
|
1488
|
-
},
|
|
1489
|
-
});
|
|
1490
|
-
const objInstances = useObjectInstances({
|
|
1491
|
-
A: {
|
|
1492
|
-
props: {
|
|
1493
|
-
crudArgs: { stream: "test_streamA" },
|
|
1494
|
-
pk: 1,
|
|
1495
|
-
pkKey: "id",
|
|
1496
|
-
retrieveArgs: {
|
|
1497
|
-
fields,
|
|
1498
|
-
},
|
|
1499
|
-
},
|
|
1500
|
-
},
|
|
1501
|
-
B: {
|
|
1502
|
-
props: {
|
|
1503
|
-
crudArgs: { stream: "test_streamB" },
|
|
1504
|
-
pk: 2,
|
|
1505
|
-
pkKey: "id",
|
|
1506
|
-
retrieveArgs: {
|
|
1507
|
-
fields,
|
|
1508
|
-
},
|
|
1509
|
-
},
|
|
1510
|
-
},
|
|
1511
|
-
});
|
|
1512
|
-
expect(deepUnref(objInstances.A.state)).toEqual(deepUnref(objectInstanceA.state));
|
|
1513
|
-
expect(deepUnref(objInstances.B.state)).toEqual(deepUnref(objectInstanceB.state));
|
|
1514
|
-
});
|
|
1515
|
-
it("useObjectInstance missing pkKey", async function () {
|
|
1516
|
-
const objectInstanceProps = {
|
|
1517
|
-
crudArgs: { stream: "test_streamA" },
|
|
1518
|
-
pk: 1,
|
|
1519
|
-
retrieveArgs: {
|
|
1520
|
-
fields,
|
|
1521
|
-
},
|
|
1522
|
-
};
|
|
1523
|
-
expect(() => useObjectInstance({ props: objectInstanceProps })).toThrow(ObjectError);
|
|
1524
|
-
});
|
|
1525
|
-
});
|