remult 0.13.9 → 0.13.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/readme.md +11 -8
- package/src/filter/filter-interfaces.js +48 -22
- package/src/remult3/RepositoryImplementation.d.ts +2 -0
- package/src/remult3/RepositoryImplementation.js +12 -1
- package/src/shared-tests/db-tests.db-tests.d.ts +10 -0
- package/src/shared-tests/db-tests.db-tests.js +100 -7
- package/src/tests/frontend-database-tests-setup.spec.d.ts +4 -0
- package/src/tests/frontend-database-tests-setup.spec.js +101 -0
- package/src/tests/testHelper.spec.d.ts +34 -0
- package/src/tests/testHelper.spec.js +369 -0
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -99,23 +99,26 @@ static async increasePriceOfTofu(priceIncrease: number, remult?: Remult) {
|
|
|
99
99
|
## :ballot_box_with_check: Data validation and constraints - defined once
|
|
100
100
|
|
|
101
101
|
```ts
|
|
102
|
-
import { Entity, EntityBase,
|
|
103
|
-
import { Min } from 'class-validator';
|
|
102
|
+
import { Entity, EntityBase, Fields } from 'remult';
|
|
104
103
|
|
|
105
104
|
@Entity('products', {
|
|
106
105
|
allowApiCrud: true
|
|
107
106
|
})
|
|
108
107
|
export class Product extends EntityBase {
|
|
109
108
|
@Fields.string<Product>({
|
|
110
|
-
validate:
|
|
111
|
-
if (
|
|
112
|
-
|
|
109
|
+
validate: product => {
|
|
110
|
+
if (product.name.trim().length == 0)
|
|
111
|
+
product.$.name.error = 'required';
|
|
113
112
|
}
|
|
114
113
|
})
|
|
115
114
|
name = '';
|
|
116
115
|
|
|
117
|
-
@Fields.number(
|
|
118
|
-
|
|
116
|
+
@Fields.number({
|
|
117
|
+
validate: (_, field) => {
|
|
118
|
+
if (field.value < 0)
|
|
119
|
+
field.error = "must not be less than 0";
|
|
120
|
+
}
|
|
121
|
+
})
|
|
119
122
|
unitPrice = 0;
|
|
120
123
|
}
|
|
121
124
|
```
|
|
@@ -136,7 +139,7 @@ catch {
|
|
|
136
139
|
```sh
|
|
137
140
|
> curl -d "{""unitPrice"":-1}" -H "Content-Type: application/json" -X POST http://localhost:3001/api/products
|
|
138
141
|
|
|
139
|
-
{"modelState":{"unitPrice":"
|
|
142
|
+
{"modelState":{"unitPrice":"must not be less than 0","name":"required"},"message":"Name: required"}
|
|
140
143
|
```
|
|
141
144
|
|
|
142
145
|
## :lock: Secure the API with fine-grained authorization
|
|
@@ -397,11 +397,12 @@ function entityFilterToJson(entityDefs, where) {
|
|
|
397
397
|
}
|
|
398
398
|
exports.entityFilterToJson = entityFilterToJson;
|
|
399
399
|
function buildFilterFromRequestParameters(entity, filterInfo) {
|
|
400
|
-
var
|
|
400
|
+
var _a;
|
|
401
401
|
var where = [];
|
|
402
402
|
tslib_1.__spread(entity.fields).forEach(function (col) {
|
|
403
403
|
var _a, _b;
|
|
404
404
|
function addFilter(operation, theFilter, jsonArray, asString) {
|
|
405
|
+
var e_3, _a;
|
|
405
406
|
if (jsonArray === void 0) { jsonArray = false; }
|
|
406
407
|
if (asString === void 0) { asString = false; }
|
|
407
408
|
var val = filterInfo.get(col.key + operation);
|
|
@@ -430,8 +431,26 @@ function buildFilterFromRequestParameters(entity, filterInfo) {
|
|
|
430
431
|
addFilter_1(v);
|
|
431
432
|
});
|
|
432
433
|
}
|
|
433
|
-
else
|
|
434
|
-
|
|
434
|
+
else {
|
|
435
|
+
if (jsonArray) {
|
|
436
|
+
if (typeof val === 'string')
|
|
437
|
+
val = JSON.parse(val);
|
|
438
|
+
}
|
|
439
|
+
var array = separateArrayFromInnerArray(val);
|
|
440
|
+
try {
|
|
441
|
+
for (var array_1 = tslib_1.__values(array), array_1_1 = array_1.next(); !array_1_1.done; array_1_1 = array_1.next()) {
|
|
442
|
+
var x = array_1_1.value;
|
|
443
|
+
addFilter_1(x);
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
447
|
+
finally {
|
|
448
|
+
try {
|
|
449
|
+
if (array_1_1 && !array_1_1.done && (_a = array_1.return)) _a.call(array_1);
|
|
450
|
+
}
|
|
451
|
+
finally { if (e_3) throw e_3.error; }
|
|
452
|
+
}
|
|
453
|
+
}
|
|
435
454
|
}
|
|
436
455
|
}
|
|
437
456
|
var c = new filterHelper(col);
|
|
@@ -460,6 +479,29 @@ function buildFilterFromRequestParameters(entity, filterInfo) {
|
|
|
460
479
|
});
|
|
461
480
|
var val = filterInfo.get('OR');
|
|
462
481
|
if (val) {
|
|
482
|
+
var array = separateArrayFromInnerArray(val);
|
|
483
|
+
where.push({
|
|
484
|
+
$and: array.map(function (v) { return ({
|
|
485
|
+
$or: v.map(function (x) {
|
|
486
|
+
return buildFilterFromRequestParameters(entity, { get: function (key) { return x[key]; } });
|
|
487
|
+
})
|
|
488
|
+
}); })
|
|
489
|
+
});
|
|
490
|
+
}
|
|
491
|
+
for (var key in entity.entityType) {
|
|
492
|
+
var element = entity.entityType[key];
|
|
493
|
+
if (element && element.customFilterInfo && element.customFilterInfo.customFilterTranslator) {
|
|
494
|
+
var custom = filterInfo.get(exports.customUrlToken + key);
|
|
495
|
+
if (custom !== undefined) {
|
|
496
|
+
where.push((_a = {}, _a[exports.customUrlToken + key] = custom, _a));
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
return { $and: where };
|
|
501
|
+
function separateArrayFromInnerArray(val) {
|
|
502
|
+
var e_4, _a;
|
|
503
|
+
if (!Array.isArray(val))
|
|
504
|
+
return [val];
|
|
463
505
|
var nonArray = [], array = [];
|
|
464
506
|
try {
|
|
465
507
|
for (var val_1 = tslib_1.__values(val), val_1_1 = val_1.next(); !val_1_1.done; val_1_1 = val_1.next()) {
|
|
@@ -471,32 +513,16 @@ function buildFilterFromRequestParameters(entity, filterInfo) {
|
|
|
471
513
|
nonArray.push(v);
|
|
472
514
|
}
|
|
473
515
|
}
|
|
474
|
-
catch (
|
|
516
|
+
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
475
517
|
finally {
|
|
476
518
|
try {
|
|
477
519
|
if (val_1_1 && !val_1_1.done && (_a = val_1.return)) _a.call(val_1);
|
|
478
520
|
}
|
|
479
|
-
finally { if (
|
|
521
|
+
finally { if (e_4) throw e_4.error; }
|
|
480
522
|
}
|
|
481
523
|
array.push(nonArray);
|
|
482
|
-
|
|
483
|
-
$and: array.map(function (v) { return ({
|
|
484
|
-
$or: v.map(function (x) {
|
|
485
|
-
return buildFilterFromRequestParameters(entity, { get: function (key) { return x[key]; } });
|
|
486
|
-
})
|
|
487
|
-
}); })
|
|
488
|
-
});
|
|
489
|
-
}
|
|
490
|
-
for (var key in entity.entityType) {
|
|
491
|
-
var element = entity.entityType[key];
|
|
492
|
-
if (element && element.customFilterInfo && element.customFilterInfo.customFilterTranslator) {
|
|
493
|
-
var custom = filterInfo.get(exports.customUrlToken + key);
|
|
494
|
-
if (custom !== undefined) {
|
|
495
|
-
where.push((_b = {}, _b[exports.customUrlToken + key] = custom, _b));
|
|
496
|
-
}
|
|
497
|
-
}
|
|
524
|
+
return array;
|
|
498
525
|
}
|
|
499
|
-
return { $and: where };
|
|
500
526
|
}
|
|
501
527
|
exports.buildFilterFromRequestParameters = buildFilterFromRequestParameters;
|
|
502
528
|
var customTranslator = /** @class */ (function () {
|
|
@@ -247,6 +247,8 @@ export declare class ValueListInfo<T extends ValueListItem> implements ValueConv
|
|
|
247
247
|
fieldTypeInDb?: string;
|
|
248
248
|
inputType?: string;
|
|
249
249
|
}
|
|
250
|
+
export declare function getValueList<T>(field: FieldRef<T>): T[];
|
|
251
|
+
export declare function getValueList<T>(field: FieldMetadata<T>): T[];
|
|
250
252
|
export declare function getValueList<T>(type: ClassType<T>): T[];
|
|
251
253
|
export declare function Field<entityType = any, valueType = any>(valueType: () => ClassType<valueType>, ...options: (FieldOptions<entityType, valueType> | ((options: FieldOptions<entityType, valueType>, remult: Remult) => void))[]): (target: any, key: any, c?: any) => void;
|
|
252
254
|
export declare const storableMember: unique symbol;
|
|
@@ -473,7 +473,7 @@ var RepositoryImplementation = /** @class */ (function () {
|
|
|
473
473
|
}
|
|
474
474
|
_a.label = 2;
|
|
475
475
|
case 2:
|
|
476
|
-
r = this.find(options).then(function (items) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
476
|
+
r = this.find(tslib_1.__assign(tslib_1.__assign({}, options), { limit: 1 })).then(function (items) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
477
477
|
var r;
|
|
478
478
|
return tslib_1.__generator(this, function (_a) {
|
|
479
479
|
switch (_a.label) {
|
|
@@ -2375,6 +2375,17 @@ var ValueListInfo = /** @class */ (function () {
|
|
|
2375
2375
|
exports.ValueListInfo = ValueListInfo;
|
|
2376
2376
|
var typeCache = new Map();
|
|
2377
2377
|
function getValueList(type) {
|
|
2378
|
+
var _a, _b, _c;
|
|
2379
|
+
{
|
|
2380
|
+
var fr = (_b = (_a = type) === null || _a === void 0 ? void 0 : _a.metadata) === null || _b === void 0 ? void 0 : _b.valueType;
|
|
2381
|
+
if (fr)
|
|
2382
|
+
return ValueListInfo.get(fr).getValues();
|
|
2383
|
+
}
|
|
2384
|
+
{
|
|
2385
|
+
var fr = (_c = type) === null || _c === void 0 ? void 0 : _c.valueType;
|
|
2386
|
+
if (fr)
|
|
2387
|
+
return ValueListInfo.get(fr).getValues();
|
|
2388
|
+
}
|
|
2378
2389
|
return ValueListInfo.get(type).getValues();
|
|
2379
2390
|
}
|
|
2380
2391
|
exports.getValueList = getValueList;
|
|
@@ -14,3 +14,13 @@ export declare enum Priority {
|
|
|
14
14
|
High = 1,
|
|
15
15
|
Critical = 2
|
|
16
16
|
}
|
|
17
|
+
export declare class tasksWithStringEnum extends IdEntity {
|
|
18
|
+
title: string;
|
|
19
|
+
completed: boolean;
|
|
20
|
+
priority: PriorityWithString;
|
|
21
|
+
}
|
|
22
|
+
export declare enum PriorityWithString {
|
|
23
|
+
Low = "Low",
|
|
24
|
+
High = "High",
|
|
25
|
+
Critical = "Critical"
|
|
26
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Priority = exports.tasksWithEnum = exports.stam = void 0;
|
|
3
|
+
exports.PriorityWithString = exports.tasksWithStringEnum = exports.Priority = exports.tasksWithEnum = exports.stam = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var data_api_1 = require("../data-api");
|
|
6
6
|
var remult3_1 = require("../remult3");
|
|
@@ -58,6 +58,24 @@ db_tests_setup_1.testAll("filter works on all db", function (_a) {
|
|
|
58
58
|
});
|
|
59
59
|
});
|
|
60
60
|
}, 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
|
+
});
|
|
78
|
+
}, false);
|
|
61
79
|
db_tests_setup_1.testAll("filter with and", function (_a) {
|
|
62
80
|
var createEntity = _a.createEntity;
|
|
63
81
|
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
@@ -1432,22 +1450,97 @@ var Priority;
|
|
|
1432
1450
|
db_tests_setup_1.testAll("task with enum", function (_a) {
|
|
1433
1451
|
var createEntity = _a.createEntity;
|
|
1434
1452
|
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
1435
|
-
var r, item;
|
|
1436
|
-
return tslib_1.__generator(this, function (
|
|
1437
|
-
switch (
|
|
1453
|
+
var r, item, _b, _c;
|
|
1454
|
+
return tslib_1.__generator(this, function (_d) {
|
|
1455
|
+
switch (_d.label) {
|
|
1438
1456
|
case 0: return [4 /*yield*/, createEntity(tasksWithEnum)];
|
|
1439
1457
|
case 1:
|
|
1440
|
-
r =
|
|
1458
|
+
r = _d.sent();
|
|
1441
1459
|
return [4 /*yield*/, r.insert({
|
|
1442
1460
|
title: 'a',
|
|
1443
1461
|
priority: Priority.Critical
|
|
1444
1462
|
})];
|
|
1445
1463
|
case 2:
|
|
1446
|
-
|
|
1464
|
+
_d.sent();
|
|
1447
1465
|
return [4 /*yield*/, r.findFirst()];
|
|
1448
1466
|
case 3:
|
|
1449
|
-
item =
|
|
1467
|
+
item = _d.sent();
|
|
1450
1468
|
expect(item.priority).toBe(Priority.Critical);
|
|
1469
|
+
_b = expect;
|
|
1470
|
+
return [4 /*yield*/, r.count({ priority: Priority.Critical })];
|
|
1471
|
+
case 4:
|
|
1472
|
+
_b.apply(void 0, [_d.sent()]).toBe(1);
|
|
1473
|
+
_c = expect;
|
|
1474
|
+
return [4 /*yield*/, r.count({ priority: Priority.Low })];
|
|
1475
|
+
case 5:
|
|
1476
|
+
_c.apply(void 0, [_d.sent()]).toBe(0);
|
|
1477
|
+
return [2 /*return*/];
|
|
1478
|
+
}
|
|
1479
|
+
});
|
|
1480
|
+
});
|
|
1481
|
+
});
|
|
1482
|
+
var tasksWithStringEnum = /** @class */ (function (_super) {
|
|
1483
|
+
tslib_1.__extends(tasksWithStringEnum, _super);
|
|
1484
|
+
function tasksWithStringEnum() {
|
|
1485
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
1486
|
+
_this.title = '';
|
|
1487
|
+
_this.completed = false;
|
|
1488
|
+
_this.priority = PriorityWithString.Low;
|
|
1489
|
+
return _this;
|
|
1490
|
+
}
|
|
1491
|
+
tslib_1.__decorate([
|
|
1492
|
+
remult3_1.Fields.string(),
|
|
1493
|
+
tslib_1.__metadata("design:type", Object)
|
|
1494
|
+
], tasksWithStringEnum.prototype, "title", void 0);
|
|
1495
|
+
tslib_1.__decorate([
|
|
1496
|
+
remult3_1.Fields.boolean(),
|
|
1497
|
+
tslib_1.__metadata("design:type", Object)
|
|
1498
|
+
], tasksWithStringEnum.prototype, "completed", void 0);
|
|
1499
|
+
tslib_1.__decorate([
|
|
1500
|
+
remult3_1.Fields.object(),
|
|
1501
|
+
tslib_1.__metadata("design:type", Object)
|
|
1502
|
+
], tasksWithStringEnum.prototype, "priority", void 0);
|
|
1503
|
+
tasksWithStringEnum = tslib_1.__decorate([
|
|
1504
|
+
remult3_1.Entity('tasksWithStringEnum', {
|
|
1505
|
+
allowApiCrud: true
|
|
1506
|
+
})
|
|
1507
|
+
], tasksWithStringEnum);
|
|
1508
|
+
return tasksWithStringEnum;
|
|
1509
|
+
}(id_entity_1.IdEntity));
|
|
1510
|
+
exports.tasksWithStringEnum = tasksWithStringEnum;
|
|
1511
|
+
var PriorityWithString;
|
|
1512
|
+
(function (PriorityWithString) {
|
|
1513
|
+
PriorityWithString["Low"] = "Low";
|
|
1514
|
+
PriorityWithString["High"] = "High";
|
|
1515
|
+
PriorityWithString["Critical"] = "Critical";
|
|
1516
|
+
})(PriorityWithString = exports.PriorityWithString || (exports.PriorityWithString = {}));
|
|
1517
|
+
db_tests_setup_1.testAll("task with enum string", function (_a) {
|
|
1518
|
+
var createEntity = _a.createEntity;
|
|
1519
|
+
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
1520
|
+
var r, item, _b, _c;
|
|
1521
|
+
return tslib_1.__generator(this, function (_d) {
|
|
1522
|
+
switch (_d.label) {
|
|
1523
|
+
case 0: return [4 /*yield*/, createEntity(tasksWithStringEnum)];
|
|
1524
|
+
case 1:
|
|
1525
|
+
r = _d.sent();
|
|
1526
|
+
return [4 /*yield*/, r.insert({
|
|
1527
|
+
title: 'a',
|
|
1528
|
+
priority: PriorityWithString.Critical
|
|
1529
|
+
})];
|
|
1530
|
+
case 2:
|
|
1531
|
+
_d.sent();
|
|
1532
|
+
return [4 /*yield*/, r.findFirst()];
|
|
1533
|
+
case 3:
|
|
1534
|
+
item = _d.sent();
|
|
1535
|
+
expect(item.priority).toBe(PriorityWithString.Critical);
|
|
1536
|
+
_b = expect;
|
|
1537
|
+
return [4 /*yield*/, r.count({ priority: PriorityWithString.Critical })];
|
|
1538
|
+
case 4:
|
|
1539
|
+
_b.apply(void 0, [_d.sent()]).toBe(1);
|
|
1540
|
+
_c = expect;
|
|
1541
|
+
return [4 /*yield*/, r.count({ priority: PriorityWithString.Low })];
|
|
1542
|
+
case 5:
|
|
1543
|
+
_c.apply(void 0, [_d.sent()]).toBe(0);
|
|
1451
1544
|
return [2 /*return*/];
|
|
1452
1545
|
}
|
|
1453
1546
|
});
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { dbTestWhatSignature } from "../shared-tests/db-tests-setup";
|
|
2
|
+
export declare function testWebSqlImpl(key: string, what: dbTestWhatSignature, focus?: boolean): void;
|
|
3
|
+
export declare function testRest(key: string, what: dbTestWhatSignature, focus?: boolean): void;
|
|
4
|
+
import '../shared-tests/';
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.testRest = exports.testWebSqlImpl = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var db_tests_setup_1 = require("../shared-tests/db-tests-setup");
|
|
6
|
+
var __1 = require("../..");
|
|
7
|
+
var context_1 = require("../context");
|
|
8
|
+
var sql_database_1 = require("../data-providers/sql-database");
|
|
9
|
+
var web_sql_data_provider_1 = require("../data-providers/web-sql-data-provider");
|
|
10
|
+
var testHelper_spec_1 = require("./testHelper.spec");
|
|
11
|
+
function testWebSqlImpl(key, what, focus) {
|
|
12
|
+
var _this = this;
|
|
13
|
+
if (focus === void 0) { focus = false; }
|
|
14
|
+
db_tests_setup_1.itWithFocus(key + " - WebSql", function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
15
|
+
var webSql, sql, _a, _b, r, _c, e_1_1, remult;
|
|
16
|
+
var e_1, _d;
|
|
17
|
+
var _this = this;
|
|
18
|
+
return tslib_1.__generator(this, function (_e) {
|
|
19
|
+
switch (_e.label) {
|
|
20
|
+
case 0:
|
|
21
|
+
webSql = new web_sql_data_provider_1.WebSqlDataProvider('test');
|
|
22
|
+
sql = new sql_database_1.SqlDatabase(webSql);
|
|
23
|
+
_e.label = 1;
|
|
24
|
+
case 1:
|
|
25
|
+
_e.trys.push([1, 11, 12, 13]);
|
|
26
|
+
return [4 /*yield*/, sql.execute("select name from sqlite_master where type='table'")];
|
|
27
|
+
case 2: return [4 /*yield*/, (_e.sent()).rows];
|
|
28
|
+
case 3:
|
|
29
|
+
_a = tslib_1.__values.apply(void 0, [_e.sent()]), _b = _a.next();
|
|
30
|
+
_e.label = 4;
|
|
31
|
+
case 4:
|
|
32
|
+
if (!!_b.done) return [3 /*break*/, 10];
|
|
33
|
+
r = _b.value;
|
|
34
|
+
_c = r.name;
|
|
35
|
+
switch (_c) {
|
|
36
|
+
case "__WebKitDatabaseInfoTable__": return [3 /*break*/, 5];
|
|
37
|
+
case "sqlite_sequence": return [3 /*break*/, 6];
|
|
38
|
+
}
|
|
39
|
+
return [3 /*break*/, 7];
|
|
40
|
+
case 5: return [3 /*break*/, 9];
|
|
41
|
+
case 6: return [3 /*break*/, 9];
|
|
42
|
+
case 7: return [4 /*yield*/, sql.execute("drop table if exists " + r.name)];
|
|
43
|
+
case 8:
|
|
44
|
+
_e.sent();
|
|
45
|
+
_e.label = 9;
|
|
46
|
+
case 9:
|
|
47
|
+
_b = _a.next();
|
|
48
|
+
return [3 /*break*/, 4];
|
|
49
|
+
case 10: return [3 /*break*/, 13];
|
|
50
|
+
case 11:
|
|
51
|
+
e_1_1 = _e.sent();
|
|
52
|
+
e_1 = { error: e_1_1 };
|
|
53
|
+
return [3 /*break*/, 13];
|
|
54
|
+
case 12:
|
|
55
|
+
try {
|
|
56
|
+
if (_b && !_b.done && (_d = _a.return)) _d.call(_a);
|
|
57
|
+
}
|
|
58
|
+
finally { if (e_1) throw e_1.error; }
|
|
59
|
+
return [7 /*endfinally*/];
|
|
60
|
+
case 13:
|
|
61
|
+
remult = new context_1.Remult();
|
|
62
|
+
remult.setDataProvider(sql);
|
|
63
|
+
return [4 /*yield*/, what({ db: sql, remult: remult, createEntity: function (x) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
|
|
64
|
+
return [2 /*return*/, remult.repo(x)];
|
|
65
|
+
}); }); } })];
|
|
66
|
+
case 14:
|
|
67
|
+
_e.sent();
|
|
68
|
+
return [2 /*return*/];
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}); }, focus);
|
|
72
|
+
}
|
|
73
|
+
exports.testWebSqlImpl = testWebSqlImpl;
|
|
74
|
+
db_tests_setup_1.addDatabaseToTest(testWebSqlImpl);
|
|
75
|
+
function testRest(key, what, focus) {
|
|
76
|
+
var _this = this;
|
|
77
|
+
if (focus === void 0) { focus = false; }
|
|
78
|
+
db_tests_setup_1.itWithFocus(key + " - Rest Provider", function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
79
|
+
var r, remult, db;
|
|
80
|
+
var _this = this;
|
|
81
|
+
return tslib_1.__generator(this, function (_a) {
|
|
82
|
+
switch (_a.label) {
|
|
83
|
+
case 0:
|
|
84
|
+
r = new context_1.Remult();
|
|
85
|
+
r.setDataProvider(new __1.InMemoryDataProvider());
|
|
86
|
+
remult = new context_1.Remult();
|
|
87
|
+
db = new testHelper_spec_1.MockRestDataProvider(r);
|
|
88
|
+
remult.setDataProvider(db);
|
|
89
|
+
return [4 /*yield*/, what({ db: db, remult: remult, createEntity: function (x) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
|
|
90
|
+
return [2 /*return*/, remult.repo(x)];
|
|
91
|
+
}); }); } })];
|
|
92
|
+
case 1:
|
|
93
|
+
_a.sent();
|
|
94
|
+
return [2 /*return*/];
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}); }, focus);
|
|
98
|
+
}
|
|
99
|
+
exports.testRest = testRest;
|
|
100
|
+
db_tests_setup_1.addDatabaseToTest(testRest);
|
|
101
|
+
require("../shared-tests/");
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import './frontend-database-tests-setup.spec';
|
|
2
|
+
import { Remult } from "../context";
|
|
3
|
+
import { DataProvider, EntityDataProvider } from "../data-interfaces";
|
|
4
|
+
import { InMemoryDataProvider } from "../data-providers/in-memory-database";
|
|
5
|
+
import { EntityMetadata } from "../remult3";
|
|
6
|
+
export declare function itForEach<T>(name: string, arrayOfT: T[], runAsync: (item: T) => Promise<any>): void;
|
|
7
|
+
export declare function fitForEach<T>(name: string, arrayOfT: T[], runAsync: (item: T) => Promise<any>): void;
|
|
8
|
+
export declare function testAsIfOnBackend(what: () => Promise<any>): Promise<void>;
|
|
9
|
+
export declare const ActionTestConfig: {
|
|
10
|
+
db: InMemoryDataProvider;
|
|
11
|
+
};
|
|
12
|
+
export declare function testSql(runAsync: (db: {
|
|
13
|
+
db: DataProvider;
|
|
14
|
+
remult: Remult;
|
|
15
|
+
}) => Promise<void>): Promise<void>;
|
|
16
|
+
export declare function testInMemoryDb(runAsync: (db: {
|
|
17
|
+
db: DataProvider;
|
|
18
|
+
remult: Remult;
|
|
19
|
+
}) => Promise<void>): Promise<void>;
|
|
20
|
+
export declare function testRestDb(runAsync: (db: {
|
|
21
|
+
db: DataProvider;
|
|
22
|
+
remult: Remult;
|
|
23
|
+
}) => Promise<void>): Promise<void>;
|
|
24
|
+
export declare function testAllDataProviders(runAsync: (db: {
|
|
25
|
+
db: DataProvider;
|
|
26
|
+
remult: Remult;
|
|
27
|
+
}) => Promise<void>): Promise<void>;
|
|
28
|
+
export declare class MockRestDataProvider implements DataProvider {
|
|
29
|
+
private remult;
|
|
30
|
+
constructor(remult: Remult);
|
|
31
|
+
getEntityDataProvider(metadata: EntityMetadata<any>): EntityDataProvider;
|
|
32
|
+
transaction(action: (dataProvider: DataProvider) => Promise<void>): Promise<void>;
|
|
33
|
+
supportsCustomFilter: boolean;
|
|
34
|
+
}
|
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MockRestDataProvider = exports.testAllDataProviders = exports.testRestDb = exports.testInMemoryDb = exports.testSql = exports.ActionTestConfig = exports.testAsIfOnBackend = exports.fitForEach = exports.itForEach = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
require("./frontend-database-tests-setup.spec");
|
|
6
|
+
var context_1 = require("../context");
|
|
7
|
+
var data_api_1 = require("../data-api");
|
|
8
|
+
var in_memory_database_1 = require("../data-providers/in-memory-database");
|
|
9
|
+
var rest_data_provider_1 = require("../data-providers/rest-data-provider");
|
|
10
|
+
var sql_database_1 = require("../data-providers/sql-database");
|
|
11
|
+
var web_sql_data_provider_1 = require("../data-providers/web-sql-data-provider");
|
|
12
|
+
var server_action_1 = require("../server-action");
|
|
13
|
+
var entityWithValidations_1 = require("../shared-tests/entityWithValidations");
|
|
14
|
+
var TestDataApiResponse_1 = require("./TestDataApiResponse");
|
|
15
|
+
jasmine.DEFAULT_TIMEOUT_INTERVAL = 999999;
|
|
16
|
+
//actionInfo.runningOnServer = false;
|
|
17
|
+
function itForEach(name, arrayOfT, runAsync) {
|
|
18
|
+
arrayOfT.forEach(function (i) {
|
|
19
|
+
it(name + ' - ' + i, function (done) {
|
|
20
|
+
runAsync(i).catch(function (e) {
|
|
21
|
+
fail(e);
|
|
22
|
+
done();
|
|
23
|
+
}).then(done, function (e) {
|
|
24
|
+
fail(e);
|
|
25
|
+
done();
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
exports.itForEach = itForEach;
|
|
31
|
+
function fitForEach(name, arrayOfT, runAsync) {
|
|
32
|
+
arrayOfT.forEach(function (i) {
|
|
33
|
+
fit(name + ' - ' + i, function (done) {
|
|
34
|
+
runAsync(i).catch(function (e) {
|
|
35
|
+
fail(e);
|
|
36
|
+
done();
|
|
37
|
+
}).then(done, function (e) {
|
|
38
|
+
fail(e);
|
|
39
|
+
done();
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
exports.fitForEach = fitForEach;
|
|
45
|
+
function testAsIfOnBackend(what) {
|
|
46
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
47
|
+
return tslib_1.__generator(this, function (_a) {
|
|
48
|
+
switch (_a.label) {
|
|
49
|
+
case 0:
|
|
50
|
+
_a.trys.push([0, , 2, 3]);
|
|
51
|
+
server_action_1.actionInfo.runningOnServer = true;
|
|
52
|
+
return [4 /*yield*/, what()];
|
|
53
|
+
case 1:
|
|
54
|
+
_a.sent();
|
|
55
|
+
return [3 /*break*/, 3];
|
|
56
|
+
case 2:
|
|
57
|
+
server_action_1.actionInfo.runningOnServer = false;
|
|
58
|
+
return [7 /*endfinally*/];
|
|
59
|
+
case 3: return [2 /*return*/];
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
exports.testAsIfOnBackend = testAsIfOnBackend;
|
|
65
|
+
exports.ActionTestConfig = {
|
|
66
|
+
db: new in_memory_database_1.InMemoryDataProvider()
|
|
67
|
+
};
|
|
68
|
+
server_action_1.Action.provider = {
|
|
69
|
+
delete: undefined,
|
|
70
|
+
get: undefined,
|
|
71
|
+
post: function (urlreq, data) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
72
|
+
return tslib_1.__generator(this, function (_a) {
|
|
73
|
+
switch (_a.label) {
|
|
74
|
+
case 0: return [4 /*yield*/, new Promise(function (res, r) {
|
|
75
|
+
var found = false;
|
|
76
|
+
server_action_1.actionInfo.allActions.forEach(function (action) {
|
|
77
|
+
action[server_action_1.serverActionField].
|
|
78
|
+
__register(function (url, queue, allowed, what) {
|
|
79
|
+
if (context_1.Remult.apiBaseUrl + '/' + url == urlreq) {
|
|
80
|
+
found = true;
|
|
81
|
+
var t = new TestDataApiResponse_1.TestDataApiResponse();
|
|
82
|
+
server_action_1.actionInfo.runningOnServer = true;
|
|
83
|
+
t.success = function (data) {
|
|
84
|
+
res(data);
|
|
85
|
+
server_action_1.actionInfo.runningOnServer = false;
|
|
86
|
+
};
|
|
87
|
+
t.error = function (data) {
|
|
88
|
+
r(JSON.parse(JSON.stringify(data_api_1.serializeError(data))));
|
|
89
|
+
server_action_1.actionInfo.runningOnServer = false;
|
|
90
|
+
};
|
|
91
|
+
var remult = new context_1.Remult();
|
|
92
|
+
remult.setDataProvider(exports.ActionTestConfig.db);
|
|
93
|
+
what(JSON.parse(JSON.stringify(data)), remult, t);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
if (!found) {
|
|
98
|
+
r("did not find " + urlreq);
|
|
99
|
+
}
|
|
100
|
+
})];
|
|
101
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
}); },
|
|
105
|
+
put: undefined
|
|
106
|
+
};
|
|
107
|
+
function testSql(runAsync) {
|
|
108
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
109
|
+
var webSql, sql, _a, _b, r, _c, e_1_1, remult;
|
|
110
|
+
var e_1, _d;
|
|
111
|
+
return tslib_1.__generator(this, function (_e) {
|
|
112
|
+
switch (_e.label) {
|
|
113
|
+
case 0:
|
|
114
|
+
webSql = new web_sql_data_provider_1.WebSqlDataProvider('test');
|
|
115
|
+
sql = new sql_database_1.SqlDatabase(webSql);
|
|
116
|
+
_e.label = 1;
|
|
117
|
+
case 1:
|
|
118
|
+
_e.trys.push([1, 10, 11, 12]);
|
|
119
|
+
return [4 /*yield*/, sql.execute("select name from sqlite_master where type='table'")];
|
|
120
|
+
case 2: return [4 /*yield*/, (_e.sent()).rows];
|
|
121
|
+
case 3:
|
|
122
|
+
_a = tslib_1.__values.apply(void 0, [_e.sent()]), _b = _a.next();
|
|
123
|
+
_e.label = 4;
|
|
124
|
+
case 4:
|
|
125
|
+
if (!!_b.done) return [3 /*break*/, 9];
|
|
126
|
+
r = _b.value;
|
|
127
|
+
_c = r.name;
|
|
128
|
+
switch (_c) {
|
|
129
|
+
case "__WebKitDatabaseInfoTable__": return [3 /*break*/, 5];
|
|
130
|
+
}
|
|
131
|
+
return [3 /*break*/, 6];
|
|
132
|
+
case 5: return [3 /*break*/, 8];
|
|
133
|
+
case 6: return [4 /*yield*/, sql.execute("drop table if exists " + r.name)];
|
|
134
|
+
case 7:
|
|
135
|
+
_e.sent();
|
|
136
|
+
_e.label = 8;
|
|
137
|
+
case 8:
|
|
138
|
+
_b = _a.next();
|
|
139
|
+
return [3 /*break*/, 4];
|
|
140
|
+
case 9: return [3 /*break*/, 12];
|
|
141
|
+
case 10:
|
|
142
|
+
e_1_1 = _e.sent();
|
|
143
|
+
e_1 = { error: e_1_1 };
|
|
144
|
+
return [3 /*break*/, 12];
|
|
145
|
+
case 11:
|
|
146
|
+
try {
|
|
147
|
+
if (_b && !_b.done && (_d = _a.return)) _d.call(_a);
|
|
148
|
+
}
|
|
149
|
+
finally { if (e_1) throw e_1.error; }
|
|
150
|
+
return [7 /*endfinally*/];
|
|
151
|
+
case 12:
|
|
152
|
+
remult = new context_1.Remult();
|
|
153
|
+
remult.setDataProvider(sql);
|
|
154
|
+
return [4 /*yield*/, runAsync({ db: sql, remult: remult })];
|
|
155
|
+
case 13:
|
|
156
|
+
_e.sent();
|
|
157
|
+
return [2 /*return*/];
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
exports.testSql = testSql;
|
|
163
|
+
function testInMemoryDb(runAsync) {
|
|
164
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
165
|
+
var remult, db;
|
|
166
|
+
return tslib_1.__generator(this, function (_a) {
|
|
167
|
+
switch (_a.label) {
|
|
168
|
+
case 0:
|
|
169
|
+
remult = new context_1.Remult();
|
|
170
|
+
db = new in_memory_database_1.InMemoryDataProvider();
|
|
171
|
+
remult.setDataProvider(db);
|
|
172
|
+
return [4 /*yield*/, runAsync({ db: db, remult: remult })];
|
|
173
|
+
case 1:
|
|
174
|
+
_a.sent();
|
|
175
|
+
return [2 /*return*/];
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
exports.testInMemoryDb = testInMemoryDb;
|
|
181
|
+
function testRestDb(runAsync) {
|
|
182
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
183
|
+
var r, remult, db;
|
|
184
|
+
return tslib_1.__generator(this, function (_a) {
|
|
185
|
+
switch (_a.label) {
|
|
186
|
+
case 0:
|
|
187
|
+
r = new context_1.Remult();
|
|
188
|
+
r.setDataProvider(new in_memory_database_1.InMemoryDataProvider());
|
|
189
|
+
remult = new context_1.Remult();
|
|
190
|
+
db = new MockRestDataProvider(r);
|
|
191
|
+
remult.setDataProvider(db);
|
|
192
|
+
return [4 /*yield*/, runAsync({ db: db, remult: remult })];
|
|
193
|
+
case 1:
|
|
194
|
+
_a.sent();
|
|
195
|
+
return [2 /*return*/];
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
exports.testRestDb = testRestDb;
|
|
201
|
+
function testAllDataProviders(runAsync) {
|
|
202
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
203
|
+
return tslib_1.__generator(this, function (_a) {
|
|
204
|
+
switch (_a.label) {
|
|
205
|
+
case 0: return [4 /*yield*/, testSql(runAsync)];
|
|
206
|
+
case 1:
|
|
207
|
+
_a.sent();
|
|
208
|
+
return [4 /*yield*/, testInMemoryDb(runAsync)];
|
|
209
|
+
case 2:
|
|
210
|
+
_a.sent();
|
|
211
|
+
return [4 /*yield*/, testRestDb(runAsync)];
|
|
212
|
+
case 3:
|
|
213
|
+
_a.sent();
|
|
214
|
+
return [2 /*return*/];
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
exports.testAllDataProviders = testAllDataProviders;
|
|
220
|
+
function urlToReq(url) {
|
|
221
|
+
var e_2, _a;
|
|
222
|
+
var _b;
|
|
223
|
+
var args = new Map();
|
|
224
|
+
var params = (_b = url === null || url === void 0 ? void 0 : url.split('?')[1]) === null || _b === void 0 ? void 0 : _b.split('&');
|
|
225
|
+
if (params)
|
|
226
|
+
try {
|
|
227
|
+
for (var params_1 = tslib_1.__values(params), params_1_1 = params_1.next(); !params_1_1.done; params_1_1 = params_1.next()) {
|
|
228
|
+
var p = params_1_1.value;
|
|
229
|
+
if (!p)
|
|
230
|
+
continue;
|
|
231
|
+
var z = p.split('=');
|
|
232
|
+
var key = decodeURIComponent(z[0]);
|
|
233
|
+
var value = decodeURIComponent(z[1]);
|
|
234
|
+
var x = args.get(key);
|
|
235
|
+
if (x === undefined) {
|
|
236
|
+
args.set(key, value);
|
|
237
|
+
}
|
|
238
|
+
else if (Array.isArray(x))
|
|
239
|
+
x.push(value);
|
|
240
|
+
else
|
|
241
|
+
args.set(key, [args.get(key), value]);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
245
|
+
finally {
|
|
246
|
+
try {
|
|
247
|
+
if (params_1_1 && !params_1_1.done && (_a = params_1.return)) _a.call(params_1);
|
|
248
|
+
}
|
|
249
|
+
finally { if (e_2) throw e_2.error; }
|
|
250
|
+
}
|
|
251
|
+
var req = {
|
|
252
|
+
get: function (key) {
|
|
253
|
+
var r = args.get(key);
|
|
254
|
+
if (r !== undefined) {
|
|
255
|
+
r.toString();
|
|
256
|
+
}
|
|
257
|
+
return r;
|
|
258
|
+
}
|
|
259
|
+
};
|
|
260
|
+
return req;
|
|
261
|
+
}
|
|
262
|
+
var MockRestDataProvider = /** @class */ (function () {
|
|
263
|
+
function MockRestDataProvider(remult) {
|
|
264
|
+
this.remult = remult;
|
|
265
|
+
this.supportsCustomFilter = true;
|
|
266
|
+
}
|
|
267
|
+
MockRestDataProvider.prototype.getEntityDataProvider = function (metadata) {
|
|
268
|
+
var _this = this;
|
|
269
|
+
var dataApi = new data_api_1.DataApi(this.remult.repo(metadata.entityType), this.remult);
|
|
270
|
+
return new rest_data_provider_1.RestEntityDataProvider("", {
|
|
271
|
+
delete: function (url) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
272
|
+
var urlSplit, r, result;
|
|
273
|
+
return tslib_1.__generator(this, function (_a) {
|
|
274
|
+
switch (_a.label) {
|
|
275
|
+
case 0:
|
|
276
|
+
urlSplit = url.split('/');
|
|
277
|
+
r = new TestDataApiResponse_1.TestDataApiResponse();
|
|
278
|
+
r.deleted = function () { };
|
|
279
|
+
_a.label = 1;
|
|
280
|
+
case 1:
|
|
281
|
+
_a.trys.push([1, , 3, 4]);
|
|
282
|
+
entityWithValidations_1.testConfiguration.restDbRunningOnServer = true;
|
|
283
|
+
return [4 /*yield*/, dataApi.delete(r, urlSplit[urlSplit.length - 1])];
|
|
284
|
+
case 2:
|
|
285
|
+
_a.sent();
|
|
286
|
+
return [3 /*break*/, 4];
|
|
287
|
+
case 3:
|
|
288
|
+
entityWithValidations_1.testConfiguration.restDbRunningOnServer = false;
|
|
289
|
+
return [7 /*endfinally*/];
|
|
290
|
+
case 4: return [2 /*return*/, result];
|
|
291
|
+
}
|
|
292
|
+
});
|
|
293
|
+
}); },
|
|
294
|
+
get: function (url) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
295
|
+
var r, result;
|
|
296
|
+
return tslib_1.__generator(this, function (_a) {
|
|
297
|
+
switch (_a.label) {
|
|
298
|
+
case 0:
|
|
299
|
+
r = new TestDataApiResponse_1.TestDataApiResponse();
|
|
300
|
+
r.success = function (data) { result = data; };
|
|
301
|
+
_a.label = 1;
|
|
302
|
+
case 1:
|
|
303
|
+
_a.trys.push([1, , 3, 4]);
|
|
304
|
+
entityWithValidations_1.testConfiguration.restDbRunningOnServer = true;
|
|
305
|
+
return [4 /*yield*/, dataApi.httpGet(r, urlToReq(url))];
|
|
306
|
+
case 2:
|
|
307
|
+
_a.sent();
|
|
308
|
+
return [3 /*break*/, 4];
|
|
309
|
+
case 3:
|
|
310
|
+
entityWithValidations_1.testConfiguration.restDbRunningOnServer = false;
|
|
311
|
+
return [7 /*endfinally*/];
|
|
312
|
+
case 4: return [2 /*return*/, result];
|
|
313
|
+
}
|
|
314
|
+
});
|
|
315
|
+
}); },
|
|
316
|
+
post: function (url, data) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
317
|
+
var r, result;
|
|
318
|
+
return tslib_1.__generator(this, function (_a) {
|
|
319
|
+
switch (_a.label) {
|
|
320
|
+
case 0:
|
|
321
|
+
r = new TestDataApiResponse_1.TestDataApiResponse();
|
|
322
|
+
r.created = function (data) { result = data; };
|
|
323
|
+
r.success = function (data) { result = data; };
|
|
324
|
+
_a.label = 1;
|
|
325
|
+
case 1:
|
|
326
|
+
_a.trys.push([1, , 3, 4]);
|
|
327
|
+
entityWithValidations_1.testConfiguration.restDbRunningOnServer = true;
|
|
328
|
+
return [4 /*yield*/, dataApi.httpPost(r, urlToReq(url), data)];
|
|
329
|
+
case 2:
|
|
330
|
+
_a.sent();
|
|
331
|
+
return [3 /*break*/, 4];
|
|
332
|
+
case 3:
|
|
333
|
+
entityWithValidations_1.testConfiguration.restDbRunningOnServer = false;
|
|
334
|
+
return [7 /*endfinally*/];
|
|
335
|
+
case 4: return [2 /*return*/, result];
|
|
336
|
+
}
|
|
337
|
+
});
|
|
338
|
+
}); },
|
|
339
|
+
put: function (url, data) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
340
|
+
var urlSplit, r, result;
|
|
341
|
+
return tslib_1.__generator(this, function (_a) {
|
|
342
|
+
switch (_a.label) {
|
|
343
|
+
case 0:
|
|
344
|
+
urlSplit = url.split('/');
|
|
345
|
+
r = new TestDataApiResponse_1.TestDataApiResponse();
|
|
346
|
+
r.success = function (data) { result = data; };
|
|
347
|
+
_a.label = 1;
|
|
348
|
+
case 1:
|
|
349
|
+
_a.trys.push([1, , 3, 4]);
|
|
350
|
+
entityWithValidations_1.testConfiguration.restDbRunningOnServer = true;
|
|
351
|
+
return [4 /*yield*/, dataApi.put(r, urlSplit[urlSplit.length - 1], data)];
|
|
352
|
+
case 2:
|
|
353
|
+
_a.sent();
|
|
354
|
+
return [3 /*break*/, 4];
|
|
355
|
+
case 3:
|
|
356
|
+
entityWithValidations_1.testConfiguration.restDbRunningOnServer = false;
|
|
357
|
+
return [7 /*endfinally*/];
|
|
358
|
+
case 4: return [2 /*return*/, result];
|
|
359
|
+
}
|
|
360
|
+
});
|
|
361
|
+
}); }
|
|
362
|
+
}, metadata);
|
|
363
|
+
};
|
|
364
|
+
MockRestDataProvider.prototype.transaction = function (action) {
|
|
365
|
+
throw new Error('Method not implemented.');
|
|
366
|
+
};
|
|
367
|
+
return MockRestDataProvider;
|
|
368
|
+
}());
|
|
369
|
+
exports.MockRestDataProvider = MockRestDataProvider;
|