remult 0.9.5 → 0.9.9

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 (82) hide show
  1. package/package.json +1 -1
  2. package/postgres/postgres-data-provider.d.ts +1 -1
  3. package/postgres/postgres-data-provider.js +22 -10
  4. package/postgres/postgres-data-provider.js.map +1 -1
  5. package/remult-knex/index.d.ts +42 -0
  6. package/remult-knex/index.js +768 -0
  7. package/remult-knex/index.js.map +1 -0
  8. package/src/backend-tests/backend-database-test-setup.backend-spec.d.ts +4 -0
  9. package/src/backend-tests/backend-database-test-setup.backend-spec.js +123 -0
  10. package/src/backend-tests/backend-database-test-setup.backend-spec.js.map +1 -0
  11. package/src/backend-tests/my-test.backend-spec.d.ts +1 -0
  12. package/src/backend-tests/my-test.backend-spec.js +24 -0
  13. package/src/backend-tests/my-test.backend-spec.js.map +1 -0
  14. package/src/context.d.ts +5 -1
  15. package/src/context.js +19 -5
  16. package/src/context.js.map +1 -1
  17. package/src/data-api.d.ts +1 -9
  18. package/src/data-api.js.map +1 -1
  19. package/src/data-providers/array-entity-data-provider.js +1 -1
  20. package/src/data-providers/array-entity-data-provider.js.map +1 -1
  21. package/src/data-providers/json-data-provider.d.ts +1 -1
  22. package/src/data-providers/json-data-provider.js.map +1 -1
  23. package/src/data-providers/sql-database.js +1 -2
  24. package/src/data-providers/sql-database.js.map +1 -1
  25. package/src/remult3/RepositoryImplementation.d.ts +8 -2
  26. package/src/remult3/RepositoryImplementation.js +326 -125
  27. package/src/remult3/RepositoryImplementation.js.map +1 -1
  28. package/src/remult3/remult3.d.ts +3 -1
  29. package/src/shared-tests/db-tests-setup.d.ts +23 -0
  30. package/src/shared-tests/db-tests-setup.js +171 -0
  31. package/src/shared-tests/db-tests-setup.js.map +1 -0
  32. package/src/shared-tests/db-tests.db-tests.d.ts +5 -0
  33. package/src/shared-tests/db-tests.db-tests.js +1228 -0
  34. package/src/shared-tests/db-tests.db-tests.js.map +1 -0
  35. package/src/shared-tests/deleteAll.d.ts +2 -0
  36. package/src/shared-tests/deleteAll.js +22 -0
  37. package/src/shared-tests/deleteAll.js.map +1 -0
  38. package/src/shared-tests/entityWithValidations.d.ts +14 -0
  39. package/src/shared-tests/entityWithValidations.js +95 -0
  40. package/src/shared-tests/entityWithValidations.js.map +1 -0
  41. package/src/shared-tests/index.d.ts +4 -0
  42. package/src/shared-tests/index.js +7 -0
  43. package/src/shared-tests/index.js.map +1 -0
  44. package/src/shared-tests/test-custom-id-column.spec.d.ts +1 -0
  45. package/src/shared-tests/test-custom-id-column.spec.js +88 -0
  46. package/src/shared-tests/test-custom-id-column.spec.js.map +1 -0
  47. package/src/shared-tests/test-special-value.spec.d.ts +10 -0
  48. package/src/shared-tests/test-special-value.spec.js +129 -0
  49. package/src/shared-tests/test-special-value.spec.js.map +1 -0
  50. package/src/shared-tests/test-update-with-null.spec.d.ts +1 -0
  51. package/src/shared-tests/test-update-with-null.spec.js +52 -0
  52. package/src/shared-tests/test-update-with-null.spec.js.map +1 -0
  53. package/src/tests/Done.d.ts +5 -0
  54. package/src/tests/Done.js +18 -0
  55. package/src/tests/Done.js.map +1 -0
  56. package/src/tests/TestDataApiResponse.d.ts +10 -0
  57. package/src/tests/TestDataApiResponse.js +30 -0
  58. package/src/tests/TestDataApiResponse.js.map +1 -0
  59. package/src/tests/c.d.ts +8 -0
  60. package/src/tests/c.js +29 -0
  61. package/src/tests/c.js.map +1 -0
  62. package/src/tests/createData.d.ts +7 -0
  63. package/src/tests/createData.js +51 -0
  64. package/src/tests/createData.js.map +1 -0
  65. package/src/tests/d.d.ts +7 -0
  66. package/src/tests/d.js +44 -0
  67. package/src/tests/d.js.map +1 -0
  68. package/src/tests/dWithPrefilter.d.ts +7 -0
  69. package/src/tests/dWithPrefilter.js +46 -0
  70. package/src/tests/dWithPrefilter.js.map +1 -0
  71. package/src/tests/entityForCustomFilter.d.ts +16 -0
  72. package/src/tests/entityForCustomFilter.js +67 -0
  73. package/src/tests/entityForCustomFilter.js.map +1 -0
  74. package/src/tests/entityWithValidationsOnColumn.d.ts +5 -0
  75. package/src/tests/entityWithValidationsOnColumn.js +30 -0
  76. package/src/tests/entityWithValidationsOnColumn.js.map +1 -0
  77. package/src/tests/h.d.ts +6 -0
  78. package/src/tests/h.js +43 -0
  79. package/src/tests/h.js.map +1 -0
  80. package/src/tests/tasks.d.ts +6 -0
  81. package/src/tests/tasks.js +31 -0
  82. package/src/tests/tasks.js.map +1 -0
@@ -0,0 +1,1228 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ 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
+ db_tests_setup_1.testAll("what", function (_a) {
24
+ var remult = _a.remult, createEntity = _a.createEntity;
25
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
26
+ var _b;
27
+ return tslib_1.__generator(this, function (_c) {
28
+ switch (_c.label) {
29
+ case 0: return [4 /*yield*/, createEntity(stam)];
30
+ case 1: return [4 /*yield*/, (_c.sent()).create({ id: 1, title: 'noam' }).save()];
31
+ case 2:
32
+ _c.sent();
33
+ _b = expect;
34
+ return [4 /*yield*/, remult.repo(stam).count()];
35
+ case 3:
36
+ _b.apply(void 0, [_c.sent()]).toBe(1);
37
+ return [2 /*return*/];
38
+ }
39
+ });
40
+ });
41
+ }, false);
42
+ db_tests_setup_1.testAll("filter works on all db", function (_a) {
43
+ var createEntity = _a.createEntity;
44
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
45
+ var s, _b;
46
+ return tslib_1.__generator(this, function (_c) {
47
+ switch (_c.label) {
48
+ case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
49
+ case 1:
50
+ s = _c.sent();
51
+ _b = expect;
52
+ return [4 /*yield*/, s.find({ where: { myId: [1, 3] } })];
53
+ case 2:
54
+ _b.apply(void 0, [(_c.sent()).length]).toBe(2);
55
+ return [2 /*return*/];
56
+ }
57
+ });
58
+ });
59
+ }, false);
60
+ db_tests_setup_1.testAll("test empty in", function (_a) {
61
+ var createEntity = _a.createEntity;
62
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
63
+ var s, _b;
64
+ return tslib_1.__generator(this, function (_c) {
65
+ switch (_c.label) {
66
+ case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
67
+ case 1:
68
+ s = _c.sent();
69
+ _b = expect;
70
+ return [4 /*yield*/, s.find({ where: { myId: [] } })];
71
+ case 2:
72
+ _b.apply(void 0, [(_c.sent()).length]).toBe(0);
73
+ return [2 /*return*/];
74
+ }
75
+ });
76
+ });
77
+ }, false);
78
+ db_tests_setup_1.testAll("filter works on all db or", function (_a) {
79
+ var createEntity = _a.createEntity;
80
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
81
+ var s, _b;
82
+ return tslib_1.__generator(this, function (_c) {
83
+ switch (_c.label) {
84
+ case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
85
+ case 1:
86
+ s = _c.sent();
87
+ _b = expect;
88
+ return [4 /*yield*/, s.find({ where: { $or: [{ myId: 1 }, { myId: 3 }] } })];
89
+ case 2:
90
+ _b.apply(void 0, [(_c.sent()).length]).toBe(2);
91
+ return [2 /*return*/];
92
+ }
93
+ });
94
+ });
95
+ }, false);
96
+ db_tests_setup_1.testAll("entity with different id column still works well", function (_a) {
97
+ var createEntity = _a.createEntity;
98
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
99
+ var s, c, _b;
100
+ return tslib_1.__generator(this, function (_c) {
101
+ switch (_c.label) {
102
+ case 0: return [4 /*yield*/, createEntity(entityWithValidations_1.entityWithValidations)];
103
+ case 1:
104
+ s = _c.sent();
105
+ c = s.create();
106
+ c.myId = 1;
107
+ c.name = 'noam';
108
+ return [4 /*yield*/, c._.save()];
109
+ case 2:
110
+ _c.sent();
111
+ c.name = 'yael';
112
+ return [4 /*yield*/, c._.save()];
113
+ case 3:
114
+ _c.sent();
115
+ expect(c.name).toBe('yael');
116
+ _b = expect;
117
+ return [4 /*yield*/, s.find()];
118
+ case 4:
119
+ _b.apply(void 0, [(_c.sent()).length]).toBe(1);
120
+ return [2 /*return*/];
121
+ }
122
+ });
123
+ });
124
+ }, false);
125
+ db_tests_setup_1.testAll("empty find works", function (_a) {
126
+ var remult = _a.remult, createEntity = _a.createEntity;
127
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
128
+ var c, l;
129
+ return tslib_1.__generator(this, function (_b) {
130
+ switch (_b.label) {
131
+ case 0: return [4 /*yield*/, createEntity(remult_3_entities_1.Categories)];
132
+ case 1:
133
+ c = (_b.sent()).create();
134
+ c.id = 5;
135
+ c.categoryName = 'test';
136
+ return [4 /*yield*/, c._.save()];
137
+ case 2:
138
+ _b.sent();
139
+ return [4 /*yield*/, remult.repo(remult_3_entities_1.Categories).find()];
140
+ case 3:
141
+ l = _b.sent();
142
+ expect(l.length).toBe(1);
143
+ expect(l[0].categoryName).toBe('test');
144
+ return [2 /*return*/];
145
+ }
146
+ });
147
+ });
148
+ });
149
+ db_tests_setup_1.testAll("partial updates", function (_a) {
150
+ var remult = _a.remult, createEntity = _a.createEntity;
151
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
152
+ var c, l;
153
+ return tslib_1.__generator(this, function (_b) {
154
+ switch (_b.label) {
155
+ case 0: return [4 /*yield*/, createEntity(remult_3_entities_1.Categories)];
156
+ case 1:
157
+ c = (_b.sent()).create({
158
+ id: 5, categoryName: 'test', description: 'desc'
159
+ });
160
+ return [4 /*yield*/, c._.save()];
161
+ case 2:
162
+ _b.sent();
163
+ return [4 /*yield*/, remult.repo(remult_3_entities_1.Categories).findId(5)];
164
+ case 3:
165
+ l = _b.sent();
166
+ c.categoryName = 'newname';
167
+ l.description = 'new desc';
168
+ return [4 /*yield*/, c.save()];
169
+ case 4:
170
+ _b.sent();
171
+ return [4 /*yield*/, l.save()];
172
+ case 5:
173
+ _b.sent();
174
+ expect(l.categoryName).toBe('newname');
175
+ expect(l.description).toBe('new desc');
176
+ return [2 /*return*/];
177
+ }
178
+ });
179
+ });
180
+ });
181
+ db_tests_setup_1.testAll("put with validations on entity fails", function (_a) {
182
+ var remult = _a.remult, createEntity = _a.createEntity;
183
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
184
+ var s, c, api, t, d, x;
185
+ return tslib_1.__generator(this, function (_b) {
186
+ switch (_b.label) {
187
+ case 0: return [4 /*yield*/, createEntity(entityWithValidations_1.entityWithValidations)];
188
+ case 1:
189
+ s = _b.sent();
190
+ c = s.create();
191
+ c.myId = 1;
192
+ c.name = 'noam';
193
+ return [4 /*yield*/, c._.save()];
194
+ case 2:
195
+ _b.sent();
196
+ api = new data_api_1.DataApi(s, remult);
197
+ t = new TestDataApiResponse_1.TestDataApiResponse();
198
+ d = new Done_1.Done();
199
+ t.error = function (data) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
200
+ return tslib_1.__generator(this, function (_a) {
201
+ expect(data.modelState.name).toBe('invalid');
202
+ d.ok();
203
+ return [2 /*return*/];
204
+ });
205
+ }); };
206
+ return [4 /*yield*/, api.put(t, 1, {
207
+ name: '1'
208
+ })];
209
+ case 3:
210
+ _b.sent();
211
+ d.test();
212
+ return [4 /*yield*/, s.find({ where: { myId: 1 } })];
213
+ case 4:
214
+ x = _b.sent();
215
+ expect(x[0].name).toBe('noam');
216
+ return [4 /*yield*/, s.find({ where: { myId: 1 } })];
217
+ case 5:
218
+ x = _b.sent();
219
+ expect(x[0].name).toBe('noam');
220
+ return [2 /*return*/];
221
+ }
222
+ });
223
+ });
224
+ });
225
+ db_tests_setup_1.testAll("test date with null works", function (_a) {
226
+ var createEntity = _a.createEntity;
227
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
228
+ var repo, r, _b;
229
+ return tslib_1.__generator(this, function (_c) {
230
+ switch (_c.label) {
231
+ case 0: return [4 /*yield*/, createEntity(testDateWithNull)];
232
+ case 1:
233
+ repo = _c.sent();
234
+ r = repo.create({ id: 0 });
235
+ return [4 /*yield*/, r.save()];
236
+ case 2:
237
+ _c.sent();
238
+ return [4 /*yield*/, repo.findFirst()];
239
+ case 3:
240
+ r = _c.sent();
241
+ expect(r.d).toBeNull();
242
+ _b = expect;
243
+ return [4 /*yield*/, repo.count({ d: null })];
244
+ case 4:
245
+ _b.apply(void 0, [_c.sent()]).toBe(1);
246
+ return [2 /*return*/];
247
+ }
248
+ });
249
+ });
250
+ });
251
+ db_tests_setup_1.testAll("test original value of date", function (_a) {
252
+ var createEntity = _a.createEntity;
253
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
254
+ var r;
255
+ return tslib_1.__generator(this, function (_b) {
256
+ switch (_b.label) {
257
+ case 0: return [4 /*yield*/, createEntity(testDateWithNull)];
258
+ case 1: return [4 /*yield*/, (_b.sent()).create({ id: 1, d: new Date(1976, 6, 16) }).save()];
259
+ case 2:
260
+ r = _b.sent();
261
+ expect(r.$.d.originalValue.getFullYear()).toBe(1976);
262
+ return [2 /*return*/];
263
+ }
264
+ });
265
+ });
266
+ });
267
+ var testDateWithNull = /** @class */ (function (_super) {
268
+ tslib_1.__extends(testDateWithNull, _super);
269
+ function testDateWithNull() {
270
+ var _this = _super !== null && _super.apply(this, arguments) || this;
271
+ _this.id = 0;
272
+ return _this;
273
+ }
274
+ tslib_1.__decorate([
275
+ remult3_1.Field(),
276
+ tslib_1.__metadata("design:type", Number)
277
+ ], testDateWithNull.prototype, "id", void 0);
278
+ tslib_1.__decorate([
279
+ remult3_1.DateOnlyField({ allowNull: true }),
280
+ tslib_1.__metadata("design:type", Date)
281
+ ], testDateWithNull.prototype, "d", void 0);
282
+ testDateWithNull = tslib_1.__decorate([
283
+ remult3_1.Entity('testDateWithNull', { allowApiCrud: true })
284
+ ], testDateWithNull);
285
+ return testDateWithNull;
286
+ }(remult3_1.EntityBase));
287
+ db_tests_setup_1.testAll("test string with null works", function (_a) {
288
+ var createEntity = _a.createEntity;
289
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
290
+ var repo, r;
291
+ return tslib_1.__generator(this, function (_b) {
292
+ switch (_b.label) {
293
+ case 0: return [4 /*yield*/, createEntity(testStringWithNull)];
294
+ case 1:
295
+ repo = _b.sent();
296
+ r = repo.create({ id: 0 });
297
+ return [4 /*yield*/, r.save()];
298
+ case 2:
299
+ _b.sent();
300
+ return [4 /*yield*/, repo.findFirst()];
301
+ case 3:
302
+ r = _b.sent();
303
+ expect(r.d).toBeNull();
304
+ return [2 /*return*/];
305
+ }
306
+ });
307
+ });
308
+ });
309
+ db_tests_setup_1.testAll("test tasks", function (_a) {
310
+ var createEntity = _a.createEntity;
311
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
312
+ var c, t, _b, _c, _d;
313
+ return tslib_1.__generator(this, function (_e) {
314
+ switch (_e.label) {
315
+ case 0: return [4 /*yield*/, createEntity(tasks_1.tasks)];
316
+ case 1:
317
+ c = _e.sent();
318
+ t = c.create();
319
+ t.id = 1;
320
+ return [4 /*yield*/, t._.save()];
321
+ case 2:
322
+ _e.sent();
323
+ t = c.create();
324
+ t.id = 2;
325
+ t.completed = true;
326
+ return [4 /*yield*/, t._.save()];
327
+ case 3:
328
+ _e.sent();
329
+ t = c.create();
330
+ t.id = 3;
331
+ t.completed = true;
332
+ return [4 /*yield*/, t._.save()];
333
+ case 4:
334
+ _e.sent();
335
+ return [4 /*yield*/, c.create({ id: 4, completed: false }).save()];
336
+ case 5:
337
+ _e.sent();
338
+ _b = expect;
339
+ return [4 /*yield*/, c.count({ completed: false })];
340
+ case 6:
341
+ _b.apply(void 0, [_e.sent()]).toBe(2);
342
+ _c = expect;
343
+ return [4 /*yield*/, c.count({ completed: { $ne: true } })];
344
+ case 7:
345
+ _c.apply(void 0, [_e.sent()]).toBe(2);
346
+ _d = expect;
347
+ return [4 /*yield*/, c.count({ completed: true })];
348
+ case 8:
349
+ _d.apply(void 0, [_e.sent()]).toBe(2);
350
+ return [2 /*return*/];
351
+ }
352
+ });
353
+ });
354
+ }, false);
355
+ db_tests_setup_1.testAll("test filtering of null/''", function (_a) {
356
+ var createEntity = _a.createEntity;
357
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
358
+ var repo, a, b, c, _b, _c;
359
+ return tslib_1.__generator(this, function (_d) {
360
+ switch (_d.label) {
361
+ case 0: return [4 /*yield*/, createEntity(h_1.h)];
362
+ case 1:
363
+ repo = _d.sent();
364
+ return [4 /*yield*/, repo.create({ id: 'a' }).save()];
365
+ case 2:
366
+ a = _d.sent();
367
+ return [4 /*yield*/, repo.create({ id: 'b' }).save()];
368
+ case 3:
369
+ b = _d.sent();
370
+ return [4 /*yield*/, repo.create({ id: 'c', refH: b }).save()];
371
+ case 4:
372
+ c = _d.sent();
373
+ _b = expect;
374
+ return [4 /*yield*/, repo.count({ refH: null })];
375
+ case 5:
376
+ _b.apply(void 0, [_d.sent()]).toBe(2);
377
+ _c = expect;
378
+ return [4 /*yield*/, repo.count({ refH: { "!=": null } })];
379
+ case 6:
380
+ _c.apply(void 0, [_d.sent()]).toBe(1);
381
+ return [2 /*return*/];
382
+ }
383
+ });
384
+ });
385
+ });
386
+ db_tests_setup_1.testAll("test paging with complex object", function (_a) {
387
+ var remult = _a.remult, createEntity = _a.createEntity;
388
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
389
+ var c1, c2, c3, i, _b, _c, x, e_1_1;
390
+ var e_1, _d;
391
+ return tslib_1.__generator(this, function (_e) {
392
+ switch (_e.label) {
393
+ case 0: return [4 /*yield*/, createEntity(c_1.c)];
394
+ case 1:
395
+ _e.sent();
396
+ return [4 /*yield*/, createEntity(p)];
397
+ case 2:
398
+ _e.sent();
399
+ return [4 /*yield*/, remult.repo(c_1.c).create({ id: 1, name: 'c1' }).save()];
400
+ case 3:
401
+ c1 = _e.sent();
402
+ return [4 /*yield*/, remult.repo(c_1.c).create({ id: 2, name: 'c2' }).save()];
403
+ case 4:
404
+ c2 = _e.sent();
405
+ return [4 /*yield*/, remult.repo(c_1.c).create({ id: 3, name: 'c3' }).save()];
406
+ case 5:
407
+ c3 = _e.sent();
408
+ return [4 /*yield*/, remult.repo(p).create({ id: 1, name: 'p1', c: c1 }).save()];
409
+ case 6:
410
+ _e.sent();
411
+ return [4 /*yield*/, remult.repo(p).create({ id: 2, name: 'p2', c: c2 }).save()];
412
+ case 7:
413
+ _e.sent();
414
+ return [4 /*yield*/, remult.repo(p).create({ id: 3, name: 'p3', c: c3 }).save()];
415
+ case 8:
416
+ _e.sent();
417
+ return [4 /*yield*/, remult.repo(p).create({ id: 4, name: 'p4', c: c3 }).save()];
418
+ case 9:
419
+ _e.sent();
420
+ return [4 /*yield*/, remult.repo(p).create({ id: 5, name: 'p5', c: c3 }).save()];
421
+ case 10:
422
+ _e.sent();
423
+ i = 0;
424
+ _e.label = 11;
425
+ case 11:
426
+ _e.trys.push([11, 16, 17, 22]);
427
+ _b = tslib_1.__asyncValues(remult.repo(p).query({
428
+ orderBy: { c: "asc", id: "asc" }
429
+ }));
430
+ _e.label = 12;
431
+ case 12: return [4 /*yield*/, _b.next()];
432
+ case 13:
433
+ if (!(_c = _e.sent(), !_c.done)) return [3 /*break*/, 15];
434
+ x = _c.value;
435
+ i++;
436
+ _e.label = 14;
437
+ case 14: return [3 /*break*/, 12];
438
+ case 15: return [3 /*break*/, 22];
439
+ case 16:
440
+ e_1_1 = _e.sent();
441
+ e_1 = { error: e_1_1 };
442
+ return [3 /*break*/, 22];
443
+ case 17:
444
+ _e.trys.push([17, , 20, 21]);
445
+ if (!(_c && !_c.done && (_d = _b.return))) return [3 /*break*/, 19];
446
+ return [4 /*yield*/, _d.call(_b)];
447
+ case 18:
448
+ _e.sent();
449
+ _e.label = 19;
450
+ case 19: return [3 /*break*/, 21];
451
+ case 20:
452
+ if (e_1) throw e_1.error;
453
+ return [7 /*endfinally*/];
454
+ case 21: return [7 /*endfinally*/];
455
+ case 22:
456
+ expect(i).toBe(5);
457
+ return [2 /*return*/];
458
+ }
459
+ });
460
+ });
461
+ });
462
+ db_tests_setup_1.testAll("test paging with complex object_2", function (_a) {
463
+ var remult = _a.remult, createEntity = _a.createEntity;
464
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
465
+ var c1, _b;
466
+ return tslib_1.__generator(this, function (_c) {
467
+ switch (_c.label) {
468
+ case 0: return [4 /*yield*/, createEntity(c_1.c)];
469
+ case 1: return [4 /*yield*/, (_c.sent()).create({ id: 1, name: 'c1' }).save()];
470
+ case 2:
471
+ c1 = _c.sent();
472
+ return [4 /*yield*/, createEntity(p)];
473
+ case 3: return [4 /*yield*/, (_c.sent()).create({ id: 1, name: 'p1', c: c1 }).save()];
474
+ case 4:
475
+ _c.sent();
476
+ _b = expect;
477
+ return [4 /*yield*/, remult.repo(p).findFirst({ c: c1 })];
478
+ case 5:
479
+ _b.apply(void 0, [(_c.sent()).id]).toBe(1);
480
+ return [2 /*return*/];
481
+ }
482
+ });
483
+ });
484
+ });
485
+ db_tests_setup_1.testAll("test filter doesn't collapse", function (_a) {
486
+ var createEntity = _a.createEntity;
487
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
488
+ var repo, d1, d4, f, _b, _c, json, _d, _e;
489
+ return tslib_1.__generator(this, function (_f) {
490
+ switch (_f.label) {
491
+ case 0: return [4 /*yield*/, createEntity(dWithPrefilter_1.dWithPrefilter)];
492
+ case 1:
493
+ repo = _f.sent();
494
+ return [4 /*yield*/, repo.create({ id: 1, b: 1 }).save()];
495
+ case 2:
496
+ d1 = _f.sent();
497
+ return [4 /*yield*/, repo.create({ id: 2, b: 2 }).save()];
498
+ case 3:
499
+ _f.sent();
500
+ return [4 /*yield*/, repo.create({ id: 4, b: 2 }).save()];
501
+ case 4:
502
+ d4 = _f.sent();
503
+ f = { id: 1, $and: [{ id: 2 }] };
504
+ _b = expect;
505
+ return [4 /*yield*/, repo.count(f)];
506
+ case 5:
507
+ _b.apply(void 0, [_f.sent()]).toBe(0);
508
+ _c = expect;
509
+ return [4 /*yield*/, repo.find({ where: f })];
510
+ case 6:
511
+ _c.apply(void 0, [(_f.sent()).length]).toBe(0);
512
+ json = filter_interfaces_1.Filter.entityFilterToJson(repo.metadata, f);
513
+ f = filter_interfaces_1.Filter.entityFilterFromJson(repo.metadata, json);
514
+ _d = expect;
515
+ return [4 /*yield*/, repo.count(f)];
516
+ case 7:
517
+ _d.apply(void 0, [_f.sent()]).toBe(0);
518
+ _e = expect;
519
+ return [4 /*yield*/, repo.find({ where: f })];
520
+ case 8:
521
+ _e.apply(void 0, [(_f.sent()).length]).toBe(0);
522
+ return [2 /*return*/];
523
+ }
524
+ });
525
+ });
526
+ });
527
+ db_tests_setup_1.testAll("test filter doesn't collapse", function (_a) {
528
+ var createEntity = _a.createEntity;
529
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
530
+ var repo, d1, d4, f, _b, _c, json, _d, _e;
531
+ return tslib_1.__generator(this, function (_f) {
532
+ switch (_f.label) {
533
+ case 0: return [4 /*yield*/, createEntity(d_1.d)];
534
+ case 1:
535
+ repo = _f.sent();
536
+ return [4 /*yield*/, repo.create({ id: 1, b: 1 }).save()];
537
+ case 2:
538
+ d1 = _f.sent();
539
+ return [4 /*yield*/, repo.create({ id: 2, b: 2 }).save()];
540
+ case 3:
541
+ _f.sent();
542
+ return [4 /*yield*/, repo.create({ id: 4, b: 2 }).save()];
543
+ case 4:
544
+ d4 = _f.sent();
545
+ f = { id: [1, 2] };
546
+ _b = expect;
547
+ return [4 /*yield*/, repo.count(f)];
548
+ case 5:
549
+ _b.apply(void 0, [_f.sent()]).toBe(2);
550
+ _c = expect;
551
+ return [4 /*yield*/, repo.find({ where: f })];
552
+ case 6:
553
+ _c.apply(void 0, [(_f.sent()).length]).toBe(2);
554
+ json = filter_interfaces_1.Filter.entityFilterToJson(repo.metadata, f);
555
+ f = filter_interfaces_1.Filter.entityFilterFromJson(repo.metadata, json);
556
+ _d = expect;
557
+ return [4 /*yield*/, repo.count(f)];
558
+ case 7:
559
+ _d.apply(void 0, [_f.sent()]).toBe(2);
560
+ _e = expect;
561
+ return [4 /*yield*/, repo.find({ where: f })];
562
+ case 8:
563
+ _e.apply(void 0, [(_f.sent()).length]).toBe(2);
564
+ return [2 /*return*/];
565
+ }
566
+ });
567
+ });
568
+ });
569
+ db_tests_setup_1.testAll("test that it works with inheritance", function (_a) {
570
+ var createEntity = _a.createEntity;
571
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
572
+ var c, id, _b, _c, _d;
573
+ return tslib_1.__generator(this, function (_e) {
574
+ switch (_e.label) {
575
+ case 0: return [4 /*yield*/, createEntity(entityForCustomFilter_1.entityForCustomFilter1)];
576
+ case 1:
577
+ c = _e.sent();
578
+ id = 0;
579
+ _e.label = 2;
580
+ case 2:
581
+ if (!(id < 5)) return [3 /*break*/, 5];
582
+ return [4 /*yield*/, c.create({ id: id }).save()];
583
+ case 3:
584
+ _e.sent();
585
+ _e.label = 4;
586
+ case 4:
587
+ id++;
588
+ return [3 /*break*/, 2];
589
+ case 5:
590
+ _b = expect;
591
+ return [4 /*yield*/, (c.count(entityForCustomFilter_1.entityForCustomFilter1.oneAndThree()))];
592
+ case 6:
593
+ _b.apply(void 0, [_e.sent()]).toBe(2);
594
+ _c = expect;
595
+ return [4 /*yield*/, (c.findFirst(entityForCustomFilter_1.entityForCustomFilter1.testNumericValue(2)))];
596
+ case 7:
597
+ _c.apply(void 0, [(_e.sent()).id]).toBe(2);
598
+ _d = expect;
599
+ return [4 /*yield*/, (c.findFirst(entityForCustomFilter_1.entityForCustomFilter1.testObjectValue({ val: 2 })))];
600
+ case 8:
601
+ _d.apply(void 0, [(_e.sent()).id]).toBe(2);
602
+ return [2 /*return*/];
603
+ }
604
+ });
605
+ });
606
+ });
607
+ db_tests_setup_1.testAll("put with validations on column fails", function (_a) {
608
+ var remult = _a.remult, createEntity = _a.createEntity;
609
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
610
+ var s, c, api, t, d, x;
611
+ return tslib_1.__generator(this, function (_b) {
612
+ switch (_b.label) {
613
+ case 0: return [4 /*yield*/, createEntity(entityWithValidationsOnColumn_1.entityWithValidationsOnColumn)];
614
+ case 1:
615
+ s = _b.sent();
616
+ c = s.create();
617
+ c.myId = 1;
618
+ c.name = 'noam';
619
+ return [4 /*yield*/, c._.save()];
620
+ case 2:
621
+ _b.sent();
622
+ api = new data_api_1.DataApi(s, remult);
623
+ t = new TestDataApiResponse_1.TestDataApiResponse();
624
+ d = new Done_1.Done();
625
+ t.error = function (data) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
626
+ return tslib_1.__generator(this, function (_a) {
627
+ expect(data.modelState.name).toBe('invalid on column');
628
+ d.ok();
629
+ return [2 /*return*/];
630
+ });
631
+ }); };
632
+ return [4 /*yield*/, api.put(t, 1, {
633
+ name: '1'
634
+ })];
635
+ case 3:
636
+ _b.sent();
637
+ d.test();
638
+ return [4 /*yield*/, s.find({ where: { myId: 1 } })];
639
+ case 4:
640
+ x = _b.sent();
641
+ expect(x[0].name).toBe('noam');
642
+ return [2 /*return*/];
643
+ }
644
+ });
645
+ });
646
+ });
647
+ db_tests_setup_1.testAllDbs("Insert", function (_a) {
648
+ var createData = _a.createData;
649
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
650
+ var forCat, rows, c;
651
+ return tslib_1.__generator(this, function (_b) {
652
+ switch (_b.label) {
653
+ 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) {
654
+ return [2 /*return*/];
655
+ }); }); })];
656
+ case 1:
657
+ forCat = _b.sent();
658
+ return [4 /*yield*/, forCat.find()];
659
+ case 2:
660
+ rows = _b.sent();
661
+ expect(rows.length).toBe(0);
662
+ c = forCat.create();
663
+ c.id = 1;
664
+ c.categoryName = 'noam';
665
+ return [4 /*yield*/, c._.save()];
666
+ case 3:
667
+ _b.sent();
668
+ return [4 /*yield*/, forCat.find()];
669
+ case 4:
670
+ rows = _b.sent();
671
+ expect(rows.length).toBe(1);
672
+ expect(rows[0].id).toBe(1);
673
+ expect(rows[0].categoryName).toBe('noam');
674
+ return [2 /*return*/];
675
+ }
676
+ });
677
+ });
678
+ });
679
+ db_tests_setup_1.testAllDbs("test delete", function (_a) {
680
+ var createData = _a.createData;
681
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
682
+ var c, rows;
683
+ return tslib_1.__generator(this, function (_b) {
684
+ switch (_b.label) {
685
+ 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) {
686
+ switch (_a.label) {
687
+ case 0: return [4 /*yield*/, insert(5, 'noam')];
688
+ case 1: return [2 /*return*/, _a.sent()];
689
+ }
690
+ }); }); })];
691
+ case 1:
692
+ c = _b.sent();
693
+ return [4 /*yield*/, c.find()];
694
+ case 2:
695
+ rows = _b.sent();
696
+ expect(rows.length).toBe(1);
697
+ expect(rows[0].id).toBe(5);
698
+ return [4 /*yield*/, rows[0]._.delete()];
699
+ case 3:
700
+ _b.sent();
701
+ return [4 /*yield*/, c.find()];
702
+ case 4:
703
+ rows = _b.sent();
704
+ expect(rows.length).toBe(0);
705
+ return [2 /*return*/];
706
+ }
707
+ });
708
+ });
709
+ });
710
+ db_tests_setup_1.testAllDbs("test filter packer", function (_a) {
711
+ var insertFourRows = _a.insertFourRows;
712
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
713
+ var r, rows;
714
+ return tslib_1.__generator(this, function (_b) {
715
+ switch (_b.label) {
716
+ case 0: return [4 /*yield*/, insertFourRows()];
717
+ case 1:
718
+ r = _b.sent();
719
+ return [4 /*yield*/, r.find()];
720
+ case 2:
721
+ rows = _b.sent();
722
+ expect(rows.length).toBe(4);
723
+ return [4 /*yield*/, r.find({
724
+ where: filter_interfaces_1.Filter.entityFilterFromJson(r.metadata, filter_interfaces_1.entityFilterToJson(r.metadata, { description: 'x' }))
725
+ })];
726
+ case 3:
727
+ rows = _b.sent();
728
+ expect(rows.length).toBe(2);
729
+ return [4 /*yield*/, r.find({ where: filter_interfaces_1.Filter.entityFilterFromJson(r.metadata, filter_interfaces_1.entityFilterToJson(r.metadata, { id: 4 })) })];
730
+ case 4:
731
+ rows = _b.sent();
732
+ expect(rows.length).toBe(1);
733
+ expect(rows[0].categoryName).toBe('yael');
734
+ return [4 /*yield*/, r.find({ where: filter_interfaces_1.Filter.entityFilterFromJson(r.metadata, filter_interfaces_1.entityFilterToJson(r.metadata, { description: 'y', categoryName: 'yoni' })) })];
735
+ case 5:
736
+ rows = _b.sent();
737
+ expect(rows.length).toBe(1);
738
+ expect(rows[0].id).toBe(2);
739
+ return [4 /*yield*/, r.find({ where: filter_interfaces_1.Filter.entityFilterFromJson(r.metadata, filter_interfaces_1.entityFilterToJson(r.metadata, { id: { $ne: [2, 4] } })) })];
740
+ case 6:
741
+ rows = _b.sent();
742
+ expect(rows.length).toBe(2);
743
+ return [2 /*return*/];
744
+ }
745
+ });
746
+ });
747
+ }, false);
748
+ db_tests_setup_1.testAll("Test unique Validation,", function (_a) {
749
+ var createEntity = _a.createEntity;
750
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
751
+ var type, c, cat, saved, err_1;
752
+ return tslib_1.__generator(this, function (_b) {
753
+ switch (_b.label) {
754
+ case 0:
755
+ type = /** @class */ (function (_super) {
756
+ tslib_1.__extends(class_1, _super);
757
+ function class_1() {
758
+ return _super !== null && _super.apply(this, arguments) || this;
759
+ }
760
+ return class_1;
761
+ }(remult_3_entities_1.Categories));
762
+ remult3_1.Entity('categories')(type);
763
+ remult3_1.Field({
764
+ validate: function (en, col) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
765
+ return tslib_1.__generator(this, function (_a) {
766
+ switch (_a.label) {
767
+ case 0:
768
+ if (!(en._.isNew() || en.a != en._.fields.a.originalValue)) return [3 /*break*/, 2];
769
+ return [4 /*yield*/, c.count({ a: en.a })];
770
+ case 1:
771
+ if (_a.sent())
772
+ en._.fields.a.error = 'already exists';
773
+ _a.label = 2;
774
+ case 2: return [2 /*return*/];
775
+ }
776
+ });
777
+ }); }
778
+ })(type.prototype, "a");
779
+ return [4 /*yield*/, createEntity(type)];
780
+ case 1:
781
+ c = _b.sent();
782
+ cat = c.create();
783
+ cat.a = '12';
784
+ cat.id = 1;
785
+ return [4 /*yield*/, cat._.save()];
786
+ case 2:
787
+ _b.sent();
788
+ cat = c.create();
789
+ cat.a = '12';
790
+ saved = false;
791
+ _b.label = 3;
792
+ case 3:
793
+ _b.trys.push([3, 5, , 6]);
794
+ return [4 /*yield*/, cat._.save()];
795
+ case 4:
796
+ _b.sent();
797
+ saved = true;
798
+ return [3 /*break*/, 6];
799
+ case 5:
800
+ err_1 = _b.sent();
801
+ expect(cat._.fields.a.error).toEqual("already exists");
802
+ return [3 /*break*/, 6];
803
+ case 6:
804
+ expect(saved).toBe(false);
805
+ return [2 /*return*/];
806
+ }
807
+ });
808
+ });
809
+ });
810
+ db_tests_setup_1.testAll("Test unique Validation 2", function (_a) {
811
+ var createEntity = _a.createEntity;
812
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
813
+ var type, c, cat, saved, err_2;
814
+ return tslib_1.__generator(this, function (_b) {
815
+ switch (_b.label) {
816
+ case 0:
817
+ type = /** @class */ (function (_super) {
818
+ tslib_1.__extends(class_2, _super);
819
+ function class_2() {
820
+ return _super !== null && _super.apply(this, arguments) || this;
821
+ }
822
+ return class_2;
823
+ }(remult_3_entities_1.Categories));
824
+ remult3_1.Entity('sdfgds')(type);
825
+ remult3_1.Field({
826
+ validate: validators_1.Validators.unique
827
+ })(type.prototype, "a");
828
+ return [4 /*yield*/, createEntity(type)];
829
+ case 1:
830
+ c = _b.sent();
831
+ cat = c.create();
832
+ cat.a = '12';
833
+ return [4 /*yield*/, cat._.save()];
834
+ case 2:
835
+ _b.sent();
836
+ cat = c.create();
837
+ cat.a = '12';
838
+ saved = false;
839
+ _b.label = 3;
840
+ case 3:
841
+ _b.trys.push([3, 5, , 6]);
842
+ return [4 /*yield*/, cat._.save()];
843
+ case 4:
844
+ _b.sent();
845
+ saved = true;
846
+ return [3 /*break*/, 6];
847
+ case 5:
848
+ err_2 = _b.sent();
849
+ expect(cat._.fields.a.error).toEqual("already exists");
850
+ return [3 /*break*/, 6];
851
+ case 6:
852
+ expect(saved).toBe(false);
853
+ return [2 /*return*/];
854
+ }
855
+ });
856
+ });
857
+ });
858
+ var testNumbers = /** @class */ (function (_super) {
859
+ tslib_1.__extends(testNumbers, _super);
860
+ function testNumbers() {
861
+ return _super !== null && _super.apply(this, arguments) || this;
862
+ }
863
+ tslib_1.__decorate([
864
+ remult3_1.IntegerField(),
865
+ tslib_1.__metadata("design:type", Number)
866
+ ], testNumbers.prototype, "id", void 0);
867
+ tslib_1.__decorate([
868
+ remult3_1.Field(),
869
+ tslib_1.__metadata("design:type", Number)
870
+ ], testNumbers.prototype, "a", void 0);
871
+ testNumbers = tslib_1.__decorate([
872
+ remult3_1.Entity('testNumbers', { allowApiCrud: true })
873
+ ], testNumbers);
874
+ return testNumbers;
875
+ }(remult3_1.EntityBase));
876
+ db_tests_setup_1.testAll("test that integer and int work", function (_a) {
877
+ var createEntity = _a.createEntity;
878
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
879
+ var e;
880
+ return tslib_1.__generator(this, function (_b) {
881
+ switch (_b.label) {
882
+ case 0: return [4 /*yield*/, createEntity(testNumbers)];
883
+ case 1: return [4 /*yield*/, (_b.sent()).create({
884
+ id: 1.5,
885
+ a: 1.5
886
+ }).save()];
887
+ case 2:
888
+ e = _b.sent();
889
+ expect(e.id).toBe(2);
890
+ expect(e.a).toBe(1.5);
891
+ return [2 /*return*/];
892
+ }
893
+ });
894
+ });
895
+ });
896
+ db_tests_setup_1.testAll("post with logic works and max in entity", function (_a) {
897
+ var remult = _a.remult, createEntity = _a.createEntity;
898
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
899
+ var c, api, t, d;
900
+ return tslib_1.__generator(this, function (_b) {
901
+ switch (_b.label) {
902
+ case 0: return [4 /*yield*/, createEntity(entityWithValidations_1.entityWithValidations)];
903
+ case 1:
904
+ c = _b.sent();
905
+ api = new data_api_1.DataApi(c, remult);
906
+ t = new TestDataApiResponse_1.TestDataApiResponse();
907
+ d = new Done_1.Done();
908
+ t.created = function (data) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
909
+ return tslib_1.__generator(this, function (_a) {
910
+ expect(data.name).toBe('noam honig');
911
+ expect(data.myId).toBe(1);
912
+ d.ok();
913
+ return [2 /*return*/];
914
+ });
915
+ }); };
916
+ entityWithValidations_1.entityWithValidations.savingRowCount = 0;
917
+ return [4 /*yield*/, api.post(t, { name: 'noam honig', myId: 1 })];
918
+ case 2:
919
+ _b.sent();
920
+ expect(entityWithValidations_1.entityWithValidations.savingRowCount).toBe(1);
921
+ d.test();
922
+ return [2 /*return*/];
923
+ }
924
+ });
925
+ });
926
+ });
927
+ db_tests_setup_1.testAllDbs("get array works with filter in body", function (_a) {
928
+ var createData = _a.createData, remult = _a.remult;
929
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
930
+ var c, api, t, d;
931
+ return tslib_1.__generator(this, function (_b) {
932
+ switch (_b.label) {
933
+ case 0: return [4 /*yield*/, createData(function (i) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
934
+ return tslib_1.__generator(this, function (_a) {
935
+ switch (_a.label) {
936
+ case 0: return [4 /*yield*/, i(1, 'noam', undefined, models_1.Status.open)];
937
+ case 1:
938
+ _a.sent();
939
+ return [4 /*yield*/, i(2, 'yael', undefined, models_1.Status.closed)];
940
+ case 2:
941
+ _a.sent();
942
+ return [4 /*yield*/, i(3, 'yoni', undefined, models_1.Status.hold)];
943
+ case 3:
944
+ _a.sent();
945
+ return [2 /*return*/];
946
+ }
947
+ });
948
+ }); })];
949
+ case 1:
950
+ c = _b.sent();
951
+ api = new data_api_1.DataApi(c, remult);
952
+ t = new TestDataApiResponse_1.TestDataApiResponse();
953
+ d = new Done_1.Done();
954
+ t.success = function (data) {
955
+ expect(data.length).toBe(2);
956
+ expect(data[0].id).toBe(2);
957
+ expect(data[1].id).toBe(3);
958
+ d.ok();
959
+ };
960
+ return [4 /*yield*/, api.getArray(t, {
961
+ get: function (x) {
962
+ return undefined;
963
+ }
964
+ }, {
965
+ status_in: '[1, 2]'
966
+ })];
967
+ case 2:
968
+ _b.sent();
969
+ d.test();
970
+ return [2 /*return*/];
971
+ }
972
+ });
973
+ });
974
+ }, false);
975
+ db_tests_setup_1.testAllDbs("entity order by works", function (_a) {
976
+ var createData = _a.createData;
977
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
978
+ var type, c, x;
979
+ return tslib_1.__generator(this, function (_b) {
980
+ switch (_b.label) {
981
+ case 0:
982
+ type = /** @class */ (function (_super) {
983
+ tslib_1.__extends(type, _super);
984
+ function type() {
985
+ return _super !== null && _super.apply(this, arguments) || this;
986
+ }
987
+ return type;
988
+ }(remult_3_entities_1.Categories));
989
+ remult3_1.Entity('', {
990
+ defaultOrderBy: { categoryName: "asc" },
991
+ })(type);
992
+ return [4 /*yield*/, createData(function (insert) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
993
+ return tslib_1.__generator(this, function (_a) {
994
+ switch (_a.label) {
995
+ case 0: return [4 /*yield*/, insert(1, 'noam')];
996
+ case 1:
997
+ _a.sent();
998
+ return [4 /*yield*/, insert(2, "yoni")];
999
+ case 2:
1000
+ _a.sent();
1001
+ return [4 /*yield*/, insert(3, "yael")];
1002
+ case 3:
1003
+ _a.sent();
1004
+ return [2 /*return*/];
1005
+ }
1006
+ });
1007
+ }); }, type)];
1008
+ case 1:
1009
+ c = _b.sent();
1010
+ return [4 /*yield*/, c.find()];
1011
+ case 2:
1012
+ x = _b.sent();
1013
+ expect(x[0].id).toBe(1);
1014
+ expect(x[1].id).toBe(3);
1015
+ expect(x[2].id).toBe(2);
1016
+ return [2 /*return*/];
1017
+ }
1018
+ });
1019
+ });
1020
+ }, false);
1021
+ db_tests_setup_1.testAllDbs("put with validation works", function (_a) {
1022
+ var createData = _a.createData, remult = _a.remult;
1023
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1024
+ var count, type, c, api, t, d, x;
1025
+ return tslib_1.__generator(this, function (_b) {
1026
+ switch (_b.label) {
1027
+ case 0:
1028
+ count = 0;
1029
+ type = /** @class */ (function (_super) {
1030
+ tslib_1.__extends(type, _super);
1031
+ function type() {
1032
+ return _super !== null && _super.apply(this, arguments) || this;
1033
+ }
1034
+ return type;
1035
+ }(remult_3_entities_1.Categories));
1036
+ remult3_1.Entity(undefined, {
1037
+ allowApiCrud: true,
1038
+ saving: function () {
1039
+ if (!entityWithValidations_1.testConfiguration.restDbRunningOnServer)
1040
+ count++;
1041
+ }
1042
+ })(type);
1043
+ return [4 /*yield*/, createData(function (insert) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
1044
+ switch (_a.label) {
1045
+ case 0: return [4 /*yield*/, insert(1, 'noam')];
1046
+ case 1: return [2 /*return*/, _a.sent()];
1047
+ }
1048
+ }); }); }, type)];
1049
+ case 1:
1050
+ c = _b.sent();
1051
+ api = new data_api_1.DataApi(c, remult);
1052
+ t = new TestDataApiResponse_1.TestDataApiResponse();
1053
+ d = new Done_1.Done();
1054
+ t.success = function (data) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1055
+ return tslib_1.__generator(this, function (_a) {
1056
+ d.ok();
1057
+ return [2 /*return*/];
1058
+ });
1059
+ }); };
1060
+ count = 0;
1061
+ return [4 /*yield*/, api.put(t, 1, {
1062
+ categoryName: 'noam 1'
1063
+ })];
1064
+ case 2:
1065
+ _b.sent();
1066
+ d.test();
1067
+ return [4 /*yield*/, c.find({
1068
+ where: { id: 1 }
1069
+ })];
1070
+ case 3:
1071
+ x = _b.sent();
1072
+ expect(x[0].categoryName).toBe('noam 1');
1073
+ expect(count).toBe(1);
1074
+ return [2 /*return*/];
1075
+ }
1076
+ });
1077
+ });
1078
+ });
1079
+ db_tests_setup_1.testAll("saves correctly to db", function (_a) {
1080
+ var createEntity = _a.createEntity;
1081
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1082
+ var type, r;
1083
+ return tslib_1.__generator(this, function (_b) {
1084
+ switch (_b.label) {
1085
+ case 0:
1086
+ type = /** @class */ (function (_super) {
1087
+ tslib_1.__extends(class_3, _super);
1088
+ function class_3() {
1089
+ var _this = _super !== null && _super.apply(this, arguments) || this;
1090
+ _this.ok = false;
1091
+ return _this;
1092
+ }
1093
+ return class_3;
1094
+ }(remult3_1.EntityBase));
1095
+ remult3_1.Entity('asdf', { allowApiCrud: true })(type);
1096
+ remult3_1.Field({
1097
+ valueType: Number
1098
+ })(type.prototype, 'id');
1099
+ remult3_1.Field({ valueType: Boolean })(type.prototype, "ok");
1100
+ return [4 /*yield*/, createEntity(type)];
1101
+ case 1:
1102
+ r = (_b.sent()).create();
1103
+ r.id = 1;
1104
+ r.ok = true;
1105
+ return [4 /*yield*/, r._.save()];
1106
+ case 2:
1107
+ _b.sent();
1108
+ expect(r.ok).toBe(true);
1109
+ r.ok = false;
1110
+ return [4 /*yield*/, r._.save()];
1111
+ case 3:
1112
+ _b.sent();
1113
+ expect(r.ok).toBe(false);
1114
+ return [2 /*return*/];
1115
+ }
1116
+ });
1117
+ });
1118
+ });
1119
+ var autoIncrement = /** @class */ (function (_super) {
1120
+ tslib_1.__extends(autoIncrement, _super);
1121
+ function autoIncrement() {
1122
+ return _super !== null && _super.apply(this, arguments) || this;
1123
+ }
1124
+ tslib_1.__decorate([
1125
+ remult3_1.IntegerField(),
1126
+ tslib_1.__metadata("design:type", Number)
1127
+ ], autoIncrement.prototype, "id", void 0);
1128
+ tslib_1.__decorate([
1129
+ remult3_1.IntegerField(),
1130
+ tslib_1.__metadata("design:type", Number)
1131
+ ], autoIncrement.prototype, "stam", void 0);
1132
+ autoIncrement = tslib_1.__decorate([
1133
+ remult3_1.Entity("autoi", { allowApiCrud: true, dbAutoIncrementId: true })
1134
+ ], autoIncrement);
1135
+ return autoIncrement;
1136
+ }(remult3_1.EntityBase));
1137
+ db_tests_setup_1.testAll("auto increment can't be affected by insert or update", function (_a) {
1138
+ var createEntity = _a.createEntity;
1139
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1140
+ var repo, r, x;
1141
+ return tslib_1.__generator(this, function (_b) {
1142
+ switch (_b.label) {
1143
+ case 0: return [4 /*yield*/, createEntity(autoIncrement)];
1144
+ case 1:
1145
+ repo = _b.sent();
1146
+ return [4 /*yield*/, repo.create({ id: 1234, stam: 1 }).save()];
1147
+ case 2:
1148
+ r = _b.sent();
1149
+ x = r.id;
1150
+ expect(x == 1234).toBe(false);
1151
+ r.id = 4321;
1152
+ return [4 /*yield*/, r.save()];
1153
+ case 3:
1154
+ _b.sent();
1155
+ expect(r.id).toBe(x);
1156
+ return [2 /*return*/];
1157
+ }
1158
+ });
1159
+ });
1160
+ }, false);
1161
+ var testStringWithNull = /** @class */ (function (_super) {
1162
+ tslib_1.__extends(testStringWithNull, _super);
1163
+ function testStringWithNull() {
1164
+ var _this = _super !== null && _super.apply(this, arguments) || this;
1165
+ _this.id = 0;
1166
+ return _this;
1167
+ }
1168
+ tslib_1.__decorate([
1169
+ remult3_1.Field(),
1170
+ tslib_1.__metadata("design:type", Number)
1171
+ ], testStringWithNull.prototype, "id", void 0);
1172
+ tslib_1.__decorate([
1173
+ remult3_1.Field({ allowNull: true }),
1174
+ tslib_1.__metadata("design:type", String)
1175
+ ], testStringWithNull.prototype, "d", void 0);
1176
+ testStringWithNull = tslib_1.__decorate([
1177
+ remult3_1.Entity('teststringWithNull', { allowApiCrud: true })
1178
+ ], testStringWithNull);
1179
+ return testStringWithNull;
1180
+ }(remult3_1.EntityBase));
1181
+ var stam = /** @class */ (function (_super) {
1182
+ tslib_1.__extends(stam, _super);
1183
+ function stam() {
1184
+ var _this = _super !== null && _super.apply(this, arguments) || this;
1185
+ _this.id = 0;
1186
+ _this.title = '';
1187
+ return _this;
1188
+ }
1189
+ tslib_1.__decorate([
1190
+ remult3_1.Field(),
1191
+ tslib_1.__metadata("design:type", Number)
1192
+ ], stam.prototype, "id", void 0);
1193
+ tslib_1.__decorate([
1194
+ remult3_1.Field(),
1195
+ tslib_1.__metadata("design:type", String)
1196
+ ], stam.prototype, "title", void 0);
1197
+ stam = tslib_1.__decorate([
1198
+ remult3_1.Entity("a", { allowApiCrud: true })
1199
+ ], stam);
1200
+ return stam;
1201
+ }(remult3_1.EntityBase));
1202
+ exports.stam = stam;
1203
+ var p = /** @class */ (function (_super) {
1204
+ tslib_1.__extends(p, _super);
1205
+ function p(remult) {
1206
+ var _this = _super.call(this) || this;
1207
+ _this.remult = remult;
1208
+ return _this;
1209
+ }
1210
+ tslib_1.__decorate([
1211
+ remult3_1.Field(),
1212
+ tslib_1.__metadata("design:type", Number)
1213
+ ], p.prototype, "id", void 0);
1214
+ tslib_1.__decorate([
1215
+ remult3_1.Field(),
1216
+ tslib_1.__metadata("design:type", String)
1217
+ ], p.prototype, "name", void 0);
1218
+ tslib_1.__decorate([
1219
+ remult3_1.Field(),
1220
+ tslib_1.__metadata("design:type", c_1.c)
1221
+ ], p.prototype, "c", void 0);
1222
+ p = tslib_1.__decorate([
1223
+ remult3_1.Entity('p', { allowApiCrud: true }),
1224
+ tslib_1.__metadata("design:paramtypes", [context_1.Remult])
1225
+ ], p);
1226
+ return p;
1227
+ }(remult3_1.EntityBase));
1228
+ //# sourceMappingURL=db-tests.db-tests.js.map