@proteinjs/db 1.7.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/dist/generated/index.d.ts.map +1 -1
- package/dist/generated/index.js +3 -1
- package/dist/generated/index.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/src/Db.d.ts +30 -4
- package/dist/src/Db.d.ts.map +1 -1
- package/dist/src/Db.js +66 -75
- package/dist/src/Db.js.map +1 -1
- package/dist/src/Table.d.ts +4 -0
- package/dist/src/Table.d.ts.map +1 -1
- package/dist/src/Table.js +104 -1
- package/dist/src/Table.js.map +1 -1
- package/dist/src/services/TransactionRunnerService.d.ts +7 -0
- package/dist/src/services/TransactionRunnerService.d.ts.map +1 -0
- package/dist/src/services/TransactionRunnerService.js +6 -0
- package/dist/src/services/TransactionRunnerService.js.map +1 -0
- package/dist/src/transaction/Transaction.d.ts +69 -0
- package/dist/src/transaction/Transaction.d.ts.map +1 -0
- package/dist/src/transaction/Transaction.js +255 -0
- package/dist/src/transaction/Transaction.js.map +1 -0
- package/dist/src/transaction/TransactionRunner.d.ts +7 -0
- package/dist/src/transaction/TransactionRunner.d.ts.map +1 -0
- package/dist/src/transaction/TransactionRunner.js +88 -0
- package/dist/src/transaction/TransactionRunner.js.map +1 -0
- package/dist/test/TransactionDb.test.d.ts +2 -0
- package/dist/test/TransactionDb.test.d.ts.map +1 -0
- package/dist/test/TransactionDb.test.js +404 -0
- package/dist/test/TransactionDb.test.js.map +1 -0
- package/dist/test/reusable/TransactionTests.d.ts +52 -0
- package/dist/test/reusable/TransactionTests.d.ts.map +1 -0
- package/dist/test/reusable/TransactionTests.js +396 -0
- package/dist/test/reusable/TransactionTests.js.map +1 -0
- package/generated/index.ts +3 -1
- package/index.ts +5 -2
- package/package.json +2 -2
- package/src/Db.ts +63 -28
- package/src/Table.ts +23 -0
- package/src/services/TransactionRunnerService.ts +10 -0
- package/src/transaction/Transaction.ts +186 -0
- package/src/transaction/TransactionRunner.ts +18 -0
- package/test/TransactionDb.test.ts +335 -0
- package/test/reusable/TransactionTests.ts +234 -0
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
18
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
19
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
20
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
21
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
22
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
23
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
27
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
28
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
29
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
30
|
+
function step(op) {
|
|
31
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
32
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
33
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
34
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
35
|
+
switch (op[0]) {
|
|
36
|
+
case 0: case 1: t = op; break;
|
|
37
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
38
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
39
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
40
|
+
default:
|
|
41
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
42
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
43
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
44
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
45
|
+
if (t[2]) _.ops.pop();
|
|
46
|
+
_.trys.pop(); continue;
|
|
47
|
+
}
|
|
48
|
+
op = body.call(thisArg, _);
|
|
49
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
50
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
54
|
+
exports.transactionTests = exports.getTransactionTestTable = void 0;
|
|
55
|
+
var db_query_1 = require("@proteinjs/db-query");
|
|
56
|
+
var Db_1 = require("../../src/Db");
|
|
57
|
+
var Record_1 = require("../../src/Record");
|
|
58
|
+
var Columns_1 = require("../../src/Columns");
|
|
59
|
+
var Table_1 = require("../../src/Table");
|
|
60
|
+
var EmployeeTestTable = /** @class */ (function (_super) {
|
|
61
|
+
__extends(EmployeeTestTable, _super);
|
|
62
|
+
function EmployeeTestTable() {
|
|
63
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
64
|
+
_this.name = 'db_transaction_test_employee';
|
|
65
|
+
_this.columns = (0, Record_1.withRecordColumns)({
|
|
66
|
+
name: new Columns_1.StringColumn('name'),
|
|
67
|
+
department: new Columns_1.StringColumn('department'),
|
|
68
|
+
isRemote: new Columns_1.BooleanColumn('is_remote'),
|
|
69
|
+
jobTitle: new Columns_1.StringColumn('job_title'),
|
|
70
|
+
startDate: new Columns_1.DateColumn('start_date'),
|
|
71
|
+
object: new Columns_1.StringColumn('object'),
|
|
72
|
+
});
|
|
73
|
+
return _this;
|
|
74
|
+
}
|
|
75
|
+
return EmployeeTestTable;
|
|
76
|
+
}(Table_1.Table));
|
|
77
|
+
var ReservedWordTestTable = /** @class */ (function (_super) {
|
|
78
|
+
__extends(ReservedWordTestTable, _super);
|
|
79
|
+
function ReservedWordTestTable() {
|
|
80
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
81
|
+
_this.name = 'db_transaction_test_reserved_word';
|
|
82
|
+
_this.columns = (0, Record_1.withRecordColumns)({
|
|
83
|
+
name: new Columns_1.StringColumn('name'),
|
|
84
|
+
order: new Columns_1.StringColumn('order'),
|
|
85
|
+
select: new Columns_1.StringColumn('select'),
|
|
86
|
+
join: new Columns_1.StringColumn('join'),
|
|
87
|
+
});
|
|
88
|
+
return _this;
|
|
89
|
+
}
|
|
90
|
+
return ReservedWordTestTable;
|
|
91
|
+
}(Table_1.Table));
|
|
92
|
+
/**
|
|
93
|
+
* Used for testing purposes only.
|
|
94
|
+
* */
|
|
95
|
+
var getTransactionTestTable = function (tableName) {
|
|
96
|
+
var employeeTable = new EmployeeTestTable();
|
|
97
|
+
if (employeeTable.name == tableName) {
|
|
98
|
+
return new EmployeeTestTable();
|
|
99
|
+
}
|
|
100
|
+
var reservedWordTestTable = new ReservedWordTestTable();
|
|
101
|
+
if (reservedWordTestTable.name == tableName) {
|
|
102
|
+
return new ReservedWordTestTable();
|
|
103
|
+
}
|
|
104
|
+
throw new Error("Cannot find test table: ".concat(tableName));
|
|
105
|
+
};
|
|
106
|
+
exports.getTransactionTestTable = getTransactionTestTable;
|
|
107
|
+
var transactionTests = function (driver, dropTable) {
|
|
108
|
+
return function () {
|
|
109
|
+
var db = new Db_1.Db(driver, exports.getTransactionTestTable);
|
|
110
|
+
beforeAll(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
111
|
+
return __generator(this, function (_a) {
|
|
112
|
+
switch (_a.label) {
|
|
113
|
+
case 0:
|
|
114
|
+
if (!driver.start) return [3 /*break*/, 2];
|
|
115
|
+
return [4 /*yield*/, driver.start()];
|
|
116
|
+
case 1:
|
|
117
|
+
_a.sent();
|
|
118
|
+
_a.label = 2;
|
|
119
|
+
case 2: return [4 /*yield*/, driver.getTableManager().loadTable(new EmployeeTestTable())];
|
|
120
|
+
case 3:
|
|
121
|
+
_a.sent();
|
|
122
|
+
return [4 /*yield*/, driver.getTableManager().loadTable(new ReservedWordTestTable())];
|
|
123
|
+
case 4:
|
|
124
|
+
_a.sent();
|
|
125
|
+
return [2 /*return*/];
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
}); });
|
|
129
|
+
afterAll(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
130
|
+
return __generator(this, function (_a) {
|
|
131
|
+
switch (_a.label) {
|
|
132
|
+
case 0: return [4 /*yield*/, dropTable(new EmployeeTestTable())];
|
|
133
|
+
case 1:
|
|
134
|
+
_a.sent();
|
|
135
|
+
return [4 /*yield*/, dropTable(new ReservedWordTestTable())];
|
|
136
|
+
case 2:
|
|
137
|
+
_a.sent();
|
|
138
|
+
if (!driver.stop) return [3 /*break*/, 4];
|
|
139
|
+
return [4 /*yield*/, driver.stop()];
|
|
140
|
+
case 3:
|
|
141
|
+
_a.sent();
|
|
142
|
+
_a.label = 4;
|
|
143
|
+
case 4: return [2 /*return*/];
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
}); });
|
|
147
|
+
test('Transaction with successful operations', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
148
|
+
var testEmployee1, testEmployee2, emplyeeTable, results, updatedEmp1, updatedEmp2, qb;
|
|
149
|
+
return __generator(this, function (_a) {
|
|
150
|
+
switch (_a.label) {
|
|
151
|
+
case 0:
|
|
152
|
+
testEmployee1 = {
|
|
153
|
+
name: 'Veronica',
|
|
154
|
+
department: 'Engineering',
|
|
155
|
+
};
|
|
156
|
+
testEmployee2 = {
|
|
157
|
+
name: 'Brent',
|
|
158
|
+
department: 'Engineering',
|
|
159
|
+
};
|
|
160
|
+
emplyeeTable = new EmployeeTestTable();
|
|
161
|
+
return [4 /*yield*/, db.runTransaction(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
162
|
+
var emp1, emp2;
|
|
163
|
+
return __generator(this, function (_a) {
|
|
164
|
+
switch (_a.label) {
|
|
165
|
+
case 0: return [4 /*yield*/, db.insert(emplyeeTable, testEmployee1)];
|
|
166
|
+
case 1:
|
|
167
|
+
emp1 = _a.sent();
|
|
168
|
+
return [4 /*yield*/, db.insert(emplyeeTable, testEmployee2)];
|
|
169
|
+
case 2:
|
|
170
|
+
emp2 = _a.sent();
|
|
171
|
+
return [4 /*yield*/, db.update(emplyeeTable, { department: 'R&D' }, { id: emp1.id })];
|
|
172
|
+
case 3:
|
|
173
|
+
_a.sent();
|
|
174
|
+
return [2 /*return*/, { emp1: emp1, emp2: emp2 }];
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
}); })];
|
|
178
|
+
case 1:
|
|
179
|
+
results = _a.sent();
|
|
180
|
+
// Verify the transaction results
|
|
181
|
+
expect(results.emp1.name).toBe('Veronica');
|
|
182
|
+
expect(results.emp2.name).toBe('Brent');
|
|
183
|
+
return [4 /*yield*/, db.get(emplyeeTable, { id: results.emp1.id })];
|
|
184
|
+
case 2:
|
|
185
|
+
updatedEmp1 = _a.sent();
|
|
186
|
+
return [4 /*yield*/, db.get(emplyeeTable, { id: results.emp2.id })];
|
|
187
|
+
case 3:
|
|
188
|
+
updatedEmp2 = _a.sent();
|
|
189
|
+
expect(updatedEmp1.department).toBe('R&D');
|
|
190
|
+
expect(updatedEmp2.department).toBe('Engineering');
|
|
191
|
+
qb = new db_query_1.QueryBuilder(emplyeeTable.name).condition({
|
|
192
|
+
field: 'id',
|
|
193
|
+
operator: 'IN',
|
|
194
|
+
value: [results.emp1.id, results.emp2.id],
|
|
195
|
+
});
|
|
196
|
+
return [4 /*yield*/, db.delete(emplyeeTable, qb)];
|
|
197
|
+
case 4:
|
|
198
|
+
_a.sent();
|
|
199
|
+
return [2 /*return*/];
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
}); });
|
|
203
|
+
test('Transaction rollback on error', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
204
|
+
var testEmployee1, testEmployee2, emplyeeTable, insertedId, error_1, result;
|
|
205
|
+
return __generator(this, function (_a) {
|
|
206
|
+
switch (_a.label) {
|
|
207
|
+
case 0:
|
|
208
|
+
testEmployee1 = {
|
|
209
|
+
name: 'Veronica',
|
|
210
|
+
department: 'Engineering',
|
|
211
|
+
};
|
|
212
|
+
testEmployee2 = {
|
|
213
|
+
name: 'Brent',
|
|
214
|
+
department: undefined, // This will cause an error
|
|
215
|
+
};
|
|
216
|
+
emplyeeTable = new EmployeeTestTable();
|
|
217
|
+
_a.label = 1;
|
|
218
|
+
case 1:
|
|
219
|
+
_a.trys.push([1, 3, , 5]);
|
|
220
|
+
return [4 /*yield*/, db.runTransaction(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
221
|
+
var emp1;
|
|
222
|
+
return __generator(this, function (_a) {
|
|
223
|
+
switch (_a.label) {
|
|
224
|
+
case 0: return [4 /*yield*/, db.insert(emplyeeTable, testEmployee1)];
|
|
225
|
+
case 1:
|
|
226
|
+
emp1 = _a.sent();
|
|
227
|
+
insertedId = emp1.id;
|
|
228
|
+
// This should fail and trigger a rollback
|
|
229
|
+
return [4 /*yield*/, db.insert(emplyeeTable, testEmployee2)];
|
|
230
|
+
case 2:
|
|
231
|
+
// This should fail and trigger a rollback
|
|
232
|
+
_a.sent();
|
|
233
|
+
return [2 /*return*/, emp1];
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
}); })];
|
|
237
|
+
case 2:
|
|
238
|
+
_a.sent();
|
|
239
|
+
fail('Transaction should have thrown an error');
|
|
240
|
+
return [3 /*break*/, 5];
|
|
241
|
+
case 3:
|
|
242
|
+
error_1 = _a.sent();
|
|
243
|
+
return [4 /*yield*/, db.get(emplyeeTable, { id: insertedId })];
|
|
244
|
+
case 4:
|
|
245
|
+
result = _a.sent();
|
|
246
|
+
expect(result).toBeFalsy();
|
|
247
|
+
return [3 /*break*/, 5];
|
|
248
|
+
case 5: return [2 /*return*/];
|
|
249
|
+
}
|
|
250
|
+
});
|
|
251
|
+
}); });
|
|
252
|
+
test('Nested transactions are not allowed', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
253
|
+
var testEmployee, emplyeeTable;
|
|
254
|
+
return __generator(this, function (_a) {
|
|
255
|
+
switch (_a.label) {
|
|
256
|
+
case 0:
|
|
257
|
+
testEmployee = {
|
|
258
|
+
name: 'Veronica',
|
|
259
|
+
department: 'Engineering',
|
|
260
|
+
};
|
|
261
|
+
emplyeeTable = new EmployeeTestTable();
|
|
262
|
+
return [4 /*yield*/, expect(db.runTransaction(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
263
|
+
var emp;
|
|
264
|
+
return __generator(this, function (_a) {
|
|
265
|
+
switch (_a.label) {
|
|
266
|
+
case 0: return [4 /*yield*/, db.insert(emplyeeTable, testEmployee)];
|
|
267
|
+
case 1:
|
|
268
|
+
emp = _a.sent();
|
|
269
|
+
// Try to start a nested transaction
|
|
270
|
+
return [4 /*yield*/, db.runTransaction(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
271
|
+
return __generator(this, function (_a) {
|
|
272
|
+
switch (_a.label) {
|
|
273
|
+
case 0: return [4 /*yield*/, db.update(emplyeeTable, { department: 'R&D' }, { id: emp.id })];
|
|
274
|
+
case 1:
|
|
275
|
+
_a.sent();
|
|
276
|
+
return [2 /*return*/, emp];
|
|
277
|
+
}
|
|
278
|
+
});
|
|
279
|
+
}); })];
|
|
280
|
+
case 2:
|
|
281
|
+
// Try to start a nested transaction
|
|
282
|
+
_a.sent();
|
|
283
|
+
return [2 /*return*/, emp];
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
}); })).rejects.toThrow()];
|
|
287
|
+
case 1:
|
|
288
|
+
_a.sent();
|
|
289
|
+
return [2 /*return*/];
|
|
290
|
+
}
|
|
291
|
+
});
|
|
292
|
+
}); });
|
|
293
|
+
test('Transaction isolation', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
294
|
+
var testEmployee, emplyeeTable, transactionPromise, results, insertedEmployee;
|
|
295
|
+
return __generator(this, function (_a) {
|
|
296
|
+
switch (_a.label) {
|
|
297
|
+
case 0:
|
|
298
|
+
testEmployee = {
|
|
299
|
+
name: 'Veronica',
|
|
300
|
+
department: 'Engineering',
|
|
301
|
+
};
|
|
302
|
+
emplyeeTable = new EmployeeTestTable();
|
|
303
|
+
transactionPromise = db.runTransaction(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
304
|
+
var emp;
|
|
305
|
+
return __generator(this, function (_a) {
|
|
306
|
+
switch (_a.label) {
|
|
307
|
+
case 0: return [4 /*yield*/, db.insert(emplyeeTable, testEmployee)];
|
|
308
|
+
case 1:
|
|
309
|
+
emp = _a.sent();
|
|
310
|
+
// Delay to simulate long-running transaction
|
|
311
|
+
return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 100); })];
|
|
312
|
+
case 2:
|
|
313
|
+
// Delay to simulate long-running transaction
|
|
314
|
+
_a.sent();
|
|
315
|
+
return [2 /*return*/, emp];
|
|
316
|
+
}
|
|
317
|
+
});
|
|
318
|
+
}); });
|
|
319
|
+
return [4 /*yield*/, db.query(emplyeeTable, { name: 'Veronica' })];
|
|
320
|
+
case 1:
|
|
321
|
+
results = _a.sent();
|
|
322
|
+
expect(results.length).toBe(0);
|
|
323
|
+
return [4 /*yield*/, transactionPromise];
|
|
324
|
+
case 2:
|
|
325
|
+
insertedEmployee = _a.sent();
|
|
326
|
+
// Clean up
|
|
327
|
+
return [4 /*yield*/, db.delete(emplyeeTable, { id: insertedEmployee.id })];
|
|
328
|
+
case 3:
|
|
329
|
+
// Clean up
|
|
330
|
+
_a.sent();
|
|
331
|
+
return [2 /*return*/];
|
|
332
|
+
}
|
|
333
|
+
});
|
|
334
|
+
}); });
|
|
335
|
+
test('Transaction with multiple table operations', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
336
|
+
var testEmployee, testReservedWord, emplyeeTable, reservedWordTable, results, updatedEmp, updatedReserved;
|
|
337
|
+
return __generator(this, function (_a) {
|
|
338
|
+
switch (_a.label) {
|
|
339
|
+
case 0:
|
|
340
|
+
testEmployee = {
|
|
341
|
+
name: 'Veronica',
|
|
342
|
+
department: 'Engineering',
|
|
343
|
+
};
|
|
344
|
+
testReservedWord = {
|
|
345
|
+
name: 'Test',
|
|
346
|
+
order: '1',
|
|
347
|
+
select: 'Option 1',
|
|
348
|
+
};
|
|
349
|
+
emplyeeTable = new EmployeeTestTable();
|
|
350
|
+
reservedWordTable = new ReservedWordTestTable();
|
|
351
|
+
return [4 /*yield*/, db.runTransaction(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
352
|
+
var emp, reserved;
|
|
353
|
+
return __generator(this, function (_a) {
|
|
354
|
+
switch (_a.label) {
|
|
355
|
+
case 0: return [4 /*yield*/, db.insert(emplyeeTable, testEmployee)];
|
|
356
|
+
case 1:
|
|
357
|
+
emp = _a.sent();
|
|
358
|
+
return [4 /*yield*/, db.insert(reservedWordTable, testReservedWord)];
|
|
359
|
+
case 2:
|
|
360
|
+
reserved = _a.sent();
|
|
361
|
+
return [4 /*yield*/, db.update(emplyeeTable, { department: 'R&D' }, { id: emp.id })];
|
|
362
|
+
case 3:
|
|
363
|
+
_a.sent();
|
|
364
|
+
return [4 /*yield*/, db.update(reservedWordTable, { order: '2' }, { id: reserved.id })];
|
|
365
|
+
case 4:
|
|
366
|
+
_a.sent();
|
|
367
|
+
return [2 /*return*/, { emp: emp, reserved: reserved }];
|
|
368
|
+
}
|
|
369
|
+
});
|
|
370
|
+
}); })];
|
|
371
|
+
case 1:
|
|
372
|
+
results = _a.sent();
|
|
373
|
+
return [4 /*yield*/, db.get(emplyeeTable, { id: results.emp.id })];
|
|
374
|
+
case 2:
|
|
375
|
+
updatedEmp = _a.sent();
|
|
376
|
+
return [4 /*yield*/, db.get(reservedWordTable, { id: results.reserved.id })];
|
|
377
|
+
case 3:
|
|
378
|
+
updatedReserved = _a.sent();
|
|
379
|
+
expect(updatedEmp.department).toBe('R&D');
|
|
380
|
+
expect(updatedReserved.order).toBe('2');
|
|
381
|
+
// Clean up
|
|
382
|
+
return [4 /*yield*/, db.delete(emplyeeTable, { id: results.emp.id })];
|
|
383
|
+
case 4:
|
|
384
|
+
// Clean up
|
|
385
|
+
_a.sent();
|
|
386
|
+
return [4 /*yield*/, db.delete(reservedWordTable, { id: results.reserved.id })];
|
|
387
|
+
case 5:
|
|
388
|
+
_a.sent();
|
|
389
|
+
return [2 /*return*/];
|
|
390
|
+
}
|
|
391
|
+
});
|
|
392
|
+
}); });
|
|
393
|
+
};
|
|
394
|
+
};
|
|
395
|
+
exports.transactionTests = transactionTests;
|
|
396
|
+
//# sourceMappingURL=TransactionTests.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransactionTests.js","sourceRoot":"","sources":["../../../test/reusable/TransactionTests.ts"],"names":[],"mappings":"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"}
|