remult 0.14.2 → 0.14.5

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.
Files changed (70) hide show
  1. package/assign.js +1 -5
  2. package/classType.js +1 -2
  3. package/graphql.js +84 -146
  4. package/index.d.ts +13 -0
  5. package/index.js +25 -55
  6. package/inputTypes.js +9 -16
  7. package/package.json +6 -1
  8. package/postgres/index.js +1 -4
  9. package/postgres/postgres-data-provider.js +165 -364
  10. package/postgres/postgresColumnSyntax.js +4 -8
  11. package/remult-express.js +6 -10
  12. package/remult-knex/index.js +300 -720
  13. package/remult-middleware.js +24 -30
  14. package/remult-mongo.js +172 -406
  15. package/server/JsonEntityFileStorage.js +10 -15
  16. package/server/expressBridge.js +383 -569
  17. package/server/index.js +4 -11
  18. package/server/register-actions-on-server.js +12 -38
  19. package/server/register-entities-on-server.js +9 -13
  20. package/src/__EntityValueProvider.js +1 -2
  21. package/src/__RowsOfDataForTesting.js +1 -2
  22. package/src/backend-tests/backend-database-test-setup.backend-spec.js +72 -190
  23. package/src/backend-tests/my-test.backend-spec.js +45 -114
  24. package/src/column-interfaces.js +2 -6
  25. package/src/column.js +71 -113
  26. package/src/context.js +174 -330
  27. package/src/data-api.js +162 -326
  28. package/src/data-interfaces.js +7 -11
  29. package/src/data-providers/array-entity-data-provider.js +171 -286
  30. package/src/data-providers/in-memory-database.js +12 -27
  31. package/src/data-providers/json-data-provider.js +41 -77
  32. package/src/data-providers/rest-data-provider.js +102 -189
  33. package/src/data-providers/sql-database.js +223 -403
  34. package/src/data-providers/web-sql-data-provider.js +78 -139
  35. package/src/entity.js +1 -2
  36. package/src/filter/filter-consumer-bridge-to-sql-request.js +106 -248
  37. package/src/filter/filter-consumer-bridge-to-url-builder.js +1 -2
  38. package/src/filter/filter-interfaces.js +277 -440
  39. package/src/id-entity.js +8 -17
  40. package/src/remult3/RepositoryImplementation.js +1191 -2367
  41. package/src/remult3/index.js +2 -5
  42. package/src/remult3/remult3.js +1 -2
  43. package/src/server-action.js +294 -528
  44. package/src/shared-tests/db-tests-setup.js +49 -153
  45. package/src/shared-tests/db-tests.db-tests.js +660 -1566
  46. package/src/shared-tests/deleteAll.js +3 -20
  47. package/src/shared-tests/entityWithValidations.js +52 -79
  48. package/src/shared-tests/index.js +4 -6
  49. package/src/shared-tests/test-custom-id-column.spec.js +37 -85
  50. package/src/shared-tests/test-special-value.spec.js +64 -104
  51. package/src/shared-tests/test-update-with-null.spec.js +28 -49
  52. package/src/sort.js +38 -95
  53. package/src/sql-command.js +1 -2
  54. package/src/tests/Done.js +7 -13
  55. package/src/tests/TestDataApiResponse.js +15 -22
  56. package/src/tests/c.js +21 -27
  57. package/src/tests/createData.js +20 -48
  58. package/src/tests/d.js +19 -27
  59. package/src/tests/dWithPrefilter.js +31 -44
  60. package/src/tests/entityForCustomFilter.js +42 -66
  61. package/src/tests/entityWithValidationsOnColumn.js +21 -29
  62. package/src/tests/frontend-database-tests-setup.spec.js +35 -98
  63. package/src/tests/h.js +35 -44
  64. package/src/tests/remult-3-entities.js +71 -80
  65. package/src/tests/tasks.js +23 -29
  66. package/src/tests/testHelper.spec.js +170 -322
  67. package/src/tests/testModel/models.js +25 -33
  68. package/src/validators.js +32 -59
  69. package/urlBuilder.js +8 -14
  70. package/valueConverters.js +161 -160
@@ -1,1629 +1,723 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PriorityWithString = exports.tasksWithStringEnum = exports.Priority = exports.tasksWithEnum = exports.stam = void 0;
4
- var tslib_1 = require("tslib");
5
- var data_api_1 = require("../data-api");
6
- var remult3_1 = require("../remult3");
7
- var c_1 = require("../tests/c");
8
- var Done_1 = require("../tests/Done");
9
- var h_1 = require("../tests/h");
10
- var remult_3_entities_1 = require("../tests/remult-3-entities");
11
- var tasks_1 = require("../tests/tasks");
12
- var TestDataApiResponse_1 = require("../tests/TestDataApiResponse");
13
- var db_tests_setup_1 = require("./db-tests-setup");
14
- var entityWithValidations_1 = require("./entityWithValidations");
15
- var context_1 = require("../context");
16
- var dWithPrefilter_1 = require("../tests/dWithPrefilter");
17
- var filter_interfaces_1 = require("../filter/filter-interfaces");
18
- var d_1 = require("../tests/d");
19
- var entityForCustomFilter_1 = require("../tests/entityForCustomFilter");
20
- var entityWithValidationsOnColumn_1 = require("../tests/entityWithValidationsOnColumn");
21
- var validators_1 = require("../validators");
22
- var models_1 = require("../tests/testModel/models");
23
- var id_entity_1 = require("../id-entity");
24
- db_tests_setup_1.testAll("what", function (_a) {
25
- var remult = _a.remult, createEntity = _a.createEntity;
26
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
27
- var _b;
28
- return tslib_1.__generator(this, function (_c) {
29
- switch (_c.label) {
30
- case 0: return [4 /*yield*/, createEntity(stam)];
31
- case 1: return [4 /*yield*/, (_c.sent()).create({ id: 1, title: 'noam' }).save()];
32
- case 2:
33
- _c.sent();
34
- _b = expect;
35
- return [4 /*yield*/, remult.repo(stam).count()];
36
- case 3:
37
- _b.apply(void 0, [_c.sent()]).toBe(1);
38
- return [2 /*return*/];
39
- }
40
- });
41
- });
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { DataApi } from "../data-api";
3
+ import { Fields, Entity, EntityBase, Field } from "../remult3";
4
+ import { c } from "../tests/c";
5
+ import { Done } from "../tests/Done";
6
+ import { h } from "../tests/h";
7
+ import { Categories as newCategories } from "../tests/remult-3-entities";
8
+ import { tasks } from "../tests/tasks";
9
+ import { TestDataApiResponse } from "../tests/TestDataApiResponse";
10
+ import { testAll, testAllDbs } from "./db-tests-setup";
11
+ import { entityWithValidations, testConfiguration } from "./entityWithValidations";
12
+ import { Remult } from "../context";
13
+ import { dWithPrefilter } from "../tests/dWithPrefilter";
14
+ import { entityFilterToJson, Filter } from "../filter/filter-interfaces";
15
+ import { d } from "../tests/d";
16
+ import { entityForCustomFilter1 } from "../tests/entityForCustomFilter";
17
+ import { entityWithValidationsOnColumn } from "../tests/entityWithValidationsOnColumn";
18
+ import { Validators } from "../validators";
19
+ import { Status } from "../tests/testModel/models";
20
+ import { IdEntity } from "../id-entity";
21
+ testAll("what", async ({ remult, createEntity }) => {
22
+ await (await createEntity(stam)).create({ id: 1, title: 'noam' }).save();
23
+ expect(await remult.repo(stam).count()).toBe(1);
42
24
  }, false);
43
- db_tests_setup_1.testAll("filter works on all db", function (_a) {
44
- var createEntity = _a.createEntity;
45
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
46
- var s, _b;
47
- return tslib_1.__generator(this, function (_c) {
48
- switch (_c.label) {
49
- case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
50
- case 1:
51
- s = _c.sent();
52
- _b = expect;
53
- return [4 /*yield*/, s.find({ where: { myId: [1, 3] } })];
54
- case 2:
55
- _b.apply(void 0, [(_c.sent()).length]).toBe(2);
56
- return [2 /*return*/];
57
- }
58
- });
59
- });
25
+ testAll("filter works on all db", async ({ createEntity }) => {
26
+ let s = await entityWithValidations.create4RowsInDp(createEntity);
27
+ expect((await s.find({ where: { myId: [1, 3] } })).length).toBe(2);
60
28
  }, false);
61
- db_tests_setup_1.testAll("test in statement and ", function (_a) {
62
- var createEntity = _a.createEntity;
63
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
64
- var repo, _b;
65
- return tslib_1.__generator(this, function (_c) {
66
- switch (_c.label) {
67
- case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
68
- case 1:
69
- repo = _c.sent();
70
- _b = expect;
71
- return [4 /*yield*/, repo.count({ myId: [1, 3], $and: [{ myId: [3] }] })];
72
- case 2:
73
- _b.apply(void 0, [_c.sent()]).toBe(1);
74
- return [2 /*return*/];
75
- }
76
- });
77
- });
29
+ testAll("test in statement and ", async ({ createEntity }) => {
30
+ const repo = await entityWithValidations.create4RowsInDp(createEntity);
31
+ expect(await repo.count({ myId: [1, 3], $and: [{ myId: [3] }] })).toBe(1);
78
32
  }, false);
79
- db_tests_setup_1.testAll("filter with and", function (_a) {
80
- var createEntity = _a.createEntity;
81
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
82
- var s, _b;
83
- return tslib_1.__generator(this, function (_c) {
84
- switch (_c.label) {
85
- case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
86
- case 1:
87
- s = _c.sent();
88
- _b = expect;
89
- return [4 /*yield*/, s.find({ where: { $and: [{ myId: 1 }, { myId: 3 }] } })];
90
- case 2:
91
- _b.apply(void 0, [(_c.sent()).length]).toBe(0);
92
- return [2 /*return*/];
93
- }
94
- });
95
- });
33
+ testAll("filter with and", async ({ createEntity }) => {
34
+ let s = await entityWithValidations.create4RowsInDp(createEntity);
35
+ expect((await s.find({ where: { $and: [{ myId: 1 }, { myId: 3 }] } })).length).toBe(0);
96
36
  }, false);
97
- db_tests_setup_1.testAll("test empty in", function (_a) {
98
- var createEntity = _a.createEntity;
99
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
100
- var s, _b;
101
- return tslib_1.__generator(this, function (_c) {
102
- switch (_c.label) {
103
- case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
104
- case 1:
105
- s = _c.sent();
106
- _b = expect;
107
- return [4 /*yield*/, s.find({ where: { myId: [] } })];
108
- case 2:
109
- _b.apply(void 0, [(_c.sent()).length]).toBe(0);
110
- return [2 /*return*/];
111
- }
112
- });
113
- });
37
+ testAll("test empty in", async ({ createEntity }) => {
38
+ let s = await entityWithValidations.create4RowsInDp(createEntity);
39
+ expect((await s.find({ where: { myId: [] } })).length).toBe(0);
114
40
  }, false);
115
- db_tests_setup_1.testAll("filter works on all db or", function (_a) {
116
- var createEntity = _a.createEntity;
117
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
118
- var s, _b;
119
- return tslib_1.__generator(this, function (_c) {
120
- switch (_c.label) {
121
- case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
122
- case 1:
123
- s = _c.sent();
124
- _b = expect;
125
- return [4 /*yield*/, s.find({ where: { $or: [{ myId: 1 }, { myId: 3 }] } })];
126
- case 2:
127
- _b.apply(void 0, [(_c.sent()).length]).toBe(2);
128
- return [2 /*return*/];
129
- }
130
- });
131
- });
41
+ testAll("filter works on all db or", async ({ createEntity }) => {
42
+ let s = await entityWithValidations.create4RowsInDp(createEntity);
43
+ expect((await s.find({ where: { $or: [{ myId: 1 }, { myId: 3 }] } })).length).toBe(2);
132
44
  }, false);
133
- db_tests_setup_1.testAll("filter works on all db or_1", function (_a) {
134
- var createEntity = _a.createEntity;
135
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
136
- var s, _b;
137
- return tslib_1.__generator(this, function (_c) {
138
- switch (_c.label) {
139
- case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
140
- case 1:
141
- s = _c.sent();
142
- _b = expect;
143
- return [4 /*yield*/, s.find({ where: { $or: [{}, {}] } })];
144
- case 2:
145
- _b.apply(void 0, [(_c.sent()).length]).toBe(4);
146
- return [2 /*return*/];
147
- }
148
- });
149
- });
45
+ testAll("filter works on all db or_1", async ({ createEntity }) => {
46
+ let s = await entityWithValidations.create4RowsInDp(createEntity);
47
+ expect((await s.find({ where: { $or: [{}, {}] } })).length).toBe(4);
150
48
  }, false);
151
- db_tests_setup_1.testAll("filter works on all db or_2", function (_a) {
152
- var createEntity = _a.createEntity;
153
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
154
- var s, _b;
155
- return tslib_1.__generator(this, function (_c) {
156
- switch (_c.label) {
157
- case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
158
- case 1:
159
- s = _c.sent();
160
- _b = expect;
161
- return [4 /*yield*/, s.find({ where: { $or: [{}, { myId: 3 }] } })];
162
- case 2:
163
- _b.apply(void 0, [(_c.sent()).length]).toBe(4);
164
- return [2 /*return*/];
165
- }
166
- });
167
- });
49
+ testAll("filter works on all db or_2", async ({ createEntity }) => {
50
+ let s = await entityWithValidations.create4RowsInDp(createEntity);
51
+ expect((await s.find({ where: { $or: [{}, { myId: 3 }] } })).length).toBe(4);
168
52
  }, false);
169
- db_tests_setup_1.testAll("entity with different id column still works well", function (_a) {
170
- var createEntity = _a.createEntity;
171
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
172
- var s, c, _b;
173
- return tslib_1.__generator(this, function (_c) {
174
- switch (_c.label) {
175
- case 0: return [4 /*yield*/, createEntity(entityWithValidations_1.entityWithValidations)];
176
- case 1:
177
- s = _c.sent();
178
- c = s.create();
179
- c.myId = 1;
180
- c.name = 'noam';
181
- return [4 /*yield*/, c._.save()];
182
- case 2:
183
- _c.sent();
184
- c.name = 'yael';
185
- return [4 /*yield*/, c._.save()];
186
- case 3:
187
- _c.sent();
188
- expect(c.name).toBe('yael');
189
- _b = expect;
190
- return [4 /*yield*/, s.find()];
191
- case 4:
192
- _b.apply(void 0, [(_c.sent()).length]).toBe(1);
193
- return [2 /*return*/];
194
- }
195
- });
196
- });
53
+ testAll("entity with different id column still works well", async ({ createEntity }) => {
54
+ let s = await createEntity(entityWithValidations);
55
+ let c = s.create();
56
+ c.myId = 1;
57
+ c.name = 'noam';
58
+ await c._.save();
59
+ c.name = 'yael';
60
+ await c._.save();
61
+ expect(c.name).toBe('yael');
62
+ expect((await s.find()).length).toBe(1);
197
63
  }, false);
198
- db_tests_setup_1.testAll("empty find works", function (_a) {
199
- var remult = _a.remult, createEntity = _a.createEntity;
200
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
201
- var c, l;
202
- return tslib_1.__generator(this, function (_b) {
203
- switch (_b.label) {
204
- case 0: return [4 /*yield*/, createEntity(remult_3_entities_1.Categories)];
205
- case 1:
206
- c = (_b.sent()).create();
207
- c.id = 5;
208
- c.categoryName = 'test';
209
- return [4 /*yield*/, c._.save()];
210
- case 2:
211
- _b.sent();
212
- return [4 /*yield*/, remult.repo(remult_3_entities_1.Categories).find()];
213
- case 3:
214
- l = _b.sent();
215
- expect(l.length).toBe(1);
216
- expect(l[0].categoryName).toBe('test');
217
- return [2 /*return*/];
218
- }
219
- });
220
- });
64
+ testAll("empty find works", async ({ remult, createEntity }) => {
65
+ let c = (await createEntity(newCategories)).create();
66
+ c.id = 5;
67
+ c.categoryName = 'test';
68
+ await c._.save();
69
+ let l = await remult.repo(newCategories).find();
70
+ expect(l.length).toBe(1);
71
+ expect(l[0].categoryName).toBe('test');
221
72
  }, false);
222
- db_tests_setup_1.testAll("test descending", function (_a) {
223
- var createEntity = _a.createEntity;
224
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
225
- var repo, rows;
226
- return tslib_1.__generator(this, function (_b) {
227
- switch (_b.label) {
228
- case 0: return [4 /*yield*/, createEntity(remult_3_entities_1.Categories)];
229
- case 1:
230
- repo = _b.sent();
231
- return [4 /*yield*/, repo.create({ id: 1, categoryName: 'a' }).save()];
232
- case 2:
233
- _b.sent();
234
- return [4 /*yield*/, repo.create({ id: 2, categoryName: 'b' }).save()];
235
- case 3:
236
- _b.sent();
237
- return [4 /*yield*/, repo.find({
238
- orderBy: { categoryName: 'desc' },
239
- page: -1
240
- })];
241
- case 4:
242
- rows = _b.sent();
243
- expect(rows[0].id).toBe(2);
244
- return [2 /*return*/];
245
- }
246
- });
247
- });
73
+ testAll("test descending", async ({ createEntity }) => {
74
+ const repo = await createEntity(newCategories);
75
+ await repo.create({ id: 1, categoryName: 'a' }).save();
76
+ await repo.create({ id: 2, categoryName: 'b' }).save();
77
+ const rows = await repo.find({
78
+ orderBy: { categoryName: 'desc' },
79
+ page: -1
80
+ });
81
+ expect(rows[0].id).toBe(2);
248
82
  }, false);
249
- db_tests_setup_1.testAll("test descending 2", function (_a) {
250
- var createEntity = _a.createEntity;
251
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
252
- var repo, rows;
253
- return tslib_1.__generator(this, function (_b) {
254
- switch (_b.label) {
255
- case 0: return [4 /*yield*/, createEntity(remult_3_entities_1.Categories)];
256
- case 1:
257
- repo = _b.sent();
258
- return [4 /*yield*/, repo.insert([{ id: 1, categoryName: 'a' }, { id: 2, categoryName: 'b' }])];
259
- case 2:
260
- _b.sent();
261
- return [4 /*yield*/, repo.find({
262
- orderBy: { categoryName: 'desc' },
263
- page: -1
264
- })];
265
- case 3:
266
- rows = _b.sent();
267
- expect(rows[0].id).toBe(2);
268
- return [2 /*return*/];
269
- }
270
- });
271
- });
83
+ testAll("test descending 2", async ({ createEntity }) => {
84
+ const repo = await createEntity(newCategories);
85
+ await repo.insert([{ id: 1, categoryName: 'a' }, { id: 2, categoryName: 'b' }]);
86
+ const rows = await repo.find({
87
+ orderBy: { categoryName: 'desc' },
88
+ page: -1
89
+ });
90
+ expect(rows[0].id).toBe(2);
272
91
  }, false);
273
- db_tests_setup_1.testAll("partial updates", function (_a) {
274
- var remult = _a.remult, createEntity = _a.createEntity;
275
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
276
- var c, l;
277
- return tslib_1.__generator(this, function (_b) {
278
- switch (_b.label) {
279
- case 0: return [4 /*yield*/, createEntity(remult_3_entities_1.Categories)];
280
- case 1:
281
- c = (_b.sent()).create({
282
- id: 5, categoryName: 'test', description: 'desc'
283
- });
284
- return [4 /*yield*/, c._.save()];
285
- case 2:
286
- _b.sent();
287
- return [4 /*yield*/, remult.repo(remult_3_entities_1.Categories).findId(5)];
288
- case 3:
289
- l = _b.sent();
290
- c.categoryName = 'newname';
291
- l.description = 'new desc';
292
- return [4 /*yield*/, c.save()];
293
- case 4:
294
- _b.sent();
295
- return [4 /*yield*/, l.save()];
296
- case 5:
297
- _b.sent();
298
- expect(l.categoryName).toBe('newname');
299
- expect(l.description).toBe('new desc');
300
- return [2 /*return*/];
301
- }
302
- });
303
- });
92
+ testAll("partial updates", async ({ remult, createEntity }) => {
93
+ let c = (await createEntity(newCategories)).create({
94
+ id: 5, categoryName: 'test', description: 'desc'
95
+ });
96
+ await c._.save();
97
+ let l = await remult.repo(newCategories).findId(5);
98
+ c.categoryName = 'newname';
99
+ l.description = 'new desc';
100
+ await c.save();
101
+ await l.save();
102
+ expect(l.categoryName).toBe('newname');
103
+ expect(l.description).toBe('new desc');
304
104
  }, false);
305
- db_tests_setup_1.testAll("put with validations on entity fails", function (_a) {
306
- var remult = _a.remult, createEntity = _a.createEntity;
307
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
308
- var s, c, api, t, d, x;
309
- return tslib_1.__generator(this, function (_b) {
310
- switch (_b.label) {
311
- case 0: return [4 /*yield*/, createEntity(entityWithValidations_1.entityWithValidations)];
312
- case 1:
313
- s = _b.sent();
314
- c = s.create();
315
- c.myId = 1;
316
- c.name = 'noam';
317
- return [4 /*yield*/, c._.save()];
318
- case 2:
319
- _b.sent();
320
- api = new data_api_1.DataApi(s, remult);
321
- t = new TestDataApiResponse_1.TestDataApiResponse();
322
- d = new Done_1.Done();
323
- t.error = function (data) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
324
- return tslib_1.__generator(this, function (_a) {
325
- expect(data.modelState.name).toBe('invalid');
326
- d.ok();
327
- return [2 /*return*/];
328
- });
329
- }); };
330
- return [4 /*yield*/, api.put(t, 1, {
331
- name: '1'
332
- })];
333
- case 3:
334
- _b.sent();
335
- d.test();
336
- return [4 /*yield*/, s.find({ where: { myId: 1 } })];
337
- case 4:
338
- x = _b.sent();
339
- expect(x[0].name).toBe('noam');
340
- return [4 /*yield*/, s.find({ where: { myId: 1 } })];
341
- case 5:
342
- x = _b.sent();
343
- expect(x[0].name).toBe('noam');
344
- return [2 /*return*/];
345
- }
346
- });
347
- });
105
+ testAll("put with validations on entity fails", async ({ remult, createEntity }) => {
106
+ let s = await createEntity(entityWithValidations);
107
+ let c = s.create();
108
+ c.myId = 1;
109
+ c.name = 'noam';
110
+ await c._.save();
111
+ let api = new DataApi(s, remult);
112
+ let t = new TestDataApiResponse();
113
+ let d = new Done();
114
+ t.error = async (data) => {
115
+ expect(data.modelState.name).toBe('invalid');
116
+ d.ok();
117
+ };
118
+ await api.put(t, 1, {
119
+ name: '1'
120
+ });
121
+ d.test();
122
+ var x = await s.find({ where: { myId: 1 } });
123
+ expect(x[0].name).toBe('noam');
124
+ x = await s.find({ where: { myId: 1 } });
125
+ expect(x[0].name).toBe('noam');
348
126
  });
349
- db_tests_setup_1.testAll("test date with null works", function (_a) {
350
- var createEntity = _a.createEntity;
351
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
352
- var repo, r, _b;
353
- return tslib_1.__generator(this, function (_c) {
354
- switch (_c.label) {
355
- case 0: return [4 /*yield*/, createEntity(testDateWithNull)];
356
- case 1:
357
- repo = _c.sent();
358
- r = repo.create({ id: 0 });
359
- return [4 /*yield*/, r.save()];
360
- case 2:
361
- _c.sent();
362
- return [4 /*yield*/, repo.findFirst()];
363
- case 3:
364
- r = _c.sent();
365
- expect(r.d).toBeNull();
366
- _b = expect;
367
- return [4 /*yield*/, repo.count({ d: null })];
368
- case 4:
369
- _b.apply(void 0, [_c.sent()]).toBe(1);
370
- return [2 /*return*/];
371
- }
372
- });
373
- });
127
+ testAll("test date with null works", async ({ createEntity }) => {
128
+ let repo = await createEntity(testDateWithNull);
129
+ let r = repo.create({ id: 0 });
130
+ await r.save();
131
+ r = await repo.findFirst();
132
+ expect(r.d).toBeNull();
133
+ expect(await repo.count({ d: null })).toBe(1);
374
134
  }, false);
375
- db_tests_setup_1.testAll("test original value of date", function (_a) {
376
- var createEntity = _a.createEntity;
377
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
378
- var r;
379
- return tslib_1.__generator(this, function (_b) {
380
- switch (_b.label) {
381
- case 0: return [4 /*yield*/, createEntity(testDateWithNull)];
382
- case 1: return [4 /*yield*/, (_b.sent()).create({ id: 1, d: new Date(1976, 6, 16) }).save()];
383
- case 2:
384
- r = _b.sent();
385
- expect(r.$.d.originalValue.getFullYear()).toBe(1976);
386
- return [2 /*return*/];
387
- }
388
- });
389
- });
135
+ testAll("test original value of date", async ({ createEntity }) => {
136
+ let r = await (await createEntity(testDateWithNull)).create({ id: 1, d: new Date(1976, 6, 16) }).save();
137
+ expect(r.$.d.originalValue.getFullYear()).toBe(1976);
390
138
  });
391
- var testDateWithNull = /** @class */ (function (_super) {
392
- tslib_1.__extends(testDateWithNull, _super);
393
- function testDateWithNull() {
394
- var _this = _super !== null && _super.apply(this, arguments) || this;
395
- _this.id = 0;
396
- return _this;
139
+ let testDateWithNull = class testDateWithNull extends EntityBase {
140
+ constructor() {
141
+ super(...arguments);
142
+ this.id = 0;
397
143
  }
398
- tslib_1.__decorate([
399
- remult3_1.Fields.integer(),
400
- tslib_1.__metadata("design:type", Number)
401
- ], testDateWithNull.prototype, "id", void 0);
402
- tslib_1.__decorate([
403
- remult3_1.Fields.dateOnly({ allowNull: true }),
404
- tslib_1.__metadata("design:type", Date)
405
- ], testDateWithNull.prototype, "d", void 0);
406
- testDateWithNull = tslib_1.__decorate([
407
- remult3_1.Entity('testDateWithNull', { allowApiCrud: true })
408
- ], testDateWithNull);
409
- return testDateWithNull;
410
- }(remult3_1.EntityBase));
411
- db_tests_setup_1.testAll("test string with null works", function (_a) {
412
- var createEntity = _a.createEntity;
413
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
414
- var repo, r;
415
- return tslib_1.__generator(this, function (_b) {
416
- switch (_b.label) {
417
- case 0: return [4 /*yield*/, createEntity(testStringWithNull)];
418
- case 1:
419
- repo = _b.sent();
420
- r = repo.create({ id: 0 });
421
- return [4 /*yield*/, r.save()];
422
- case 2:
423
- _b.sent();
424
- return [4 /*yield*/, repo.findFirst()];
425
- case 3:
426
- r = _b.sent();
427
- expect(r.d).toBeNull();
428
- return [2 /*return*/];
429
- }
430
- });
431
- });
144
+ };
145
+ __decorate([
146
+ Fields.integer(),
147
+ __metadata("design:type", Number)
148
+ ], testDateWithNull.prototype, "id", void 0);
149
+ __decorate([
150
+ Fields.dateOnly({ allowNull: true }),
151
+ __metadata("design:type", Date)
152
+ ], testDateWithNull.prototype, "d", void 0);
153
+ testDateWithNull = __decorate([
154
+ Entity('testDateWithNull', { allowApiCrud: true })
155
+ ], testDateWithNull);
156
+ testAll("test string with null works", async ({ createEntity }) => {
157
+ let repo = await createEntity(testStringWithNull);
158
+ let r = repo.create({ id: 0 });
159
+ await r.save();
160
+ r = await repo.findFirst();
161
+ expect(r.d).toBeNull();
432
162
  });
433
- db_tests_setup_1.testAll("test tasks", function (_a) {
434
- var createEntity = _a.createEntity;
435
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
436
- var c, t, _b, _c, _d;
437
- return tslib_1.__generator(this, function (_e) {
438
- switch (_e.label) {
439
- case 0: return [4 /*yield*/, createEntity(tasks_1.tasks)];
440
- case 1:
441
- c = _e.sent();
442
- t = c.create();
443
- t.id = 1;
444
- return [4 /*yield*/, t._.save()];
445
- case 2:
446
- _e.sent();
447
- t = c.create();
448
- t.id = 2;
449
- t.completed = true;
450
- return [4 /*yield*/, t._.save()];
451
- case 3:
452
- _e.sent();
453
- t = c.create();
454
- t.id = 3;
455
- t.completed = true;
456
- return [4 /*yield*/, t._.save()];
457
- case 4:
458
- _e.sent();
459
- return [4 /*yield*/, c.create({ id: 4, completed: false }).save()];
460
- case 5:
461
- _e.sent();
462
- _b = expect;
463
- return [4 /*yield*/, c.count({ completed: false })];
464
- case 6:
465
- _b.apply(void 0, [_e.sent()]).toBe(2);
466
- _c = expect;
467
- return [4 /*yield*/, c.count({ completed: { $ne: true } })];
468
- case 7:
469
- _c.apply(void 0, [_e.sent()]).toBe(2);
470
- _d = expect;
471
- return [4 /*yield*/, c.count({ completed: true })];
472
- case 8:
473
- _d.apply(void 0, [_e.sent()]).toBe(2);
474
- return [2 /*return*/];
475
- }
476
- });
477
- });
163
+ testAll("test tasks", async ({ createEntity }) => {
164
+ let c = await createEntity(tasks);
165
+ let t = c.create();
166
+ t.id = 1;
167
+ await t._.save();
168
+ t = c.create();
169
+ t.id = 2;
170
+ t.completed = true;
171
+ await t._.save();
172
+ t = c.create();
173
+ t.id = 3;
174
+ t.completed = true;
175
+ await t._.save();
176
+ await c.create({ id: 4, completed: false }).save();
177
+ expect(await c.count({ completed: false })).toBe(2);
178
+ expect(await c.count({ completed: { $ne: true } })).toBe(2);
179
+ expect(await c.count({ completed: true })).toBe(2);
478
180
  }, false);
479
- db_tests_setup_1.testAll("test filtering of null/''", function (_a) {
480
- var createEntity = _a.createEntity;
481
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
482
- var repo, a, b, c, _b, _c;
483
- return tslib_1.__generator(this, function (_d) {
484
- switch (_d.label) {
485
- case 0: return [4 /*yield*/, createEntity(h_1.h)];
486
- case 1:
487
- repo = _d.sent();
488
- return [4 /*yield*/, repo.create({ id: 'a' }).save()];
489
- case 2:
490
- a = _d.sent();
491
- return [4 /*yield*/, repo.create({ id: 'b' }).save()];
492
- case 3:
493
- b = _d.sent();
494
- return [4 /*yield*/, repo.create({ id: 'c', refH: b }).save()];
495
- case 4:
496
- c = _d.sent();
497
- _b = expect;
498
- return [4 /*yield*/, repo.count({ refH: null })];
499
- case 5:
500
- _b.apply(void 0, [_d.sent()]).toBe(2);
501
- _c = expect;
502
- return [4 /*yield*/, repo.count({ refH: { "!=": null } })];
503
- case 6:
504
- _c.apply(void 0, [_d.sent()]).toBe(1);
505
- return [2 /*return*/];
506
- }
507
- });
508
- });
181
+ testAll("test filtering of null/''", async ({ createEntity }) => {
182
+ let repo = await createEntity(h);
183
+ let a = await repo.create({ id: 'a' }).save();
184
+ let b = await repo.create({ id: 'b' }).save();
185
+ let c = await repo.create({ id: 'c', refH: b }).save();
186
+ expect(await repo.count({ refH: null })).toBe(2);
187
+ expect(await repo.count({ refH: { "!=": null } })).toBe(1);
509
188
  }, false);
510
- db_tests_setup_1.testAll("test paging with complex object", function (_a) {
511
- var remult = _a.remult, createEntity = _a.createEntity;
512
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
513
- var c1, c2, c3, i, _b, _c, x, e_1_1;
514
- var e_1, _d;
515
- return tslib_1.__generator(this, function (_e) {
516
- switch (_e.label) {
517
- case 0: return [4 /*yield*/, createEntity(c_1.c)];
518
- case 1:
519
- _e.sent();
520
- return [4 /*yield*/, createEntity(p)];
521
- case 2:
522
- _e.sent();
523
- return [4 /*yield*/, remult.repo(c_1.c).create({ id: 1, name: 'c1' }).save()];
524
- case 3:
525
- c1 = _e.sent();
526
- return [4 /*yield*/, remult.repo(c_1.c).create({ id: 2, name: 'c2' }).save()];
527
- case 4:
528
- c2 = _e.sent();
529
- return [4 /*yield*/, remult.repo(c_1.c).create({ id: 3, name: 'c3' }).save()];
530
- case 5:
531
- c3 = _e.sent();
532
- return [4 /*yield*/, remult.repo(p).create({ id: 1, name: 'p1', c: c1 }).save()];
533
- case 6:
534
- _e.sent();
535
- return [4 /*yield*/, remult.repo(p).create({ id: 2, name: 'p2', c: c2 }).save()];
536
- case 7:
537
- _e.sent();
538
- return [4 /*yield*/, remult.repo(p).create({ id: 3, name: 'p3', c: c3 }).save()];
539
- case 8:
540
- _e.sent();
541
- return [4 /*yield*/, remult.repo(p).create({ id: 4, name: 'p4', c: c3 }).save()];
542
- case 9:
543
- _e.sent();
544
- return [4 /*yield*/, remult.repo(p).create({ id: 5, name: 'p5', c: c3 }).save()];
545
- case 10:
546
- _e.sent();
547
- i = 0;
548
- _e.label = 11;
549
- case 11:
550
- _e.trys.push([11, 16, 17, 22]);
551
- _b = tslib_1.__asyncValues(remult.repo(p).query({
552
- orderBy: { c: "asc", id: "asc" }
553
- }));
554
- _e.label = 12;
555
- case 12: return [4 /*yield*/, _b.next()];
556
- case 13:
557
- if (!(_c = _e.sent(), !_c.done)) return [3 /*break*/, 15];
558
- x = _c.value;
559
- i++;
560
- _e.label = 14;
561
- case 14: return [3 /*break*/, 12];
562
- case 15: return [3 /*break*/, 22];
563
- case 16:
564
- e_1_1 = _e.sent();
565
- e_1 = { error: e_1_1 };
566
- return [3 /*break*/, 22];
567
- case 17:
568
- _e.trys.push([17, , 20, 21]);
569
- if (!(_c && !_c.done && (_d = _b.return))) return [3 /*break*/, 19];
570
- return [4 /*yield*/, _d.call(_b)];
571
- case 18:
572
- _e.sent();
573
- _e.label = 19;
574
- case 19: return [3 /*break*/, 21];
575
- case 20:
576
- if (e_1) throw e_1.error;
577
- return [7 /*endfinally*/];
578
- case 21: return [7 /*endfinally*/];
579
- case 22:
580
- expect(i).toBe(5);
581
- return [2 /*return*/];
582
- }
583
- });
584
- });
189
+ testAll("test paging with complex object", async ({ remult, createEntity }) => {
190
+ await createEntity(c);
191
+ await createEntity(p);
192
+ let c1 = await remult.repo(c).create({ id: 1, name: 'c1' }).save();
193
+ let c2 = await remult.repo(c).create({ id: 2, name: 'c2' }).save();
194
+ let c3 = await remult.repo(c).create({ id: 3, name: 'c3' }).save();
195
+ await remult.repo(p).create({ id: 1, name: 'p1', c: c1 }).save();
196
+ await remult.repo(p).create({ id: 2, name: 'p2', c: c2 }).save();
197
+ await remult.repo(p).create({ id: 3, name: 'p3', c: c3 }).save();
198
+ await remult.repo(p).create({ id: 4, name: 'p4', c: c3 }).save();
199
+ await remult.repo(p).create({ id: 5, name: 'p5', c: c3 }).save();
200
+ let i = 0;
201
+ for await (const x of remult.repo(p).query({
202
+ orderBy: { c: "asc", id: "asc" }
203
+ })) {
204
+ i++;
205
+ }
206
+ expect(i).toBe(5);
585
207
  });
586
- db_tests_setup_1.testAll("test paging with complex object_2", function (_a) {
587
- var remult = _a.remult, createEntity = _a.createEntity;
588
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
589
- var c1, _b;
590
- return tslib_1.__generator(this, function (_c) {
591
- switch (_c.label) {
592
- case 0: return [4 /*yield*/, createEntity(c_1.c)];
593
- case 1: return [4 /*yield*/, (_c.sent()).create({ id: 1, name: 'c1' }).save()];
594
- case 2:
595
- c1 = _c.sent();
596
- return [4 /*yield*/, createEntity(p)];
597
- case 3: return [4 /*yield*/, (_c.sent()).create({ id: 1, name: 'p1', c: c1 }).save()];
598
- case 4:
599
- _c.sent();
600
- _b = expect;
601
- return [4 /*yield*/, remult.repo(p).findFirst({ c: c1 })];
602
- case 5:
603
- _b.apply(void 0, [(_c.sent()).id]).toBe(1);
604
- return [2 /*return*/];
605
- }
606
- });
607
- });
208
+ testAll("test paging with complex object_2", async ({ remult, createEntity }) => {
209
+ let c1 = await (await createEntity(c)).create({ id: 1, name: 'c1' }).save();
210
+ await (await createEntity(p)).create({ id: 1, name: 'p1', c: c1 }).save();
211
+ expect((await remult.repo(p).findFirst({ c: c1 })).id).toBe(1);
608
212
  });
609
- db_tests_setup_1.testAll("test filter doesn't collapse", function (_a) {
610
- var createEntity = _a.createEntity;
611
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
612
- var repo, d1, d4, f, _b, _c, json, _d, _e;
613
- return tslib_1.__generator(this, function (_f) {
614
- switch (_f.label) {
615
- case 0: return [4 /*yield*/, createEntity(dWithPrefilter_1.dWithPrefilter)];
616
- case 1:
617
- repo = _f.sent();
618
- return [4 /*yield*/, repo.create({ id: 1, b: 1 }).save()];
619
- case 2:
620
- d1 = _f.sent();
621
- return [4 /*yield*/, repo.create({ id: 2, b: 2 }).save()];
622
- case 3:
623
- _f.sent();
624
- return [4 /*yield*/, repo.create({ id: 4, b: 2 }).save()];
625
- case 4:
626
- d4 = _f.sent();
627
- f = { id: 1, $and: [{ id: 2 }] };
628
- _b = expect;
629
- return [4 /*yield*/, repo.count(f)];
630
- case 5:
631
- _b.apply(void 0, [_f.sent()]).toBe(0);
632
- _c = expect;
633
- return [4 /*yield*/, repo.find({ where: f })];
634
- case 6:
635
- _c.apply(void 0, [(_f.sent()).length]).toBe(0);
636
- json = filter_interfaces_1.Filter.entityFilterToJson(repo.metadata, f);
637
- f = filter_interfaces_1.Filter.entityFilterFromJson(repo.metadata, json);
638
- _d = expect;
639
- return [4 /*yield*/, repo.count(f)];
640
- case 7:
641
- _d.apply(void 0, [_f.sent()]).toBe(0);
642
- _e = expect;
643
- return [4 /*yield*/, repo.find({ where: f })];
644
- case 8:
645
- _e.apply(void 0, [(_f.sent()).length]).toBe(0);
646
- return [2 /*return*/];
647
- }
648
- });
649
- });
213
+ testAll("test filter doesn't collapse", async ({ createEntity }) => {
214
+ let repo = await createEntity(dWithPrefilter);
215
+ let d1 = await repo.create({ id: 1, b: 1 }).save();
216
+ await repo.create({ id: 2, b: 2 }).save();
217
+ let d4 = await repo.create({ id: 4, b: 2 }).save();
218
+ let f = { id: 1, $and: [{ id: 2 }] };
219
+ expect(await repo.count(f)).toBe(0);
220
+ expect((await repo.find({ where: f })).length).toBe(0);
221
+ let json = Filter.entityFilterToJson(repo.metadata, f);
222
+ f = Filter.entityFilterFromJson(repo.metadata, json);
223
+ expect(await repo.count(f)).toBe(0);
224
+ expect((await repo.find({ where: f })).length).toBe(0);
650
225
  });
651
- db_tests_setup_1.testAll("test filter doesn't collapse", function (_a) {
652
- var createEntity = _a.createEntity;
653
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
654
- var repo, d1, d4, f, _b, _c, json, _d, _e;
655
- return tslib_1.__generator(this, function (_f) {
656
- switch (_f.label) {
657
- case 0: return [4 /*yield*/, createEntity(d_1.d)];
658
- case 1:
659
- repo = _f.sent();
660
- return [4 /*yield*/, repo.create({ id: 1, b: 1 }).save()];
661
- case 2:
662
- d1 = _f.sent();
663
- return [4 /*yield*/, repo.create({ id: 2, b: 2 }).save()];
664
- case 3:
665
- _f.sent();
666
- return [4 /*yield*/, repo.create({ id: 4, b: 2 }).save()];
667
- case 4:
668
- d4 = _f.sent();
669
- f = { id: [1, 2] };
670
- _b = expect;
671
- return [4 /*yield*/, repo.count(f)];
672
- case 5:
673
- _b.apply(void 0, [_f.sent()]).toBe(2);
674
- _c = expect;
675
- return [4 /*yield*/, repo.find({ where: f })];
676
- case 6:
677
- _c.apply(void 0, [(_f.sent()).length]).toBe(2);
678
- json = filter_interfaces_1.Filter.entityFilterToJson(repo.metadata, f);
679
- f = filter_interfaces_1.Filter.entityFilterFromJson(repo.metadata, json);
680
- _d = expect;
681
- return [4 /*yield*/, repo.count(f)];
682
- case 7:
683
- _d.apply(void 0, [_f.sent()]).toBe(2);
684
- _e = expect;
685
- return [4 /*yield*/, repo.find({ where: f })];
686
- case 8:
687
- _e.apply(void 0, [(_f.sent()).length]).toBe(2);
688
- return [2 /*return*/];
689
- }
690
- });
691
- });
226
+ testAll("test filter doesn't collapse", async ({ createEntity }) => {
227
+ let repo = await createEntity(d);
228
+ let d1 = await repo.create({ id: 1, b: 1 }).save();
229
+ await repo.create({ id: 2, b: 2 }).save();
230
+ let d4 = await repo.create({ id: 4, b: 2 }).save();
231
+ let f = { id: [1, 2] };
232
+ expect(await repo.count(f)).toBe(2);
233
+ expect((await repo.find({ where: f })).length).toBe(2);
234
+ let json = Filter.entityFilterToJson(repo.metadata, f);
235
+ f = Filter.entityFilterFromJson(repo.metadata, json);
236
+ expect(await repo.count(f)).toBe(2);
237
+ expect((await repo.find({ where: f })).length).toBe(2);
692
238
  });
693
- db_tests_setup_1.testAll("test that it works with inheritance", function (_a) {
694
- var createEntity = _a.createEntity;
695
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
696
- var c, id, _b, _c, _d;
697
- return tslib_1.__generator(this, function (_e) {
698
- switch (_e.label) {
699
- case 0: return [4 /*yield*/, createEntity(entityForCustomFilter_1.entityForCustomFilter1)];
700
- case 1:
701
- c = _e.sent();
702
- id = 0;
703
- _e.label = 2;
704
- case 2:
705
- if (!(id < 5)) return [3 /*break*/, 5];
706
- return [4 /*yield*/, c.create({ id: id }).save()];
707
- case 3:
708
- _e.sent();
709
- _e.label = 4;
710
- case 4:
711
- id++;
712
- return [3 /*break*/, 2];
713
- case 5:
714
- _b = expect;
715
- return [4 /*yield*/, (c.count(entityForCustomFilter_1.entityForCustomFilter1.oneAndThree()))];
716
- case 6:
717
- _b.apply(void 0, [_e.sent()]).toBe(2);
718
- _c = expect;
719
- return [4 /*yield*/, (c.findFirst(entityForCustomFilter_1.entityForCustomFilter1.testNumericValue(2)))];
720
- case 7:
721
- _c.apply(void 0, [(_e.sent()).id]).toBe(2);
722
- _d = expect;
723
- return [4 /*yield*/, (c.findFirst(entityForCustomFilter_1.entityForCustomFilter1.testObjectValue({ val: 2 })))];
724
- case 8:
725
- _d.apply(void 0, [(_e.sent()).id]).toBe(2);
726
- return [2 /*return*/];
727
- }
728
- });
729
- });
239
+ testAll("test that it works with inheritance", async ({ createEntity }) => {
240
+ let c = await createEntity(entityForCustomFilter1);
241
+ for (let id = 0; id < 5; id++) {
242
+ await c.create({ id }).save();
243
+ }
244
+ expect(await (c.count(entityForCustomFilter1.oneAndThree()))).toBe(2);
245
+ expect((await (c.findFirst(entityForCustomFilter1.testNumericValue(2)))).id).toBe(2);
246
+ expect((await (c.findFirst(entityForCustomFilter1.testObjectValue({ val: 2 })))).id).toBe(2);
730
247
  });
731
- db_tests_setup_1.testAll("put with validations on column fails", function (_a) {
732
- var remult = _a.remult, createEntity = _a.createEntity;
733
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
734
- var s, c, api, t, d, x;
735
- return tslib_1.__generator(this, function (_b) {
736
- switch (_b.label) {
737
- case 0: return [4 /*yield*/, createEntity(entityWithValidationsOnColumn_1.entityWithValidationsOnColumn)];
738
- case 1:
739
- s = _b.sent();
740
- c = s.create();
741
- c.myId = 1;
742
- c.name = 'noam';
743
- return [4 /*yield*/, c._.save()];
744
- case 2:
745
- _b.sent();
746
- api = new data_api_1.DataApi(s, remult);
747
- t = new TestDataApiResponse_1.TestDataApiResponse();
748
- d = new Done_1.Done();
749
- t.error = function (data) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
750
- return tslib_1.__generator(this, function (_a) {
751
- expect(data.modelState.name).toBe('invalid on column');
752
- d.ok();
753
- return [2 /*return*/];
754
- });
755
- }); };
756
- return [4 /*yield*/, api.put(t, 1, {
757
- name: '1'
758
- })];
759
- case 3:
760
- _b.sent();
761
- d.test();
762
- return [4 /*yield*/, s.find({ where: { myId: 1 } })];
763
- case 4:
764
- x = _b.sent();
765
- expect(x[0].name).toBe('noam');
766
- return [2 /*return*/];
767
- }
768
- });
769
- });
248
+ testAll("put with validations on column fails", async ({ remult, createEntity }) => {
249
+ var s = await createEntity(entityWithValidationsOnColumn);
250
+ let c = s.create();
251
+ c.myId = 1;
252
+ c.name = 'noam';
253
+ await c._.save();
254
+ let api = new DataApi(s, remult);
255
+ let t = new TestDataApiResponse();
256
+ let d = new Done();
257
+ t.error = async (data) => {
258
+ expect(data.modelState.name).toBe('invalid on column');
259
+ d.ok();
260
+ };
261
+ await api.put(t, 1, {
262
+ name: '1'
263
+ });
264
+ d.test();
265
+ var x = await s.find({ where: { myId: 1 } });
266
+ expect(x[0].name).toBe('noam');
770
267
  });
771
- db_tests_setup_1.testAllDbs("Insert", function (_a) {
772
- var createData = _a.createData;
773
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
774
- var forCat, rows, c;
775
- return tslib_1.__generator(this, function (_b) {
776
- switch (_b.label) {
777
- case 0: return [4 /*yield*/, createData(function (x) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
778
- return [2 /*return*/];
779
- }); }); })];
780
- case 1:
781
- forCat = _b.sent();
782
- return [4 /*yield*/, forCat.find()];
783
- case 2:
784
- rows = _b.sent();
785
- expect(rows.length).toBe(0);
786
- c = forCat.create();
787
- c.id = 1;
788
- c.categoryName = 'noam';
789
- return [4 /*yield*/, c._.save()];
790
- case 3:
791
- _b.sent();
792
- return [4 /*yield*/, forCat.find()];
793
- case 4:
794
- rows = _b.sent();
795
- expect(rows.length).toBe(1);
796
- expect(rows[0].id).toBe(1);
797
- expect(rows[0].categoryName).toBe('noam');
798
- return [2 /*return*/];
799
- }
800
- });
801
- });
268
+ testAllDbs("Insert", async ({ createData }) => {
269
+ let forCat = await createData(async (x) => { });
270
+ let rows = await forCat.find();
271
+ expect(rows.length).toBe(0);
272
+ let c = forCat.create();
273
+ c.id = 1;
274
+ c.categoryName = 'noam';
275
+ await c._.save();
276
+ rows = await forCat.find();
277
+ expect(rows.length).toBe(1);
278
+ expect(rows[0].id).toBe(1);
279
+ expect(rows[0].categoryName).toBe('noam');
802
280
  }, false);
803
- db_tests_setup_1.testAllDbs("test delete", function (_a) {
804
- var createData = _a.createData;
805
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
806
- var c, rows;
807
- return tslib_1.__generator(this, function (_b) {
808
- switch (_b.label) {
809
- case 0: return [4 /*yield*/, createData(function (insert) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
810
- switch (_a.label) {
811
- case 0: return [4 /*yield*/, insert(5, 'noam')];
812
- case 1: return [2 /*return*/, _a.sent()];
813
- }
814
- }); }); })];
815
- case 1:
816
- c = _b.sent();
817
- return [4 /*yield*/, c.find()];
818
- case 2:
819
- rows = _b.sent();
820
- expect(rows.length).toBe(1);
821
- expect(rows[0].id).toBe(5);
822
- return [4 /*yield*/, rows[0]._.delete()];
823
- case 3:
824
- _b.sent();
825
- return [4 /*yield*/, c.find()];
826
- case 4:
827
- rows = _b.sent();
828
- expect(rows.length).toBe(0);
829
- return [2 /*return*/];
830
- }
831
- });
832
- });
281
+ testAllDbs("test delete", async ({ createData }) => {
282
+ let c = await createData(async (insert) => await insert(5, 'noam'));
283
+ let rows = await c.find();
284
+ expect(rows.length).toBe(1);
285
+ expect(rows[0].id).toBe(5);
286
+ await rows[0]._.delete();
287
+ rows = await c.find();
288
+ expect(rows.length).toBe(0);
833
289
  }, false);
834
- db_tests_setup_1.testAllDbs("test filter packer", function (_a) {
835
- var insertFourRows = _a.insertFourRows;
836
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
837
- var r, rows;
838
- return tslib_1.__generator(this, function (_b) {
839
- switch (_b.label) {
840
- case 0: return [4 /*yield*/, insertFourRows()];
841
- case 1:
842
- r = _b.sent();
843
- return [4 /*yield*/, r.find()];
844
- case 2:
845
- rows = _b.sent();
846
- expect(rows.length).toBe(4);
847
- return [4 /*yield*/, r.find({
848
- where: filter_interfaces_1.Filter.entityFilterFromJson(r.metadata, filter_interfaces_1.entityFilterToJson(r.metadata, { description: 'x' }))
849
- })];
850
- case 3:
851
- rows = _b.sent();
852
- expect(rows.length).toBe(2);
853
- return [4 /*yield*/, r.find({ where: filter_interfaces_1.Filter.entityFilterFromJson(r.metadata, filter_interfaces_1.entityFilterToJson(r.metadata, { id: 4 })) })];
854
- case 4:
855
- rows = _b.sent();
856
- expect(rows.length).toBe(1);
857
- expect(rows[0].categoryName).toBe('yael');
858
- return [4 /*yield*/, r.find({ where: filter_interfaces_1.Filter.entityFilterFromJson(r.metadata, filter_interfaces_1.entityFilterToJson(r.metadata, { description: 'y', categoryName: 'yoni' })) })];
859
- case 5:
860
- rows = _b.sent();
861
- expect(rows.length).toBe(1);
862
- expect(rows[0].id).toBe(2);
863
- return [4 /*yield*/, r.find({ where: filter_interfaces_1.Filter.entityFilterFromJson(r.metadata, filter_interfaces_1.entityFilterToJson(r.metadata, { id: { $ne: [2, 4] } })) })];
864
- case 6:
865
- rows = _b.sent();
866
- expect(rows.length).toBe(2);
867
- return [2 /*return*/];
868
- }
869
- });
870
- });
290
+ testAllDbs("test filter packer", async ({ insertFourRows }) => {
291
+ let r = await insertFourRows();
292
+ let rows = await r.find();
293
+ expect(rows.length).toBe(4);
294
+ rows = await r.find({
295
+ where: Filter.entityFilterFromJson(r.metadata, entityFilterToJson(r.metadata, { description: 'x' }))
296
+ });
297
+ expect(rows.length).toBe(2);
298
+ rows = await r.find({ where: Filter.entityFilterFromJson(r.metadata, entityFilterToJson(r.metadata, { id: 4 })) });
299
+ expect(rows.length).toBe(1);
300
+ expect(rows[0].categoryName).toBe('yael');
301
+ rows = await r.find({ where: Filter.entityFilterFromJson(r.metadata, entityFilterToJson(r.metadata, { description: 'y', categoryName: 'yoni' })) });
302
+ expect(rows.length).toBe(1);
303
+ expect(rows[0].id).toBe(2);
304
+ rows = await r.find({ where: Filter.entityFilterFromJson(r.metadata, entityFilterToJson(r.metadata, { id: { $ne: [2, 4] } })) });
305
+ expect(rows.length).toBe(2);
871
306
  }, false);
872
- db_tests_setup_1.testAll("Test unique Validation,", function (_a) {
873
- var createEntity = _a.createEntity;
874
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
875
- var type, c, cat, saved, err_1;
876
- return tslib_1.__generator(this, function (_b) {
877
- switch (_b.label) {
878
- case 0:
879
- type = /** @class */ (function (_super) {
880
- tslib_1.__extends(class_1, _super);
881
- function class_1() {
882
- return _super !== null && _super.apply(this, arguments) || this;
883
- }
884
- return class_1;
885
- }(remult_3_entities_1.Categories));
886
- remult3_1.Entity('categories')(type);
887
- remult3_1.Fields.string({
888
- validate: function (en, col) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
889
- return tslib_1.__generator(this, function (_a) {
890
- switch (_a.label) {
891
- case 0:
892
- if (!(en._.isNew() || en.a != en._.fields.a.originalValue)) return [3 /*break*/, 2];
893
- return [4 /*yield*/, c.count({ a: en.a })];
894
- case 1:
895
- if (_a.sent())
896
- en._.fields.a.error = 'already exists';
897
- _a.label = 2;
898
- case 2: return [2 /*return*/];
899
- }
900
- });
901
- }); }
902
- })(type.prototype, "a");
903
- return [4 /*yield*/, createEntity(type)];
904
- case 1:
905
- c = _b.sent();
906
- cat = c.create();
907
- cat.a = '12';
908
- cat.id = 1;
909
- return [4 /*yield*/, cat._.save()];
910
- case 2:
911
- _b.sent();
912
- cat = c.create();
913
- cat.a = '12';
914
- saved = false;
915
- _b.label = 3;
916
- case 3:
917
- _b.trys.push([3, 5, , 6]);
918
- return [4 /*yield*/, cat._.save()];
919
- case 4:
920
- _b.sent();
921
- saved = true;
922
- return [3 /*break*/, 6];
923
- case 5:
924
- err_1 = _b.sent();
925
- expect(cat._.fields.a.error).toEqual("already exists");
926
- return [3 /*break*/, 6];
927
- case 6:
928
- expect(saved).toBe(false);
929
- return [2 /*return*/];
930
- }
931
- });
932
- });
933
- });
934
- db_tests_setup_1.testAll("Test unique Validation 2", function (_a) {
935
- var createEntity = _a.createEntity;
936
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
937
- var type, c, cat, saved, err_2;
938
- return tslib_1.__generator(this, function (_b) {
939
- switch (_b.label) {
940
- case 0:
941
- type = /** @class */ (function (_super) {
942
- tslib_1.__extends(class_2, _super);
943
- function class_2() {
944
- return _super !== null && _super.apply(this, arguments) || this;
945
- }
946
- return class_2;
947
- }(remult_3_entities_1.Categories));
948
- remult3_1.Entity('sdfgds')(type);
949
- remult3_1.Fields.string({
950
- validate: validators_1.Validators.unique
951
- })(type.prototype, "a");
952
- return [4 /*yield*/, createEntity(type)];
953
- case 1:
954
- c = _b.sent();
955
- cat = c.create();
956
- cat.a = '12';
957
- return [4 /*yield*/, cat._.save()];
958
- case 2:
959
- _b.sent();
960
- cat = c.create();
961
- cat.a = '12';
962
- saved = false;
963
- _b.label = 3;
964
- case 3:
965
- _b.trys.push([3, 5, , 6]);
966
- return [4 /*yield*/, cat._.save()];
967
- case 4:
968
- _b.sent();
969
- saved = true;
970
- return [3 /*break*/, 6];
971
- case 5:
972
- err_2 = _b.sent();
973
- expect(cat._.fields.a.error).toEqual("already exists");
974
- return [3 /*break*/, 6];
975
- case 6:
976
- expect(saved).toBe(false);
977
- return [2 /*return*/];
978
- }
979
- });
980
- });
307
+ testAll("Test unique Validation,", async ({ createEntity }) => {
308
+ let type = class extends newCategories {
309
+ };
310
+ Entity('categories')(type);
311
+ Fields.string({
312
+ validate: async (en, col) => {
313
+ if (en._.isNew() || en.a != en._.fields.a.originalValue) {
314
+ if (await c.count({ a: en.a }))
315
+ en._.fields.a.error = 'already exists';
316
+ }
317
+ }
318
+ })(type.prototype, "a");
319
+ var c = await createEntity(type);
320
+ var cat = c.create();
321
+ cat.a = '12';
322
+ cat.id = 1;
323
+ await cat._.save();
324
+ cat = c.create();
325
+ cat.a = '12';
326
+ var saved = false;
327
+ try {
328
+ await cat._.save();
329
+ saved = true;
330
+ }
331
+ catch (err) {
332
+ expect(cat._.fields.a.error).toEqual("already exists");
333
+ }
334
+ expect(saved).toBe(false);
981
335
  });
982
- var testNumbers = /** @class */ (function (_super) {
983
- tslib_1.__extends(testNumbers, _super);
984
- function testNumbers() {
985
- return _super !== null && _super.apply(this, arguments) || this;
336
+ testAll("Test unique Validation 2", async ({ createEntity }) => {
337
+ let type = class extends newCategories {
338
+ };
339
+ Entity('sdfgds')(type);
340
+ Fields.string({
341
+ validate: Validators.unique
342
+ })(type.prototype, "a");
343
+ var c = await createEntity(type);
344
+ var cat = c.create();
345
+ cat.a = '12';
346
+ await cat._.save();
347
+ cat = c.create();
348
+ cat.a = '12';
349
+ var saved = false;
350
+ try {
351
+ await cat._.save();
352
+ saved = true;
986
353
  }
987
- tslib_1.__decorate([
988
- remult3_1.Fields.integer(),
989
- tslib_1.__metadata("design:type", Number)
990
- ], testNumbers.prototype, "id", void 0);
991
- tslib_1.__decorate([
992
- remult3_1.Fields.number(),
993
- tslib_1.__metadata("design:type", Number)
994
- ], testNumbers.prototype, "a", void 0);
995
- testNumbers = tslib_1.__decorate([
996
- remult3_1.Entity('testNumbers', { allowApiCrud: true })
997
- ], testNumbers);
998
- return testNumbers;
999
- }(remult3_1.EntityBase));
1000
- db_tests_setup_1.testAll("test that integer and int work", function (_a) {
1001
- var createEntity = _a.createEntity;
1002
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1003
- var e;
1004
- return tslib_1.__generator(this, function (_b) {
1005
- switch (_b.label) {
1006
- case 0: return [4 /*yield*/, createEntity(testNumbers)];
1007
- case 1: return [4 /*yield*/, (_b.sent()).create({
1008
- id: 1.5,
1009
- a: 1.5
1010
- }).save()];
1011
- case 2:
1012
- e = _b.sent();
1013
- expect(e.id).toBe(2);
1014
- expect(e.a).toBe(1.5);
1015
- return [2 /*return*/];
1016
- }
1017
- });
1018
- });
354
+ catch (err) {
355
+ expect(cat._.fields.a.error).toEqual("already exists");
356
+ }
357
+ expect(saved).toBe(false);
1019
358
  });
1020
- db_tests_setup_1.testAll("post with logic works and max in entity", function (_a) {
1021
- var remult = _a.remult, createEntity = _a.createEntity;
1022
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1023
- var c, api, t, d;
1024
- return tslib_1.__generator(this, function (_b) {
1025
- switch (_b.label) {
1026
- case 0: return [4 /*yield*/, createEntity(entityWithValidations_1.entityWithValidations)];
1027
- case 1:
1028
- c = _b.sent();
1029
- api = new data_api_1.DataApi(c, remult);
1030
- t = new TestDataApiResponse_1.TestDataApiResponse();
1031
- d = new Done_1.Done();
1032
- t.created = function (data) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1033
- return tslib_1.__generator(this, function (_a) {
1034
- expect(data.name).toBe('noam honig');
1035
- expect(data.myId).toBe(1);
1036
- d.ok();
1037
- return [2 /*return*/];
1038
- });
1039
- }); };
1040
- entityWithValidations_1.entityWithValidations.savingRowCount = 0;
1041
- return [4 /*yield*/, api.post(t, { name: 'noam honig', myId: 1 })];
1042
- case 2:
1043
- _b.sent();
1044
- expect(entityWithValidations_1.entityWithValidations.savingRowCount).toBe(1);
1045
- d.test();
1046
- return [2 /*return*/];
1047
- }
1048
- });
1049
- });
359
+ let testNumbers = class testNumbers extends EntityBase {
360
+ };
361
+ __decorate([
362
+ Fields.integer(),
363
+ __metadata("design:type", Number)
364
+ ], testNumbers.prototype, "id", void 0);
365
+ __decorate([
366
+ Fields.number(),
367
+ __metadata("design:type", Number)
368
+ ], testNumbers.prototype, "a", void 0);
369
+ testNumbers = __decorate([
370
+ Entity('testNumbers', { allowApiCrud: true })
371
+ ], testNumbers);
372
+ testAll("test that integer and int work", async ({ createEntity }) => {
373
+ let e = await (await createEntity(testNumbers)).create({
374
+ id: 1.5,
375
+ a: 1.5
376
+ }).save();
377
+ expect(e.id).toBe(2);
378
+ expect(e.a).toBe(1.5);
1050
379
  });
1051
- db_tests_setup_1.testAllDbs("get array works with filter in body", function (_a) {
1052
- var createData = _a.createData, remult = _a.remult;
1053
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1054
- var c, api, t, d;
1055
- return tslib_1.__generator(this, function (_b) {
1056
- switch (_b.label) {
1057
- case 0: return [4 /*yield*/, createData(function (i) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1058
- return tslib_1.__generator(this, function (_a) {
1059
- switch (_a.label) {
1060
- case 0: return [4 /*yield*/, i(1, 'noam', undefined, models_1.Status.open)];
1061
- case 1:
1062
- _a.sent();
1063
- return [4 /*yield*/, i(2, 'yael', undefined, models_1.Status.closed)];
1064
- case 2:
1065
- _a.sent();
1066
- return [4 /*yield*/, i(3, 'yoni', undefined, models_1.Status.hold)];
1067
- case 3:
1068
- _a.sent();
1069
- return [2 /*return*/];
1070
- }
1071
- });
1072
- }); })];
1073
- case 1:
1074
- c = _b.sent();
1075
- api = new data_api_1.DataApi(c, remult);
1076
- t = new TestDataApiResponse_1.TestDataApiResponse();
1077
- d = new Done_1.Done();
1078
- t.success = function (data) {
1079
- expect(data.length).toBe(2);
1080
- expect(data[0].id).toBe(2);
1081
- expect(data[1].id).toBe(3);
1082
- d.ok();
1083
- };
1084
- return [4 /*yield*/, api.getArray(t, {
1085
- get: function (x) {
1086
- return undefined;
1087
- }
1088
- }, {
1089
- status_in: '[1, 2]'
1090
- })];
1091
- case 2:
1092
- _b.sent();
1093
- d.test();
1094
- return [2 /*return*/];
1095
- }
1096
- });
1097
- });
380
+ testAll("post with logic works and max in entity", async ({ remult, createEntity }) => {
381
+ let c = await createEntity(entityWithValidations);
382
+ var api = new DataApi(c, remult);
383
+ let t = new TestDataApiResponse();
384
+ let d = new Done();
385
+ t.created = async (data) => {
386
+ expect(data.name).toBe('noam honig');
387
+ expect(data.myId).toBe(1);
388
+ d.ok();
389
+ };
390
+ entityWithValidations.savingRowCount = 0;
391
+ await api.post(t, { name: 'noam honig', myId: 1 });
392
+ expect(entityWithValidations.savingRowCount).toBe(1);
393
+ d.test();
394
+ });
395
+ testAllDbs("get array works with filter in body", async ({ createData, remult }) => {
396
+ let c = await createData(async (i) => {
397
+ await i(1, 'noam', undefined, Status.open);
398
+ await i(2, 'yael', undefined, Status.closed);
399
+ await i(3, 'yoni', undefined, Status.hold);
400
+ });
401
+ var api = new DataApi(c, remult);
402
+ let t = new TestDataApiResponse();
403
+ let d = new Done();
404
+ t.success = data => {
405
+ expect(data.length).toBe(2);
406
+ expect(data[0].id).toBe(2);
407
+ expect(data[1].id).toBe(3);
408
+ d.ok();
409
+ };
410
+ await api.getArray(t, {
411
+ get: x => {
412
+ return undefined;
413
+ }
414
+ }, {
415
+ status_in: '[1, 2]'
416
+ });
417
+ d.test();
1098
418
  }, false);
1099
- db_tests_setup_1.testAllDbs("entity order by works", function (_a) {
1100
- var createData = _a.createData;
1101
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1102
- var type, c, x, x, x;
1103
- return tslib_1.__generator(this, function (_b) {
1104
- switch (_b.label) {
1105
- case 0:
1106
- type = /** @class */ (function (_super) {
1107
- tslib_1.__extends(type, _super);
1108
- function type() {
1109
- return _super !== null && _super.apply(this, arguments) || this;
1110
- }
1111
- return type;
1112
- }(remult_3_entities_1.Categories));
1113
- remult3_1.Entity('', {
1114
- defaultOrderBy: { categoryName: "asc" },
1115
- })(type);
1116
- return [4 /*yield*/, createData(function (insert) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1117
- return tslib_1.__generator(this, function (_a) {
1118
- switch (_a.label) {
1119
- case 0: return [4 /*yield*/, insert(1, 'noam')];
1120
- case 1:
1121
- _a.sent();
1122
- return [4 /*yield*/, insert(2, "yoni")];
1123
- case 2:
1124
- _a.sent();
1125
- return [4 /*yield*/, insert(3, "yael")];
1126
- case 3:
1127
- _a.sent();
1128
- return [2 /*return*/];
1129
- }
1130
- });
1131
- }); }, type)];
1132
- case 1:
1133
- c = _b.sent();
1134
- return [4 /*yield*/, c.find()];
1135
- case 2:
1136
- x = _b.sent();
1137
- expect(x[0].id).toBe(1);
1138
- expect(x[1].id).toBe(3);
1139
- expect(x[2].id).toBe(2);
1140
- return [4 /*yield*/, c.find({ orderBy: {} })];
1141
- case 3:
1142
- x = _b.sent();
1143
- expect(x[0].id).toBe(1);
1144
- expect(x[1].id).toBe(3);
1145
- expect(x[2].id).toBe(2);
1146
- return [4 /*yield*/, c.query({ orderBy: {}, pageSize: 100 }).paginator()];
1147
- case 4:
1148
- x = (_b.sent()).items;
1149
- expect(x[0].id).toBe(1);
1150
- expect(x[1].id).toBe(3);
1151
- expect(x[2].id).toBe(2);
1152
- return [2 /*return*/];
1153
- }
1154
- });
1155
- });
419
+ testAllDbs("entity order by works", async ({ createData }) => {
420
+ let type = class extends newCategories {
421
+ };
422
+ Entity('', {
423
+ defaultOrderBy: { categoryName: "asc" },
424
+ })(type);
425
+ let c = await createData(async (insert) => {
426
+ await insert(1, 'noam');
427
+ await insert(2, "yoni");
428
+ await insert(3, "yael");
429
+ }, type);
430
+ var x = await c.find();
431
+ expect(x[0].id).toBe(1);
432
+ expect(x[1].id).toBe(3);
433
+ expect(x[2].id).toBe(2);
434
+ var x = await c.find({ orderBy: {} });
435
+ expect(x[0].id).toBe(1);
436
+ expect(x[1].id).toBe(3);
437
+ expect(x[2].id).toBe(2);
438
+ var x = (await c.query({ orderBy: {}, pageSize: 100 }).paginator()).items;
439
+ expect(x[0].id).toBe(1);
440
+ expect(x[1].id).toBe(3);
441
+ expect(x[2].id).toBe(2);
1156
442
  }, false);
1157
- db_tests_setup_1.testAllDbs("put with validation works", function (_a) {
1158
- var createData = _a.createData, remult = _a.remult;
1159
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1160
- var count, type, c, api, t, d, x;
1161
- return tslib_1.__generator(this, function (_b) {
1162
- switch (_b.label) {
1163
- case 0:
1164
- count = 0;
1165
- type = /** @class */ (function (_super) {
1166
- tslib_1.__extends(type, _super);
1167
- function type() {
1168
- return _super !== null && _super.apply(this, arguments) || this;
1169
- }
1170
- return type;
1171
- }(remult_3_entities_1.Categories));
1172
- remult3_1.Entity(undefined, {
1173
- allowApiCrud: true,
1174
- saving: function () {
1175
- if (!entityWithValidations_1.testConfiguration.restDbRunningOnServer)
1176
- count++;
1177
- }
1178
- })(type);
1179
- return [4 /*yield*/, createData(function (insert) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
1180
- switch (_a.label) {
1181
- case 0: return [4 /*yield*/, insert(1, 'noam')];
1182
- case 1: return [2 /*return*/, _a.sent()];
1183
- }
1184
- }); }); }, type)];
1185
- case 1:
1186
- c = _b.sent();
1187
- api = new data_api_1.DataApi(c, remult);
1188
- t = new TestDataApiResponse_1.TestDataApiResponse();
1189
- d = new Done_1.Done();
1190
- t.success = function (data) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1191
- return tslib_1.__generator(this, function (_a) {
1192
- d.ok();
1193
- return [2 /*return*/];
1194
- });
1195
- }); };
1196
- count = 0;
1197
- return [4 /*yield*/, api.put(t, 1, {
1198
- categoryName: 'noam 1'
1199
- })];
1200
- case 2:
1201
- _b.sent();
1202
- d.test();
1203
- return [4 /*yield*/, c.find({
1204
- where: { id: 1 }
1205
- })];
1206
- case 3:
1207
- x = _b.sent();
1208
- expect(x[0].categoryName).toBe('noam 1');
1209
- expect(count).toBe(1);
1210
- return [2 /*return*/];
1211
- }
1212
- });
1213
- });
443
+ testAllDbs("put with validation works", async ({ createData, remult }) => {
444
+ let count = 0;
445
+ let type = class extends newCategories {
446
+ };
447
+ Entity(undefined, {
448
+ allowApiCrud: true,
449
+ saving: () => {
450
+ if (!testConfiguration.restDbRunningOnServer)
451
+ count++;
452
+ }
453
+ })(type);
454
+ let c = await createData(async (insert) => await insert(1, 'noam'), type);
455
+ var api = new DataApi(c, remult);
456
+ let t = new TestDataApiResponse();
457
+ let d = new Done();
458
+ t.success = async (data) => {
459
+ d.ok();
460
+ };
461
+ count = 0;
462
+ await api.put(t, 1, {
463
+ categoryName: 'noam 1'
464
+ });
465
+ d.test();
466
+ var x = await c.find({
467
+ where: { id: 1 }
468
+ });
469
+ expect(x[0].categoryName).toBe('noam 1');
470
+ expect(count).toBe(1);
1214
471
  });
1215
- db_tests_setup_1.testAll("saves correctly to db", function (_a) {
1216
- var createEntity = _a.createEntity;
1217
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1218
- var type, r;
1219
- return tslib_1.__generator(this, function (_b) {
1220
- switch (_b.label) {
1221
- case 0:
1222
- type = /** @class */ (function (_super) {
1223
- tslib_1.__extends(class_3, _super);
1224
- function class_3() {
1225
- var _this = _super !== null && _super.apply(this, arguments) || this;
1226
- _this.ok = false;
1227
- return _this;
1228
- }
1229
- return class_3;
1230
- }(remult3_1.EntityBase));
1231
- remult3_1.Entity('asdf', { allowApiCrud: true })(type);
1232
- remult3_1.Fields.number()(type.prototype, 'id');
1233
- remult3_1.Fields.boolean()(type.prototype, "ok");
1234
- return [4 /*yield*/, createEntity(type)];
1235
- case 1:
1236
- r = (_b.sent()).create();
1237
- r.id = 1;
1238
- r.ok = true;
1239
- return [4 /*yield*/, r._.save()];
1240
- case 2:
1241
- _b.sent();
1242
- expect(r.ok).toBe(true);
1243
- r.ok = false;
1244
- return [4 /*yield*/, r._.save()];
1245
- case 3:
1246
- _b.sent();
1247
- expect(r.ok).toBe(false);
1248
- return [2 /*return*/];
1249
- }
1250
- });
1251
- });
472
+ testAll("saves correctly to db", async ({ createEntity }) => {
473
+ let type = class extends EntityBase {
474
+ constructor() {
475
+ super(...arguments);
476
+ this.ok = false;
477
+ }
478
+ };
479
+ Entity('asdf', { allowApiCrud: true })(type);
480
+ Fields.number()(type.prototype, 'id');
481
+ Fields.boolean()(type.prototype, "ok");
482
+ let r = (await createEntity(type)).create();
483
+ r.id = 1;
484
+ r.ok = true;
485
+ await r._.save();
486
+ expect(r.ok).toBe(true);
487
+ r.ok = false;
488
+ await r._.save();
489
+ expect(r.ok).toBe(false);
1252
490
  });
1253
- var autoIncrement = /** @class */ (function (_super) {
1254
- tslib_1.__extends(autoIncrement, _super);
1255
- function autoIncrement() {
1256
- return _super !== null && _super.apply(this, arguments) || this;
1257
- }
1258
- tslib_1.__decorate([
1259
- remult3_1.Fields.autoIncrement(),
1260
- tslib_1.__metadata("design:type", Number)
1261
- ], autoIncrement.prototype, "id", void 0);
1262
- tslib_1.__decorate([
1263
- remult3_1.Fields.integer(),
1264
- tslib_1.__metadata("design:type", Number)
1265
- ], autoIncrement.prototype, "stam", void 0);
1266
- autoIncrement = tslib_1.__decorate([
1267
- remult3_1.Entity("autoi", { allowApiCrud: true })
1268
- ], autoIncrement);
1269
- return autoIncrement;
1270
- }(remult3_1.EntityBase));
1271
- db_tests_setup_1.testAll("auto increment can't be affected by insert or update", function (_a) {
1272
- var createEntity = _a.createEntity;
1273
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1274
- var repo, r, x;
1275
- return tslib_1.__generator(this, function (_b) {
1276
- switch (_b.label) {
1277
- case 0: return [4 /*yield*/, createEntity(autoIncrement)];
1278
- case 1:
1279
- repo = _b.sent();
1280
- return [4 /*yield*/, repo.create({ id: 1234, stam: 1 }).save()];
1281
- case 2:
1282
- r = _b.sent();
1283
- x = r.id;
1284
- expect(x == 1234).toBe(false);
1285
- r.id = 4321;
1286
- return [4 /*yield*/, r.save()];
1287
- case 3:
1288
- _b.sent();
1289
- expect(r.id).toBe(x);
1290
- return [2 /*return*/];
1291
- }
1292
- });
1293
- });
491
+ let autoIncrement = class autoIncrement extends EntityBase {
492
+ };
493
+ __decorate([
494
+ Fields.autoIncrement(),
495
+ __metadata("design:type", Number)
496
+ ], autoIncrement.prototype, "id", void 0);
497
+ __decorate([
498
+ Fields.integer(),
499
+ __metadata("design:type", Number)
500
+ ], autoIncrement.prototype, "stam", void 0);
501
+ autoIncrement = __decorate([
502
+ Entity("autoi", { allowApiCrud: true })
503
+ ], autoIncrement);
504
+ testAll("auto increment can't be affected by insert or update", async ({ createEntity }) => {
505
+ let repo = await createEntity(autoIncrement);
506
+ let r = await repo.create({ id: 1234, stam: 1 }).save();
507
+ let x = r.id;
508
+ expect(x == 1234).toBe(false);
509
+ r.id = 4321;
510
+ await r.save();
511
+ expect(r.id).toBe(x);
1294
512
  }, false);
1295
- db_tests_setup_1.testAll("Paging", function (_a) {
1296
- var createEntity = _a.createEntity;
1297
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1298
- var s, _b, _c;
1299
- return tslib_1.__generator(this, function (_d) {
1300
- switch (_d.label) {
1301
- case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
1302
- case 1:
1303
- s = _d.sent();
1304
- _b = expect;
1305
- return [4 /*yield*/, s.find({ limit: 3, orderBy: { myId: "asc" } })];
1306
- case 2:
1307
- _b.apply(void 0, [(_d.sent()).length]).toBe(3);
1308
- _c = expect;
1309
- return [4 /*yield*/, s.find({ limit: 3, orderBy: { myId: "asc" }, page: 2 })];
1310
- case 3:
1311
- _c.apply(void 0, [(_d.sent()).length]).toBe(1);
1312
- return [2 /*return*/];
1313
- }
1314
- });
1315
- });
513
+ testAll("Paging", async ({ createEntity }) => {
514
+ let s = await entityWithValidations.create4RowsInDp(createEntity);
515
+ expect((await s.find({ limit: 3, orderBy: { myId: "asc" } })).length).toBe(3);
516
+ expect((await s.find({ limit: 3, orderBy: { myId: "asc" }, page: 2 })).length).toBe(1);
1316
517
  }, false);
1317
- db_tests_setup_1.testAll("filter", function (_a) {
1318
- var createEntity = _a.createEntity;
1319
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1320
- var s, _b;
1321
- return tslib_1.__generator(this, function (_c) {
1322
- switch (_c.label) {
1323
- case 0: return [4 /*yield*/, createEntity(testFilter)];
1324
- case 1:
1325
- s = _c.sent();
1326
- return [4 /*yield*/, s.insert({ id: 1, a: 'a', b: 'b', c: 'c' })];
1327
- case 2:
1328
- _c.sent();
1329
- _b = expect;
1330
- return [4 /*yield*/, s.count({
1331
- a: 'z',
1332
- $and: [testFilter.search('')]
1333
- })];
1334
- case 3:
1335
- _b.apply(void 0, [_c.sent()]).toBe(0);
1336
- return [2 /*return*/];
1337
- }
1338
- });
1339
- });
518
+ testAll("filter", async ({ createEntity }) => {
519
+ const s = await createEntity(testFilter);
520
+ await s.insert({ id: 1, a: 'a', b: 'b', c: 'c' });
521
+ expect(await s.count({
522
+ a: 'z',
523
+ $and: [testFilter.search('')]
524
+ })).toBe(0);
1340
525
  }, false);
1341
- db_tests_setup_1.testAll("large string field", function (_a) {
1342
- var createEntity = _a.createEntity;
1343
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1344
- var s, r;
1345
- return tslib_1.__generator(this, function (_b) {
1346
- switch (_b.label) {
1347
- case 0: return [4 /*yield*/, createEntity(stam)];
1348
- case 1:
1349
- s = _b.sent();
1350
- return [4 /*yield*/, s.insert({ title: "1234567890".repeat(100) })];
1351
- case 2:
1352
- _b.sent();
1353
- return [4 /*yield*/, s.findFirst()];
1354
- case 3:
1355
- r = _b.sent();
1356
- expect(r.title).toBe("1234567890".repeat(100));
1357
- return [2 /*return*/];
1358
- }
1359
- });
1360
- });
526
+ testAll("large string field", async ({ createEntity }) => {
527
+ const s = await createEntity(stam);
528
+ await s.insert({ title: "1234567890".repeat(100) });
529
+ const r = await s.findFirst();
530
+ expect(r.title).toBe("1234567890".repeat(100));
1361
531
  }, false);
1362
- var testFilter = /** @class */ (function () {
1363
- function testFilter() {
532
+ let testFilter = class testFilter {
533
+ constructor() {
1364
534
  this.id = 0;
1365
535
  this.a = '';
1366
536
  this.b = '';
1367
537
  this.c = '';
1368
538
  }
1369
- testFilter.search = filter_interfaces_1.Filter.createCustom(function (remult, str) { return ({
1370
- $and: [{
1371
- $or: [
1372
- { a: 'a' },
1373
- { b: 'a' },
1374
- { c: 'a' }
1375
- ]
1376
- }]
1377
- }); });
1378
- tslib_1.__decorate([
1379
- remult3_1.Fields.integer(),
1380
- tslib_1.__metadata("design:type", Number)
1381
- ], testFilter.prototype, "id", void 0);
1382
- tslib_1.__decorate([
1383
- remult3_1.Fields.string(),
1384
- tslib_1.__metadata("design:type", String)
1385
- ], testFilter.prototype, "a", void 0);
1386
- tslib_1.__decorate([
1387
- remult3_1.Fields.string(),
1388
- tslib_1.__metadata("design:type", String)
1389
- ], testFilter.prototype, "b", void 0);
1390
- tslib_1.__decorate([
1391
- remult3_1.Fields.string(),
1392
- tslib_1.__metadata("design:type", String)
1393
- ], testFilter.prototype, "c", void 0);
1394
- testFilter = tslib_1.__decorate([
1395
- remult3_1.Entity("testfilter", { allowApiCrud: true })
1396
- ], testFilter);
1397
- return testFilter;
1398
- }());
1399
- var testStringWithNull = /** @class */ (function (_super) {
1400
- tslib_1.__extends(testStringWithNull, _super);
1401
- function testStringWithNull() {
1402
- var _this = _super !== null && _super.apply(this, arguments) || this;
1403
- _this.id = 0;
1404
- return _this;
539
+ };
540
+ testFilter.search = Filter.createCustom((remult, str) => ({
541
+ $and: [{
542
+ $or: [
543
+ { a: 'a' },
544
+ { b: 'a' },
545
+ { c: 'a' }
546
+ ]
547
+ }]
548
+ }));
549
+ __decorate([
550
+ Fields.integer(),
551
+ __metadata("design:type", Number)
552
+ ], testFilter.prototype, "id", void 0);
553
+ __decorate([
554
+ Fields.string(),
555
+ __metadata("design:type", String)
556
+ ], testFilter.prototype, "a", void 0);
557
+ __decorate([
558
+ Fields.string(),
559
+ __metadata("design:type", String)
560
+ ], testFilter.prototype, "b", void 0);
561
+ __decorate([
562
+ Fields.string(),
563
+ __metadata("design:type", String)
564
+ ], testFilter.prototype, "c", void 0);
565
+ testFilter = __decorate([
566
+ Entity("testfilter", { allowApiCrud: true })
567
+ ], testFilter);
568
+ let testStringWithNull = class testStringWithNull extends EntityBase {
569
+ constructor() {
570
+ super(...arguments);
571
+ this.id = 0;
1405
572
  }
1406
- tslib_1.__decorate([
1407
- remult3_1.Fields.integer(),
1408
- tslib_1.__metadata("design:type", Number)
1409
- ], testStringWithNull.prototype, "id", void 0);
1410
- tslib_1.__decorate([
1411
- remult3_1.Fields.string({ allowNull: true }),
1412
- tslib_1.__metadata("design:type", String)
1413
- ], testStringWithNull.prototype, "d", void 0);
1414
- testStringWithNull = tslib_1.__decorate([
1415
- remult3_1.Entity('teststringWithNull', { allowApiCrud: true })
1416
- ], testStringWithNull);
1417
- return testStringWithNull;
1418
- }(remult3_1.EntityBase));
1419
- var stam = /** @class */ (function (_super) {
1420
- tslib_1.__extends(stam, _super);
1421
- function stam() {
1422
- var _this = _super !== null && _super.apply(this, arguments) || this;
1423
- _this.id = 0;
1424
- _this.title = '';
1425
- return _this;
573
+ };
574
+ __decorate([
575
+ Fields.integer(),
576
+ __metadata("design:type", Number)
577
+ ], testStringWithNull.prototype, "id", void 0);
578
+ __decorate([
579
+ Fields.string({ allowNull: true }),
580
+ __metadata("design:type", String)
581
+ ], testStringWithNull.prototype, "d", void 0);
582
+ testStringWithNull = __decorate([
583
+ Entity('teststringWithNull', { allowApiCrud: true })
584
+ ], testStringWithNull);
585
+ let stam = class stam extends EntityBase {
586
+ constructor() {
587
+ super(...arguments);
588
+ this.id = 0;
589
+ this.title = '';
1426
590
  }
1427
- tslib_1.__decorate([
1428
- remult3_1.Fields.integer(),
1429
- tslib_1.__metadata("design:type", Number)
1430
- ], stam.prototype, "id", void 0);
1431
- tslib_1.__decorate([
1432
- remult3_1.Fields.string({ maxLength: 1500 }),
1433
- tslib_1.__metadata("design:type", String)
1434
- ], stam.prototype, "title", void 0);
1435
- stam = tslib_1.__decorate([
1436
- remult3_1.Entity("a", { allowApiCrud: true })
1437
- ], stam);
1438
- return stam;
1439
- }(remult3_1.EntityBase));
1440
- exports.stam = stam;
1441
- var p = /** @class */ (function (_super) {
1442
- tslib_1.__extends(p, _super);
1443
- function p(remult) {
1444
- var _this = _super.call(this) || this;
1445
- _this.remult = remult;
1446
- return _this;
591
+ };
592
+ __decorate([
593
+ Fields.integer(),
594
+ __metadata("design:type", Number)
595
+ ], stam.prototype, "id", void 0);
596
+ __decorate([
597
+ Fields.string({ maxLength: 1500 }),
598
+ __metadata("design:type", String)
599
+ ], stam.prototype, "title", void 0);
600
+ stam = __decorate([
601
+ Entity("a", { allowApiCrud: true })
602
+ ], stam);
603
+ export { stam };
604
+ let p = class p extends EntityBase {
605
+ constructor(remult) {
606
+ super();
607
+ this.remult = remult;
1447
608
  }
1448
- tslib_1.__decorate([
1449
- remult3_1.Fields.integer(),
1450
- tslib_1.__metadata("design:type", Number)
1451
- ], p.prototype, "id", void 0);
1452
- tslib_1.__decorate([
1453
- remult3_1.Fields.string(),
1454
- tslib_1.__metadata("design:type", String)
1455
- ], p.prototype, "name", void 0);
1456
- tslib_1.__decorate([
1457
- remult3_1.Field(function () { return c_1.c; }),
1458
- tslib_1.__metadata("design:type", c_1.c)
1459
- ], p.prototype, "c", void 0);
1460
- p = tslib_1.__decorate([
1461
- remult3_1.Entity('p', { allowApiCrud: true }),
1462
- tslib_1.__metadata("design:paramtypes", [context_1.Remult])
1463
- ], p);
1464
- return p;
1465
- }(remult3_1.EntityBase));
1466
- var tasksWithEnum = /** @class */ (function (_super) {
1467
- tslib_1.__extends(tasksWithEnum, _super);
1468
- function tasksWithEnum() {
1469
- var _this = _super !== null && _super.apply(this, arguments) || this;
1470
- _this.title = '';
1471
- _this.completed = false;
1472
- _this.priority = Priority.Low;
1473
- return _this;
609
+ };
610
+ __decorate([
611
+ Fields.integer(),
612
+ __metadata("design:type", Number)
613
+ ], p.prototype, "id", void 0);
614
+ __decorate([
615
+ Fields.string(),
616
+ __metadata("design:type", String)
617
+ ], p.prototype, "name", void 0);
618
+ __decorate([
619
+ Field(() => c),
620
+ __metadata("design:type", c)
621
+ ], p.prototype, "c", void 0);
622
+ p = __decorate([
623
+ Entity('p', { allowApiCrud: true }),
624
+ __metadata("design:paramtypes", [Remult])
625
+ ], p);
626
+ let tasksWithEnum = class tasksWithEnum extends IdEntity {
627
+ constructor() {
628
+ super(...arguments);
629
+ this.title = '';
630
+ this.completed = false;
631
+ this.priority = Priority.Low;
1474
632
  }
1475
- tslib_1.__decorate([
1476
- remult3_1.Fields.string(),
1477
- tslib_1.__metadata("design:type", Object)
1478
- ], tasksWithEnum.prototype, "title", void 0);
1479
- tslib_1.__decorate([
1480
- remult3_1.Fields.boolean(),
1481
- tslib_1.__metadata("design:type", Object)
1482
- ], tasksWithEnum.prototype, "completed", void 0);
1483
- tslib_1.__decorate([
1484
- remult3_1.Fields.object(),
1485
- tslib_1.__metadata("design:type", Object)
1486
- ], tasksWithEnum.prototype, "priority", void 0);
1487
- tasksWithEnum = tslib_1.__decorate([
1488
- remult3_1.Entity('tasksWithEnum', {
1489
- allowApiCrud: true
1490
- })
1491
- ], tasksWithEnum);
1492
- return tasksWithEnum;
1493
- }(id_entity_1.IdEntity));
1494
- exports.tasksWithEnum = tasksWithEnum;
1495
- var Priority;
633
+ };
634
+ __decorate([
635
+ Fields.string(),
636
+ __metadata("design:type", Object)
637
+ ], tasksWithEnum.prototype, "title", void 0);
638
+ __decorate([
639
+ Fields.boolean(),
640
+ __metadata("design:type", Object)
641
+ ], tasksWithEnum.prototype, "completed", void 0);
642
+ __decorate([
643
+ Fields.object(),
644
+ __metadata("design:type", Object)
645
+ ], tasksWithEnum.prototype, "priority", void 0);
646
+ tasksWithEnum = __decorate([
647
+ Entity('tasksWithEnum', {
648
+ allowApiCrud: true
649
+ })
650
+ ], tasksWithEnum);
651
+ export { tasksWithEnum };
652
+ export var Priority;
1496
653
  (function (Priority) {
1497
654
  Priority[Priority["Low"] = 0] = "Low";
1498
655
  Priority[Priority["High"] = 1] = "High";
1499
656
  Priority[Priority["Critical"] = 2] = "Critical";
1500
- })(Priority = exports.Priority || (exports.Priority = {}));
1501
- db_tests_setup_1.testAll("task with enum", function (_a) {
1502
- var createEntity = _a.createEntity;
1503
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1504
- var r, item, _b, _c;
1505
- return tslib_1.__generator(this, function (_d) {
1506
- switch (_d.label) {
1507
- case 0: return [4 /*yield*/, createEntity(tasksWithEnum)];
1508
- case 1:
1509
- r = _d.sent();
1510
- return [4 /*yield*/, r.insert({
1511
- title: 'a',
1512
- priority: Priority.Critical
1513
- })];
1514
- case 2:
1515
- _d.sent();
1516
- return [4 /*yield*/, r.findFirst()];
1517
- case 3:
1518
- item = _d.sent();
1519
- expect(item.priority).toBe(Priority.Critical);
1520
- _b = expect;
1521
- return [4 /*yield*/, r.count({ priority: Priority.Critical })];
1522
- case 4:
1523
- _b.apply(void 0, [_d.sent()]).toBe(1);
1524
- _c = expect;
1525
- return [4 /*yield*/, r.count({ priority: Priority.Low })];
1526
- case 5:
1527
- _c.apply(void 0, [_d.sent()]).toBe(0);
1528
- return [2 /*return*/];
1529
- }
1530
- });
1531
- });
657
+ })(Priority || (Priority = {}));
658
+ testAll("task with enum", async ({ createEntity }) => {
659
+ const r = await createEntity(tasksWithEnum);
660
+ await r.insert({
661
+ title: 'a',
662
+ priority: Priority.Critical
663
+ });
664
+ const item = await r.findFirst();
665
+ expect(item.priority).toBe(Priority.Critical);
666
+ expect(await r.count({ priority: Priority.Critical })).toBe(1);
667
+ expect(await r.count({ priority: Priority.Low })).toBe(0);
1532
668
  });
1533
- var tasksWithStringEnum = /** @class */ (function (_super) {
1534
- tslib_1.__extends(tasksWithStringEnum, _super);
1535
- function tasksWithStringEnum() {
1536
- var _this = _super !== null && _super.apply(this, arguments) || this;
1537
- _this.title = '';
1538
- _this.completed = false;
1539
- _this.priority = PriorityWithString.Low;
1540
- return _this;
669
+ let tasksWithStringEnum = class tasksWithStringEnum extends IdEntity {
670
+ constructor() {
671
+ super(...arguments);
672
+ this.title = '';
673
+ this.completed = false;
674
+ this.priority = PriorityWithString.Low;
1541
675
  }
1542
- tslib_1.__decorate([
1543
- remult3_1.Fields.string(),
1544
- tslib_1.__metadata("design:type", Object)
1545
- ], tasksWithStringEnum.prototype, "title", void 0);
1546
- tslib_1.__decorate([
1547
- remult3_1.Fields.boolean(),
1548
- tslib_1.__metadata("design:type", Object)
1549
- ], tasksWithStringEnum.prototype, "completed", void 0);
1550
- tslib_1.__decorate([
1551
- remult3_1.Fields.object(),
1552
- tslib_1.__metadata("design:type", Object)
1553
- ], tasksWithStringEnum.prototype, "priority", void 0);
1554
- tasksWithStringEnum = tslib_1.__decorate([
1555
- remult3_1.Entity('tasksWithStringEnum', {
1556
- allowApiCrud: true
1557
- })
1558
- ], tasksWithStringEnum);
1559
- return tasksWithStringEnum;
1560
- }(id_entity_1.IdEntity));
1561
- exports.tasksWithStringEnum = tasksWithStringEnum;
1562
- var PriorityWithString;
676
+ };
677
+ __decorate([
678
+ Fields.string(),
679
+ __metadata("design:type", Object)
680
+ ], tasksWithStringEnum.prototype, "title", void 0);
681
+ __decorate([
682
+ Fields.boolean(),
683
+ __metadata("design:type", Object)
684
+ ], tasksWithStringEnum.prototype, "completed", void 0);
685
+ __decorate([
686
+ Fields.object(),
687
+ __metadata("design:type", Object)
688
+ ], tasksWithStringEnum.prototype, "priority", void 0);
689
+ tasksWithStringEnum = __decorate([
690
+ Entity('tasksWithStringEnum', {
691
+ allowApiCrud: true
692
+ })
693
+ ], tasksWithStringEnum);
694
+ export { tasksWithStringEnum };
695
+ export var PriorityWithString;
1563
696
  (function (PriorityWithString) {
1564
697
  PriorityWithString["Low"] = "Low";
1565
698
  PriorityWithString["High"] = "High";
1566
699
  PriorityWithString["Critical"] = "Critical";
1567
- })(PriorityWithString = exports.PriorityWithString || (exports.PriorityWithString = {}));
1568
- db_tests_setup_1.testAll("task with enum string", function (_a) {
1569
- var createEntity = _a.createEntity;
1570
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1571
- var r, item, _b, _c;
1572
- return tslib_1.__generator(this, function (_d) {
1573
- switch (_d.label) {
1574
- case 0: return [4 /*yield*/, createEntity(tasksWithStringEnum)];
1575
- case 1:
1576
- r = _d.sent();
1577
- return [4 /*yield*/, r.insert({
1578
- title: 'a',
1579
- priority: PriorityWithString.Critical
1580
- })];
1581
- case 2:
1582
- _d.sent();
1583
- return [4 /*yield*/, r.findFirst()];
1584
- case 3:
1585
- item = _d.sent();
1586
- expect(item.priority).toBe(PriorityWithString.Critical);
1587
- _b = expect;
1588
- return [4 /*yield*/, r.count({ priority: PriorityWithString.Critical })];
1589
- case 4:
1590
- _b.apply(void 0, [_d.sent()]).toBe(1);
1591
- _c = expect;
1592
- return [4 /*yield*/, r.count({ priority: PriorityWithString.Low })];
1593
- case 5:
1594
- _c.apply(void 0, [_d.sent()]).toBe(0);
1595
- return [2 /*return*/];
1596
- }
1597
- });
1598
- });
700
+ })(PriorityWithString || (PriorityWithString = {}));
701
+ testAll("task with enum string", async ({ createEntity }) => {
702
+ const r = await createEntity(tasksWithStringEnum);
703
+ await r.insert({
704
+ title: 'a',
705
+ priority: PriorityWithString.Critical
706
+ });
707
+ const item = await r.findFirst();
708
+ expect(item.priority).toBe(PriorityWithString.Critical);
709
+ expect(await r.count({ priority: PriorityWithString.Critical })).toBe(1);
710
+ expect(await r.count({ priority: PriorityWithString.Low })).toBe(0);
1599
711
  });
1600
- db_tests_setup_1.testAll("test transaction rollback", function (_a) {
1601
- var db = _a.db;
1602
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1603
- var fail, _b;
1604
- return tslib_1.__generator(this, function (_c) {
1605
- switch (_c.label) {
1606
- case 0:
1607
- fail = true;
1608
- _c.label = 1;
1609
- case 1:
1610
- _c.trys.push([1, 3, , 4]);
1611
- return [4 /*yield*/, db.transaction(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1612
- return tslib_1.__generator(this, function (_a) {
1613
- throw "error";
1614
- });
1615
- }); })];
1616
- case 2:
1617
- _c.sent();
1618
- fail = false;
1619
- return [3 /*break*/, 4];
1620
- case 3:
1621
- _b = _c.sent();
1622
- return [3 /*break*/, 4];
1623
- case 4:
1624
- expect(fail).toBe(true);
1625
- return [2 /*return*/];
1626
- }
712
+ testAll("test transaction rollback", async ({ db }) => {
713
+ let fail = true;
714
+ try {
715
+ await db.transaction(async () => {
716
+ throw "error";
1627
717
  });
1628
- });
718
+ fail = false;
719
+ }
720
+ catch {
721
+ }
722
+ expect(fail).toBe(true);
1629
723
  });