remult 0.22.0 → 0.22.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,19 +20,24 @@ export class MongoDataProvider {
20
20
  return new MongoEntityDataProvider(this.db, entity, this.session);
21
21
  }
22
22
  async transaction(action) {
23
- let session = await this.client.startSession();
24
- session.startTransaction();
25
- const db = this.client.db(this.db.databaseName);
26
- try {
27
- await action(new MongoDataProvider(db, undefined, { session }));
28
- await session.commitTransaction();
23
+ if (this.disableTransactions) {
24
+ await action(this);
29
25
  }
30
- catch (err) {
31
- await session.abortTransaction();
32
- throw err;
33
- }
34
- finally {
35
- await session.endSession();
26
+ else {
27
+ let session = await this.client.startSession();
28
+ session.startTransaction();
29
+ const db = this.client.db(this.db.databaseName);
30
+ try {
31
+ await action(new MongoDataProvider(db, undefined, { session }));
32
+ await session.commitTransaction();
33
+ }
34
+ catch (err) {
35
+ await session.abortTransaction();
36
+ throw err;
37
+ }
38
+ finally {
39
+ await session.endSession();
40
+ }
36
41
  }
37
42
  }
38
43
  static async filterToRaw(entity, condition) {
@@ -54,7 +59,7 @@ class MongoEntityDataProvider {
54
59
  this.entity = entity;
55
60
  this.session = session;
56
61
  }
57
- translateFromJson(row, nameProvider) {
62
+ translateFromDb(row, nameProvider) {
58
63
  let result = {};
59
64
  for (const col of this.entity.fields) {
60
65
  let val = row[nameProvider.$dbNameOf(col)];
@@ -64,7 +69,7 @@ class MongoEntityDataProvider {
64
69
  }
65
70
  return result;
66
71
  }
67
- translateToJson(row, nameProvider) {
72
+ translateToDb(row, nameProvider) {
68
73
  let result = {};
69
74
  for (const col of this.entity.fields) {
70
75
  let val = col.valueConverter.toDb(row[col.key]);
@@ -104,7 +109,7 @@ class MongoEntityDataProvider {
104
109
  }
105
110
  return await Promise.all(await collection
106
111
  .find(where, op)
107
- .map((x) => this.translateFromJson(x, e))
112
+ .map((x) => this.translateFromDb(x, e))
108
113
  .toArray());
109
114
  }
110
115
  async update(id, data) {
@@ -124,7 +129,7 @@ class MongoEntityDataProvider {
124
129
  for (const f of this.entity.fields) {
125
130
  if (!f.dbReadOnly && !f.isServerExpression) {
126
131
  if (keys.includes(f.key)) {
127
- newR[f.key] = f.valueConverter.toJson(data[f.key]);
132
+ newR[f.key] = f.valueConverter.toDb(data[f.key]);
128
133
  }
129
134
  }
130
135
  }
@@ -143,10 +148,10 @@ class MongoEntityDataProvider {
143
148
  }
144
149
  async insert(data) {
145
150
  let { collection, e } = await this.collection();
146
- let r = await collection.insertOne(await this.translateToJson(data, e), {
151
+ let r = await collection.insertOne(await this.translateToDb(data, e), {
147
152
  session: this.session,
148
153
  });
149
- return await this.translateFromJson(await collection.findOne({ _id: r.insertedId }, { session: this.session }), e);
154
+ return await this.translateFromDb(await collection.findOne({ _id: r.insertedId }, { session: this.session }), e);
150
155
  }
151
156
  async collection() {
152
157
  const e = await dbNamesOf(this.entity);
@@ -2,5 +2,6 @@ import { dbTestWhatSignature } from '../shared-tests/db-tests-setup';
2
2
  export declare const testKnexPGSqlImpl: (key: string, what: dbTestWhatSignature, focus?: boolean) => void;
3
3
  export declare const mySqlTest: import("../shared-tests/db-tests-setup").dbTestMethodSignature;
4
4
  export declare function testPostgresImplementation(key: string, what: dbTestWhatSignature, focus?: boolean): void;
5
- export declare function testMongo(key: string, what: dbTestWhatSignature, focus?: boolean): void;
5
+ export declare const testMongo: (key: string, what: dbTestWhatSignature, focus?: boolean) => void;
6
+ export declare const testMongoNoTrans: (key: string, what: dbTestWhatSignature, focus?: boolean) => void;
6
7
  import '../shared-tests';
@@ -4,7 +4,7 @@ import * as Knex from 'knex';
4
4
  import { MongoClient } from 'mongodb';
5
5
  import { config } from 'dotenv';
6
6
  import { createPostgresConnection, PostgresSchemaBuilder, } from '../../postgres';
7
- import { addDatabaseToTest, itWithFocus, testAll, TestDbs, } from '../shared-tests/db-tests-setup';
7
+ import { addDatabaseToTest, itWithFocus, TestDbs, } from '../shared-tests/db-tests-setup';
8
8
  import { describeClass } from '../remult3/DecoratorReplacer';
9
9
  import { Entity, Fields } from '../remult3';
10
10
  KnexSchemaBuilder.logToConsole = false;
@@ -84,43 +84,72 @@ export function testPostgresImplementation(key, what, focus = false) {
84
84
  addDatabaseToTest(testPostgresImplementation);
85
85
  import { Categories } from '../tests/remult-3-entities';
86
86
  import { MongoDataProvider } from '../../remult-mongo';
87
- testAll('transactions', async ({ db, createEntity }) => {
88
- let x = await createEntity(Categories);
89
- await db.transaction(async (db) => {
90
- let remult = new Remult(db);
91
- expect(await remult.repo(Categories).count()).toBe(0);
87
+ export const testMongo = (() => {
88
+ const mongoConnectionString = process.env['MONGO_TEST_URL']; //"mongodb://localhost:27017/local"
89
+ let client = new MongoClient(mongoConnectionString);
90
+ let done;
91
+ let mongoDbPromise = client.connect().then((c) => {
92
+ done = c;
93
+ return c.db('test');
92
94
  });
93
- });
94
- const mongoConnectionString = process.env['MONGO_TEST_URL']; //"mongodb://localhost:27017/local"
95
- let client = new MongoClient(mongoConnectionString);
96
- let done;
97
- let mongoDbPromise = client.connect().then((c) => {
98
- done = c;
99
- return c.db('test');
100
- });
101
- afterAll(async () => {
102
- if (done)
103
- done.close();
104
- });
105
- export function testMongo(key, what, focus = false) {
106
- itWithFocus(key + ' - mongo', async () => {
107
- let mongoDb = await mongoDbPromise;
108
- let db = new MongoDataProvider(mongoDb, client);
109
- let remult = new Remult(db);
110
- await what({
111
- db,
112
- remult,
113
- createEntity: async (entity) => {
114
- let repo = remult.repo(entity);
115
- await mongoDb
116
- .collection(await repo.metadata.getDbName())
117
- .deleteMany({});
118
- return repo;
119
- },
120
- });
121
- }, focus);
122
- }
95
+ afterAll(async () => {
96
+ if (done)
97
+ done.close();
98
+ });
99
+ return function testMongo(key, what, focus = false) {
100
+ itWithFocus(key + ' - mongo', async () => {
101
+ let mongoDb = await mongoDbPromise;
102
+ let db = new MongoDataProvider(mongoDb, client);
103
+ let remult = new Remult(db);
104
+ await what({
105
+ db,
106
+ remult,
107
+ createEntity: async (entity) => {
108
+ let repo = remult.repo(entity);
109
+ await mongoDb
110
+ .collection(await repo.metadata.getDbName())
111
+ .deleteMany({});
112
+ return repo;
113
+ },
114
+ });
115
+ }, focus);
116
+ };
117
+ })();
118
+ export const testMongoNoTrans = (() => {
119
+ const mongoConnectionString = 'mongodb://localhost:27017/local';
120
+ let client = new MongoClient(mongoConnectionString);
121
+ let done;
122
+ let mongoDbPromise = client.connect().then((c) => {
123
+ done = c;
124
+ return c.db('test');
125
+ });
126
+ afterAll(async () => {
127
+ if (done)
128
+ done.close();
129
+ });
130
+ return function testMongo(key, what, focus = false) {
131
+ itWithFocus(key + ' - ' + TestDbs.mongoNoTrans, async () => {
132
+ let mongoDb = await mongoDbPromise;
133
+ let db = new MongoDataProvider(mongoDb, client, {
134
+ disableTransactions: true,
135
+ });
136
+ let remult = new Remult(db);
137
+ await what({
138
+ db,
139
+ remult,
140
+ createEntity: async (entity) => {
141
+ let repo = remult.repo(entity);
142
+ await mongoDb
143
+ .collection(await repo.metadata.getDbName())
144
+ .deleteMany({});
145
+ return repo;
146
+ },
147
+ });
148
+ }, focus);
149
+ };
150
+ })();
123
151
  addDatabaseToTest(testMongo, TestDbs.mongo);
152
+ addDatabaseToTest(testMongoNoTrans, TestDbs.mongoNoTrans);
124
153
  it('test mongo without transaction', async () => {
125
154
  const client = new MongoClient('mongodb://localhost:27017/local');
126
155
  await client.connect();
@@ -145,12 +174,49 @@ it('test mongo without transaction', async () => {
145
174
  }
146
175
  await repo.insert({ id: 1, title: 'a' });
147
176
  try {
148
- await db.transaction(async () => {
149
- await repo.insert({ id: 2, title: 'b' });
150
- throw new Error();
177
+ await db.transaction(async (dbWithTrans) => {
178
+ await new Remult(dbWithTrans).repo(entity).insert({ id: 2, title: 'b' });
179
+ throw 'Error';
151
180
  });
152
181
  }
153
- catch { }
182
+ catch (err) {
183
+ expect(err).toBe('Error');
184
+ }
154
185
  expect(await repo.count()).toBe(2);
155
186
  });
187
+ testMongoNoTrans('transactions mongo no trans', async ({ db, createEntity }) => {
188
+ let x = await createEntity(Categories);
189
+ try {
190
+ await db.transaction(async (db) => {
191
+ let remult = new Remult(db);
192
+ await remult.repo(Categories).insert({ categoryName: 'testing' });
193
+ expect(await remult.repo(Categories).count()).toBe(1);
194
+ throw 'Fail';
195
+ });
196
+ }
197
+ catch (err) {
198
+ expect(err).toBe('Fail');
199
+ }
200
+ expect(await x.count()).toBe(1);
201
+ }, false);
202
+ testMongoNoTrans('test Dates', async ({ createEntity }) => {
203
+ const c = class {
204
+ };
205
+ describeClass(c, Entity('test_dates_on_mongo'), {
206
+ id: Fields.integer(),
207
+ date: Fields.date(),
208
+ });
209
+ const r = await createEntity(c);
210
+ let x = await r.insert({ id: 1, date: new Date(1976, 5, 16) });
211
+ const client = new MongoClient('mongodb://localhost:27017/local');
212
+ await client.connect();
213
+ const mongoDb = client.db('test');
214
+ expect((await mongoDb.collection(await r.metadata.getDbName()).findOne())
215
+ .date instanceof Date).toBe(true);
216
+ x.date = new Date(1978, 2, 15);
217
+ await r.save(x);
218
+ expect((await mongoDb.collection(await r.metadata.getDbName()).findOne())
219
+ .date instanceof Date).toBe(true);
220
+ //let z = await r.save({ ...x, date: new Date(1978, 2, 15) })
221
+ }, false);
156
222
  import '../shared-tests';
@@ -12,7 +12,9 @@ export declare function addDatabaseToTest(tester: dbTestMethodSignature, key?: s
12
12
  export declare function testInMemory(key: string, what: dbTestWhatSignature, focus?: boolean): void;
13
13
  export declare const TestDbs: {
14
14
  restDataProvider: string;
15
+ webSql: string;
15
16
  mongo: string;
17
+ mongoNoTrans: string;
16
18
  inMemory: string;
17
19
  };
18
20
  export declare type dbTestWhatSignature = (db: {
@@ -40,7 +40,9 @@ export function testInMemory(key, what, focus = false) {
40
40
  }
41
41
  export const TestDbs = {
42
42
  restDataProvider: 'restDataProvider',
43
+ webSql: 'webSql',
43
44
  mongo: 'mongo',
45
+ mongoNoTrans: 'mongoNoTrans',
44
46
  inMemory: 'in memory',
45
47
  };
46
48
  addDatabaseToTest(testInMemory, TestDbs.inMemory);
@@ -4,7 +4,7 @@ import { Fields, Entity, EntityBase, Field, IdEntity, } from '../remult3';
4
4
  import { c } from '../tests/c';
5
5
  import { Done } from '../tests/Done';
6
6
  import { h } from '../tests/h';
7
- import { Categories as newCategories } from '../tests/remult-3-entities';
7
+ import { Categories, Categories as newCategories, } from '../tests/remult-3-entities';
8
8
  import { tasks } from '../tests/tasks';
9
9
  import { TestDataApiResponse } from '../tests/TestDataApiResponse';
10
10
  import { testAll, testAllDbs, TestDbs } from './db-tests-setup';
@@ -829,10 +829,50 @@ testAll('test transaction rollback', async ({ db, createEntity }) => {
829
829
  });
830
830
  fail = false;
831
831
  }
832
- catch { }
832
+ catch (err) {
833
+ expect(err).toBe('error');
834
+ }
833
835
  expect(await r.count()).toBe(1);
834
836
  expect(fail).toBe(true);
835
- }, false, { exclude: [TestDbs.inMemory] });
837
+ }, false, {
838
+ exclude: [
839
+ TestDbs.inMemory,
840
+ TestDbs.mongoNoTrans,
841
+ TestDbs.restDataProvider,
842
+ TestDbs.webSql,
843
+ ],
844
+ });
845
+ testAll('transactions', async ({ db, createEntity }) => {
846
+ let x = await createEntity(Categories);
847
+ await db.transaction(async (db) => {
848
+ let remult = new Remult(db);
849
+ expect(await remult.repo(Categories).count()).toBe(0);
850
+ });
851
+ }, false, {
852
+ exclude: [TestDbs.mongoNoTrans, TestDbs.restDataProvider, TestDbs.webSql],
853
+ });
854
+ testAll('transactions 1', async ({ db, createEntity }) => {
855
+ let x = await createEntity(Categories);
856
+ try {
857
+ await db.transaction(async (db) => {
858
+ let remult = new Remult(db);
859
+ await remult.repo(Categories).insert({ categoryName: 'testing' });
860
+ expect(await remult.repo(Categories).count()).toBe(1);
861
+ throw 'Fail';
862
+ });
863
+ }
864
+ catch (err) {
865
+ expect(err).toBe('Fail');
866
+ }
867
+ expect(await x.count()).toBe(0);
868
+ }, false, {
869
+ exclude: [
870
+ TestDbs.inMemory,
871
+ TestDbs.mongoNoTrans,
872
+ TestDbs.restDataProvider,
873
+ TestDbs.webSql,
874
+ ],
875
+ });
836
876
  testAll('test date', async ({ createEntity }) => {
837
877
  const e = class {
838
878
  constructor() {
@@ -879,7 +919,7 @@ testAll('test contains with names with casing', async ({ createEntity }) => {
879
919
  let item = await r.findFirst({ firstName: { $contains: 'oa' } });
880
920
  expect(item.firstName).toBe('noam');
881
921
  }, false, {
882
- exclude: [TestDbs.mongo],
922
+ exclude: [TestDbs.mongo, TestDbs.mongoNoTrans],
883
923
  });
884
924
  testAll('test live query storage', async (x) => {
885
925
  await x.createEntity(LiveQueryStorageEntity);
@@ -1005,7 +1045,7 @@ testAll('test json structure 3', async ({ createEntity }) => {
1005
1045
  expect(item.items).toEqual(['a', 'b']);
1006
1046
  expect(await r.count({ items: { $contains: 'b' } })).toBe(1);
1007
1047
  }, false, {
1008
- exclude: [TestDbs.mongo],
1048
+ exclude: [TestDbs.mongo, TestDbs.mongoNoTrans],
1009
1049
  });
1010
1050
  testAll('test relation to number id', async ({ createEntity }) => {
1011
1051
  const category = class {
@@ -1041,4 +1081,4 @@ testAll('test relation to number id', async ({ createEntity }) => {
1041
1081
  expect(await taskRepo.count({ category: cat[0] })).toBe(2);
1042
1082
  expect(await taskRepo.count({ category: cat[1] })).toBe(1);
1043
1083
  expect(await taskRepo.count({ category: { $id: cat[0].id } })).toBe(2);
1044
- }, false, { exclude: [TestDbs.mongo] });
1084
+ }, false, { exclude: [TestDbs.mongo, TestDbs.mongoNoTrans] });
@@ -23,7 +23,7 @@ export function testWebSqlImpl(key, what, focus = false) {
23
23
  await what({ db: sql, remult, createEntity: async (x) => remult.repo(x) });
24
24
  }, focus);
25
25
  }
26
- addDatabaseToTest(testWebSqlImpl);
26
+ addDatabaseToTest(testWebSqlImpl, TestDbs.webSql);
27
27
  export function testRest(key, what, focus = false) {
28
28
  itWithFocus(key + ' - Rest Provider', async () => {
29
29
  let r = new Remult();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "remult",
3
- "version": "0.22.0",
3
+ "version": "0.22.2",
4
4
  "description": "A CRUD framework for full-stack TypeScript",
5
5
  "types": "index.d.ts",
6
6
  "module": "esm/index.js",
package/remult-mongo.js CHANGED
@@ -28,32 +28,38 @@ var MongoDataProvider = /** @class */ (function () {
28
28
  var session, db, err_1;
29
29
  return tslib_1.__generator(this, function (_a) {
30
30
  switch (_a.label) {
31
- case 0: return [4 /*yield*/, this.client.startSession()];
31
+ case 0:
32
+ if (!this.disableTransactions) return [3 /*break*/, 2];
33
+ return [4 /*yield*/, action(this)];
32
34
  case 1:
35
+ _a.sent();
36
+ return [3 /*break*/, 11];
37
+ case 2: return [4 /*yield*/, this.client.startSession()];
38
+ case 3:
33
39
  session = _a.sent();
34
40
  session.startTransaction();
35
41
  db = this.client.db(this.db.databaseName);
36
- _a.label = 2;
37
- case 2:
38
- _a.trys.push([2, 5, 7, 9]);
42
+ _a.label = 4;
43
+ case 4:
44
+ _a.trys.push([4, 7, 9, 11]);
39
45
  return [4 /*yield*/, action(new MongoDataProvider(db, undefined, { session: session }))];
40
- case 3:
46
+ case 5:
41
47
  _a.sent();
42
48
  return [4 /*yield*/, session.commitTransaction()];
43
- case 4:
49
+ case 6:
44
50
  _a.sent();
45
- return [3 /*break*/, 9];
46
- case 5:
51
+ return [3 /*break*/, 11];
52
+ case 7:
47
53
  err_1 = _a.sent();
48
54
  return [4 /*yield*/, session.abortTransaction()];
49
- case 6:
55
+ case 8:
50
56
  _a.sent();
51
57
  throw err_1;
52
- case 7: return [4 /*yield*/, session.endSession()];
53
- case 8:
58
+ case 9: return [4 /*yield*/, session.endSession()];
59
+ case 10:
54
60
  _a.sent();
55
61
  return [7 /*endfinally*/];
56
- case 9: return [2 /*return*/];
62
+ case 11: return [2 /*return*/];
57
63
  }
58
64
  });
59
65
  });
@@ -95,7 +101,7 @@ var MongoEntityDataProvider = /** @class */ (function () {
95
101
  this.entity = entity;
96
102
  this.session = session;
97
103
  }
98
- MongoEntityDataProvider.prototype.translateFromJson = function (row, nameProvider) {
104
+ MongoEntityDataProvider.prototype.translateFromDb = function (row, nameProvider) {
99
105
  var e_1, _a;
100
106
  var result = {};
101
107
  try {
@@ -116,7 +122,7 @@ var MongoEntityDataProvider = /** @class */ (function () {
116
122
  }
117
123
  return result;
118
124
  };
119
- MongoEntityDataProvider.prototype.translateToJson = function (row, nameProvider) {
125
+ MongoEntityDataProvider.prototype.translateToDb = function (row, nameProvider) {
120
126
  var e_2, _a;
121
127
  var result = {};
122
128
  try {
@@ -200,7 +206,7 @@ var MongoEntityDataProvider = /** @class */ (function () {
200
206
  _e = (_d = Promise).all;
201
207
  return [4 /*yield*/, collection
202
208
  .find(where, op)
203
- .map(function (x) { return _this.translateFromJson(x, e); })
209
+ .map(function (x) { return _this.translateFromDb(x, e); })
204
210
  .toArray()];
205
211
  case 3: return [4 /*yield*/, _e.apply(_d, [_g.sent()])];
206
212
  case 4: return [2 /*return*/, _g.sent()];
@@ -244,7 +250,7 @@ var MongoEntityDataProvider = /** @class */ (function () {
244
250
  f_1 = _e.value;
245
251
  if (!f_1.dbReadOnly && !f_1.isServerExpression) {
246
252
  if (keys.includes(f_1.key)) {
247
- newR[f_1.key] = f_1.valueConverter.toJson(data[f_1.key]);
253
+ newR[f_1.key] = f_1.valueConverter.toDb(data[f_1.key]);
248
254
  }
249
255
  }
250
256
  }
@@ -299,13 +305,13 @@ var MongoEntityDataProvider = /** @class */ (function () {
299
305
  case 1:
300
306
  _a = _e.sent(), collection = _a.collection, e = _a.e;
301
307
  _c = (_b = collection).insertOne;
302
- return [4 /*yield*/, this.translateToJson(data, e)];
308
+ return [4 /*yield*/, this.translateToDb(data, e)];
303
309
  case 2: return [4 /*yield*/, _c.apply(_b, [_e.sent(), {
304
310
  session: this.session,
305
311
  }])];
306
312
  case 3:
307
313
  r = _e.sent();
308
- _d = this.translateFromJson;
314
+ _d = this.translateFromDb;
309
315
  return [4 /*yield*/, collection.findOne({ _id: r.insertedId }, { session: this.session })];
310
316
  case 4: return [4 /*yield*/, _d.apply(this, [_e.sent(), e])];
311
317
  case 5: return [2 /*return*/, _e.sent()];
@@ -2,5 +2,6 @@ import { dbTestWhatSignature } from '../shared-tests/db-tests-setup';
2
2
  export declare const testKnexPGSqlImpl: (key: string, what: dbTestWhatSignature, focus?: boolean) => void;
3
3
  export declare const mySqlTest: import("../shared-tests/db-tests-setup").dbTestMethodSignature;
4
4
  export declare function testPostgresImplementation(key: string, what: dbTestWhatSignature, focus?: boolean): void;
5
- export declare function testMongo(key: string, what: dbTestWhatSignature, focus?: boolean): void;
5
+ export declare const testMongo: (key: string, what: dbTestWhatSignature, focus?: boolean) => void;
6
+ export declare const testMongoNoTrans: (key: string, what: dbTestWhatSignature, focus?: boolean) => void;
6
7
  import '../shared-tests';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.testMongo = exports.testPostgresImplementation = exports.mySqlTest = exports.testKnexPGSqlImpl = void 0;
3
+ exports.testMongoNoTrans = exports.testMongo = exports.testPostgresImplementation = exports.mySqlTest = exports.testKnexPGSqlImpl = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var context_1 = require("../context");
6
6
  var remult_knex_1 = require("../../remult-knex");
@@ -139,103 +139,134 @@ exports.testPostgresImplementation = testPostgresImplementation;
139
139
  db_tests_setup_1.addDatabaseToTest(testPostgresImplementation);
140
140
  var remult_3_entities_1 = require("../tests/remult-3-entities");
141
141
  var remult_mongo_1 = require("../../remult-mongo");
142
- db_tests_setup_1.testAll('transactions', function (_a) {
143
- var db = _a.db, createEntity = _a.createEntity;
144
- return tslib_1.__awaiter(void 0, void 0, void 0, function () {
145
- var x;
146
- return tslib_1.__generator(this, function (_b) {
147
- switch (_b.label) {
148
- case 0: return [4 /*yield*/, createEntity(remult_3_entities_1.Categories)];
149
- case 1:
150
- x = _b.sent();
151
- return [4 /*yield*/, db.transaction(function (db) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
152
- var remult, _a;
153
- return tslib_1.__generator(this, function (_b) {
154
- switch (_b.label) {
155
- case 0:
156
- remult = new context_1.Remult(db);
157
- _a = expect;
158
- return [4 /*yield*/, remult.repo(remult_3_entities_1.Categories).count()];
159
- case 1:
160
- _a.apply(void 0, [_b.sent()]).toBe(0);
161
- return [2 /*return*/];
162
- }
163
- });
164
- }); })];
165
- case 2:
166
- _b.sent();
167
- return [2 /*return*/];
168
- }
169
- });
170
- });
171
- });
172
- var mongoConnectionString = process.env['MONGO_TEST_URL']; //"mongodb://localhost:27017/local"
173
- var client = new mongodb_1.MongoClient(mongoConnectionString);
174
- var done;
175
- var mongoDbPromise = client.connect().then(function (c) {
176
- done = c;
177
- return c.db('test');
178
- });
179
- afterAll(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
180
- return tslib_1.__generator(this, function (_a) {
181
- if (done)
182
- done.close();
183
- return [2 /*return*/];
142
+ exports.testMongo = (function () {
143
+ var mongoConnectionString = process.env['MONGO_TEST_URL']; //"mongodb://localhost:27017/local"
144
+ var client = new mongodb_1.MongoClient(mongoConnectionString);
145
+ var done;
146
+ var mongoDbPromise = client.connect().then(function (c) {
147
+ done = c;
148
+ return c.db('test');
184
149
  });
185
- }); });
186
- function testMongo(key, what, focus) {
187
- var _this = this;
188
- if (focus === void 0) { focus = false; }
189
- db_tests_setup_1.itWithFocus(key + ' - mongo', function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
190
- var mongoDb, db, remult;
150
+ afterAll(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
151
+ return tslib_1.__generator(this, function (_a) {
152
+ if (done)
153
+ done.close();
154
+ return [2 /*return*/];
155
+ });
156
+ }); });
157
+ return function testMongo(key, what, focus) {
191
158
  var _this = this;
159
+ if (focus === void 0) { focus = false; }
160
+ db_tests_setup_1.itWithFocus(key + ' - mongo', function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
161
+ var mongoDb, db, remult;
162
+ var _this = this;
163
+ return tslib_1.__generator(this, function (_a) {
164
+ switch (_a.label) {
165
+ case 0: return [4 /*yield*/, mongoDbPromise];
166
+ case 1:
167
+ mongoDb = _a.sent();
168
+ db = new remult_mongo_1.MongoDataProvider(mongoDb, client);
169
+ remult = new context_1.Remult(db);
170
+ return [4 /*yield*/, what({
171
+ db: db,
172
+ remult: remult,
173
+ createEntity: function (entity) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
174
+ var repo, _a, _b;
175
+ return tslib_1.__generator(this, function (_c) {
176
+ switch (_c.label) {
177
+ case 0:
178
+ repo = remult.repo(entity);
179
+ _b = (_a = mongoDb)
180
+ .collection;
181
+ return [4 /*yield*/, repo.metadata.getDbName()];
182
+ case 1: return [4 /*yield*/, _b.apply(_a, [_c.sent()])
183
+ .deleteMany({})];
184
+ case 2:
185
+ _c.sent();
186
+ return [2 /*return*/, repo];
187
+ }
188
+ });
189
+ }); },
190
+ })];
191
+ case 2:
192
+ _a.sent();
193
+ return [2 /*return*/];
194
+ }
195
+ });
196
+ }); }, focus);
197
+ };
198
+ })();
199
+ exports.testMongoNoTrans = (function () {
200
+ var mongoConnectionString = 'mongodb://localhost:27017/local';
201
+ var client = new mongodb_1.MongoClient(mongoConnectionString);
202
+ var done;
203
+ var mongoDbPromise = client.connect().then(function (c) {
204
+ done = c;
205
+ return c.db('test');
206
+ });
207
+ afterAll(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
192
208
  return tslib_1.__generator(this, function (_a) {
193
- switch (_a.label) {
194
- case 0: return [4 /*yield*/, mongoDbPromise];
195
- case 1:
196
- mongoDb = _a.sent();
197
- db = new remult_mongo_1.MongoDataProvider(mongoDb, client);
198
- remult = new context_1.Remult(db);
199
- return [4 /*yield*/, what({
200
- db: db,
201
- remult: remult,
202
- createEntity: function (entity) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
203
- var repo, _a, _b;
204
- return tslib_1.__generator(this, function (_c) {
205
- switch (_c.label) {
206
- case 0:
207
- repo = remult.repo(entity);
208
- _b = (_a = mongoDb)
209
- .collection;
210
- return [4 /*yield*/, repo.metadata.getDbName()];
211
- case 1: return [4 /*yield*/, _b.apply(_a, [_c.sent()])
212
- .deleteMany({})];
213
- case 2:
214
- _c.sent();
215
- return [2 /*return*/, repo];
216
- }
217
- });
218
- }); },
219
- })];
220
- case 2:
221
- _a.sent();
222
- return [2 /*return*/];
223
- }
209
+ if (done)
210
+ done.close();
211
+ return [2 /*return*/];
224
212
  });
225
- }); }, focus);
226
- }
227
- exports.testMongo = testMongo;
228
- db_tests_setup_1.addDatabaseToTest(testMongo, db_tests_setup_1.TestDbs.mongo);
213
+ }); });
214
+ return function testMongo(key, what, focus) {
215
+ var _this = this;
216
+ if (focus === void 0) { focus = false; }
217
+ db_tests_setup_1.itWithFocus(key + ' - ' + db_tests_setup_1.TestDbs.mongoNoTrans, function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
218
+ var mongoDb, db, remult;
219
+ var _this = this;
220
+ return tslib_1.__generator(this, function (_a) {
221
+ switch (_a.label) {
222
+ case 0: return [4 /*yield*/, mongoDbPromise];
223
+ case 1:
224
+ mongoDb = _a.sent();
225
+ db = new remult_mongo_1.MongoDataProvider(mongoDb, client, {
226
+ disableTransactions: true,
227
+ });
228
+ remult = new context_1.Remult(db);
229
+ return [4 /*yield*/, what({
230
+ db: db,
231
+ remult: remult,
232
+ createEntity: function (entity) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
233
+ var repo, _a, _b;
234
+ return tslib_1.__generator(this, function (_c) {
235
+ switch (_c.label) {
236
+ case 0:
237
+ repo = remult.repo(entity);
238
+ _b = (_a = mongoDb)
239
+ .collection;
240
+ return [4 /*yield*/, repo.metadata.getDbName()];
241
+ case 1: return [4 /*yield*/, _b.apply(_a, [_c.sent()])
242
+ .deleteMany({})];
243
+ case 2:
244
+ _c.sent();
245
+ return [2 /*return*/, repo];
246
+ }
247
+ });
248
+ }); },
249
+ })];
250
+ case 2:
251
+ _a.sent();
252
+ return [2 /*return*/];
253
+ }
254
+ });
255
+ }); }, focus);
256
+ };
257
+ })();
258
+ db_tests_setup_1.addDatabaseToTest(exports.testMongo, db_tests_setup_1.TestDbs.mongo);
259
+ db_tests_setup_1.addDatabaseToTest(exports.testMongoNoTrans, db_tests_setup_1.TestDbs.mongoNoTrans);
229
260
  it('test mongo without transaction', function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
230
- var client, mongoDb, db, remult, entity, repo, _a, _b, item, e_1_1, _c, _d;
231
- var e_1, _e;
232
- return tslib_1.__generator(this, function (_f) {
233
- switch (_f.label) {
261
+ var client, mongoDb, db, remult, entity, repo, _a, _b, item, e_1_1, err_1, _c;
262
+ var e_1, _d;
263
+ return tslib_1.__generator(this, function (_e) {
264
+ switch (_e.label) {
234
265
  case 0:
235
266
  client = new mongodb_1.MongoClient('mongodb://localhost:27017/local');
236
267
  return [4 /*yield*/, client.connect()];
237
268
  case 1:
238
- _f.sent();
269
+ _e.sent();
239
270
  mongoDb = client.db('test');
240
271
  db = new remult_mongo_1.MongoDataProvider(mongoDb, client, {
241
272
  disableTransactions: true,
@@ -253,63 +284,160 @@ it('test mongo without transaction', function () { return tslib_1.__awaiter(void
253
284
  title: remult3_1.Fields.string(),
254
285
  });
255
286
  repo = remult.repo(entity);
256
- _f.label = 2;
287
+ _e.label = 2;
257
288
  case 2:
258
- _f.trys.push([2, 8, 9, 10]);
289
+ _e.trys.push([2, 8, 9, 10]);
259
290
  return [4 /*yield*/, repo.find()];
260
291
  case 3:
261
- _a = tslib_1.__values.apply(void 0, [_f.sent()]), _b = _a.next();
262
- _f.label = 4;
292
+ _a = tslib_1.__values.apply(void 0, [_e.sent()]), _b = _a.next();
293
+ _e.label = 4;
263
294
  case 4:
264
295
  if (!!_b.done) return [3 /*break*/, 7];
265
296
  item = _b.value;
266
297
  return [4 /*yield*/, repo.delete(item)];
267
298
  case 5:
268
- _f.sent();
269
- _f.label = 6;
299
+ _e.sent();
300
+ _e.label = 6;
270
301
  case 6:
271
302
  _b = _a.next();
272
303
  return [3 /*break*/, 4];
273
304
  case 7: return [3 /*break*/, 10];
274
305
  case 8:
275
- e_1_1 = _f.sent();
306
+ e_1_1 = _e.sent();
276
307
  e_1 = { error: e_1_1 };
277
308
  return [3 /*break*/, 10];
278
309
  case 9:
279
310
  try {
280
- if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
311
+ if (_b && !_b.done && (_d = _a.return)) _d.call(_a);
281
312
  }
282
313
  finally { if (e_1) throw e_1.error; }
283
314
  return [7 /*endfinally*/];
284
315
  case 10: return [4 /*yield*/, repo.insert({ id: 1, title: 'a' })];
285
316
  case 11:
286
- _f.sent();
287
- _f.label = 12;
317
+ _e.sent();
318
+ _e.label = 12;
288
319
  case 12:
289
- _f.trys.push([12, 14, , 15]);
290
- return [4 /*yield*/, db.transaction(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
320
+ _e.trys.push([12, 14, , 15]);
321
+ return [4 /*yield*/, db.transaction(function (dbWithTrans) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
291
322
  return tslib_1.__generator(this, function (_a) {
292
323
  switch (_a.label) {
293
- case 0: return [4 /*yield*/, repo.insert({ id: 2, title: 'b' })];
324
+ case 0: return [4 /*yield*/, new context_1.Remult(dbWithTrans).repo(entity).insert({ id: 2, title: 'b' })];
294
325
  case 1:
295
326
  _a.sent();
296
- throw new Error();
327
+ throw 'Error';
297
328
  }
298
329
  });
299
330
  }); })];
300
331
  case 13:
301
- _f.sent();
332
+ _e.sent();
302
333
  return [3 /*break*/, 15];
303
334
  case 14:
304
- _c = _f.sent();
335
+ err_1 = _e.sent();
336
+ expect(err_1).toBe('Error');
305
337
  return [3 /*break*/, 15];
306
338
  case 15:
307
- _d = expect;
339
+ _c = expect;
308
340
  return [4 /*yield*/, repo.count()];
309
341
  case 16:
310
- _d.apply(void 0, [_f.sent()]).toBe(2);
342
+ _c.apply(void 0, [_e.sent()]).toBe(2);
311
343
  return [2 /*return*/];
312
344
  }
313
345
  });
314
346
  }); });
347
+ exports.testMongoNoTrans('transactions mongo no trans', function (_a) {
348
+ var db = _a.db, createEntity = _a.createEntity;
349
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
350
+ var x, err_2, _b;
351
+ return tslib_1.__generator(this, function (_c) {
352
+ switch (_c.label) {
353
+ case 0: return [4 /*yield*/, createEntity(remult_3_entities_1.Categories)];
354
+ case 1:
355
+ x = _c.sent();
356
+ _c.label = 2;
357
+ case 2:
358
+ _c.trys.push([2, 4, , 5]);
359
+ return [4 /*yield*/, db.transaction(function (db) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
360
+ var remult, _a;
361
+ return tslib_1.__generator(this, function (_b) {
362
+ switch (_b.label) {
363
+ case 0:
364
+ remult = new context_1.Remult(db);
365
+ return [4 /*yield*/, remult.repo(remult_3_entities_1.Categories).insert({ categoryName: 'testing' })];
366
+ case 1:
367
+ _b.sent();
368
+ _a = expect;
369
+ return [4 /*yield*/, remult.repo(remult_3_entities_1.Categories).count()];
370
+ case 2:
371
+ _a.apply(void 0, [_b.sent()]).toBe(1);
372
+ throw 'Fail';
373
+ }
374
+ });
375
+ }); })];
376
+ case 3:
377
+ _c.sent();
378
+ return [3 /*break*/, 5];
379
+ case 4:
380
+ err_2 = _c.sent();
381
+ expect(err_2).toBe('Fail');
382
+ return [3 /*break*/, 5];
383
+ case 5:
384
+ _b = expect;
385
+ return [4 /*yield*/, x.count()];
386
+ case 6:
387
+ _b.apply(void 0, [_c.sent()]).toBe(1);
388
+ return [2 /*return*/];
389
+ }
390
+ });
391
+ });
392
+ }, false);
393
+ exports.testMongoNoTrans('test Dates', function (_a) {
394
+ var createEntity = _a.createEntity;
395
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
396
+ var c, r, x, client, mongoDb, _b, _c, _d, _e, _f, _g;
397
+ return tslib_1.__generator(this, function (_h) {
398
+ switch (_h.label) {
399
+ case 0:
400
+ c = /** @class */ (function () {
401
+ function class_2() {
402
+ }
403
+ return class_2;
404
+ }());
405
+ DecoratorReplacer_1.describeClass(c, remult3_1.Entity('test_dates_on_mongo'), {
406
+ id: remult3_1.Fields.integer(),
407
+ date: remult3_1.Fields.date(),
408
+ });
409
+ return [4 /*yield*/, createEntity(c)];
410
+ case 1:
411
+ r = _h.sent();
412
+ return [4 /*yield*/, r.insert({ id: 1, date: new Date(1976, 5, 16) })];
413
+ case 2:
414
+ x = _h.sent();
415
+ client = new mongodb_1.MongoClient('mongodb://localhost:27017/local');
416
+ return [4 /*yield*/, client.connect()];
417
+ case 3:
418
+ _h.sent();
419
+ mongoDb = client.db('test');
420
+ _b = expect;
421
+ _d = (_c = mongoDb).collection;
422
+ return [4 /*yield*/, r.metadata.getDbName()];
423
+ case 4: return [4 /*yield*/, _d.apply(_c, [_h.sent()]).findOne()];
424
+ case 5:
425
+ _b.apply(void 0, [(_h.sent())
426
+ .date instanceof Date]).toBe(true);
427
+ x.date = new Date(1978, 2, 15);
428
+ return [4 /*yield*/, r.save(x)];
429
+ case 6:
430
+ _h.sent();
431
+ _e = expect;
432
+ _g = (_f = mongoDb).collection;
433
+ return [4 /*yield*/, r.metadata.getDbName()];
434
+ case 7: return [4 /*yield*/, _g.apply(_f, [_h.sent()]).findOne()];
435
+ case 8:
436
+ _e.apply(void 0, [(_h.sent())
437
+ .date instanceof Date]).toBe(true);
438
+ return [2 /*return*/];
439
+ }
440
+ });
441
+ });
442
+ }, false);
315
443
  require("../shared-tests");
@@ -12,7 +12,9 @@ export declare function addDatabaseToTest(tester: dbTestMethodSignature, key?: s
12
12
  export declare function testInMemory(key: string, what: dbTestWhatSignature, focus?: boolean): void;
13
13
  export declare const TestDbs: {
14
14
  restDataProvider: string;
15
+ webSql: string;
15
16
  mongo: string;
17
+ mongoNoTrans: string;
16
18
  inMemory: string;
17
19
  };
18
20
  export declare type dbTestWhatSignature = (db: {
@@ -87,7 +87,9 @@ function testInMemory(key, what, focus) {
87
87
  exports.testInMemory = testInMemory;
88
88
  exports.TestDbs = {
89
89
  restDataProvider: 'restDataProvider',
90
+ webSql: 'webSql',
90
91
  mongo: 'mongo',
92
+ mongoNoTrans: 'mongoNoTrans',
91
93
  inMemory: 'in memory',
92
94
  };
93
95
  addDatabaseToTest(testInMemory, exports.TestDbs.inMemory);
@@ -1814,20 +1814,20 @@ db_tests_setup_1.testAll('task with enum string', function (_a) {
1814
1814
  db_tests_setup_1.testAll('test transaction rollback', function (_a) {
1815
1815
  var db = _a.db, createEntity = _a.createEntity;
1816
1816
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1817
- var fail, r, _b, _c;
1818
- return tslib_1.__generator(this, function (_d) {
1819
- switch (_d.label) {
1817
+ var fail, r, err_3, _b;
1818
+ return tslib_1.__generator(this, function (_c) {
1819
+ switch (_c.label) {
1820
1820
  case 0:
1821
1821
  fail = true;
1822
1822
  return [4 /*yield*/, createEntity(stam)];
1823
1823
  case 1:
1824
- r = _d.sent();
1824
+ r = _c.sent();
1825
1825
  return [4 /*yield*/, r.insert({ title: 'task b', id: 1 })];
1826
1826
  case 2:
1827
- _d.sent();
1828
- _d.label = 3;
1827
+ _c.sent();
1828
+ _c.label = 3;
1829
1829
  case 3:
1830
- _d.trys.push([3, 5, , 6]);
1830
+ _c.trys.push([3, 5, , 6]);
1831
1831
  return [4 /*yield*/, db.transaction(function (db) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1832
1832
  var remultWithTransaction, _a;
1833
1833
  return tslib_1.__generator(this, function (_b) {
@@ -1846,23 +1846,116 @@ db_tests_setup_1.testAll('test transaction rollback', function (_a) {
1846
1846
  });
1847
1847
  }); })];
1848
1848
  case 4:
1849
- _d.sent();
1849
+ _c.sent();
1850
1850
  fail = false;
1851
1851
  return [3 /*break*/, 6];
1852
1852
  case 5:
1853
- _b = _d.sent();
1853
+ err_3 = _c.sent();
1854
+ expect(err_3).toBe('error');
1854
1855
  return [3 /*break*/, 6];
1855
1856
  case 6:
1856
- _c = expect;
1857
+ _b = expect;
1857
1858
  return [4 /*yield*/, r.count()];
1858
1859
  case 7:
1859
- _c.apply(void 0, [_d.sent()]).toBe(1);
1860
+ _b.apply(void 0, [_c.sent()]).toBe(1);
1860
1861
  expect(fail).toBe(true);
1861
1862
  return [2 /*return*/];
1862
1863
  }
1863
1864
  });
1864
1865
  });
1865
- }, false, { exclude: [db_tests_setup_1.TestDbs.inMemory] });
1866
+ }, false, {
1867
+ exclude: [
1868
+ db_tests_setup_1.TestDbs.inMemory,
1869
+ db_tests_setup_1.TestDbs.mongoNoTrans,
1870
+ db_tests_setup_1.TestDbs.restDataProvider,
1871
+ db_tests_setup_1.TestDbs.webSql,
1872
+ ],
1873
+ });
1874
+ db_tests_setup_1.testAll('transactions', function (_a) {
1875
+ var db = _a.db, createEntity = _a.createEntity;
1876
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1877
+ var x;
1878
+ return tslib_1.__generator(this, function (_b) {
1879
+ switch (_b.label) {
1880
+ case 0: return [4 /*yield*/, createEntity(remult_3_entities_1.Categories)];
1881
+ case 1:
1882
+ x = _b.sent();
1883
+ return [4 /*yield*/, db.transaction(function (db) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1884
+ var remult, _a;
1885
+ return tslib_1.__generator(this, function (_b) {
1886
+ switch (_b.label) {
1887
+ case 0:
1888
+ remult = new context_1.Remult(db);
1889
+ _a = expect;
1890
+ return [4 /*yield*/, remult.repo(remult_3_entities_1.Categories).count()];
1891
+ case 1:
1892
+ _a.apply(void 0, [_b.sent()]).toBe(0);
1893
+ return [2 /*return*/];
1894
+ }
1895
+ });
1896
+ }); })];
1897
+ case 2:
1898
+ _b.sent();
1899
+ return [2 /*return*/];
1900
+ }
1901
+ });
1902
+ });
1903
+ }, false, {
1904
+ exclude: [db_tests_setup_1.TestDbs.mongoNoTrans, db_tests_setup_1.TestDbs.restDataProvider, db_tests_setup_1.TestDbs.webSql],
1905
+ });
1906
+ db_tests_setup_1.testAll('transactions 1', function (_a) {
1907
+ var db = _a.db, createEntity = _a.createEntity;
1908
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1909
+ var x, err_4, _b;
1910
+ return tslib_1.__generator(this, function (_c) {
1911
+ switch (_c.label) {
1912
+ case 0: return [4 /*yield*/, createEntity(remult_3_entities_1.Categories)];
1913
+ case 1:
1914
+ x = _c.sent();
1915
+ _c.label = 2;
1916
+ case 2:
1917
+ _c.trys.push([2, 4, , 5]);
1918
+ return [4 /*yield*/, db.transaction(function (db) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1919
+ var remult, _a;
1920
+ return tslib_1.__generator(this, function (_b) {
1921
+ switch (_b.label) {
1922
+ case 0:
1923
+ remult = new context_1.Remult(db);
1924
+ return [4 /*yield*/, remult.repo(remult_3_entities_1.Categories).insert({ categoryName: 'testing' })];
1925
+ case 1:
1926
+ _b.sent();
1927
+ _a = expect;
1928
+ return [4 /*yield*/, remult.repo(remult_3_entities_1.Categories).count()];
1929
+ case 2:
1930
+ _a.apply(void 0, [_b.sent()]).toBe(1);
1931
+ throw 'Fail';
1932
+ }
1933
+ });
1934
+ }); })];
1935
+ case 3:
1936
+ _c.sent();
1937
+ return [3 /*break*/, 5];
1938
+ case 4:
1939
+ err_4 = _c.sent();
1940
+ expect(err_4).toBe('Fail');
1941
+ return [3 /*break*/, 5];
1942
+ case 5:
1943
+ _b = expect;
1944
+ return [4 /*yield*/, x.count()];
1945
+ case 6:
1946
+ _b.apply(void 0, [_c.sent()]).toBe(0);
1947
+ return [2 /*return*/];
1948
+ }
1949
+ });
1950
+ });
1951
+ }, false, {
1952
+ exclude: [
1953
+ db_tests_setup_1.TestDbs.inMemory,
1954
+ db_tests_setup_1.TestDbs.mongoNoTrans,
1955
+ db_tests_setup_1.TestDbs.restDataProvider,
1956
+ db_tests_setup_1.TestDbs.webSql,
1957
+ ],
1958
+ });
1866
1959
  db_tests_setup_1.testAll('test date', function (_a) {
1867
1960
  var createEntity = _a.createEntity;
1868
1961
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
@@ -1968,7 +2061,7 @@ db_tests_setup_1.testAll('test contains with names with casing', function (_a) {
1968
2061
  });
1969
2062
  });
1970
2063
  }, false, {
1971
- exclude: [db_tests_setup_1.TestDbs.mongo],
2064
+ exclude: [db_tests_setup_1.TestDbs.mongo, db_tests_setup_1.TestDbs.mongoNoTrans],
1972
2065
  });
1973
2066
  db_tests_setup_1.testAll('test live query storage', function (x) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1974
2067
  var s, entityKey, id;
@@ -2218,7 +2311,7 @@ db_tests_setup_1.testAll('test json structure 3', function (_a) {
2218
2311
  });
2219
2312
  });
2220
2313
  }, false, {
2221
- exclude: [db_tests_setup_1.TestDbs.mongo],
2314
+ exclude: [db_tests_setup_1.TestDbs.mongo, db_tests_setup_1.TestDbs.mongoNoTrans],
2222
2315
  });
2223
2316
  db_tests_setup_1.testAll('test relation to number id', function (_a) {
2224
2317
  var createEntity = _a.createEntity;
@@ -2283,4 +2376,4 @@ db_tests_setup_1.testAll('test relation to number id', function (_a) {
2283
2376
  }
2284
2377
  });
2285
2378
  });
2286
- }, false, { exclude: [db_tests_setup_1.TestDbs.mongo] });
2379
+ }, false, { exclude: [db_tests_setup_1.TestDbs.mongo, db_tests_setup_1.TestDbs.mongoNoTrans] });
@@ -71,7 +71,7 @@ function testWebSqlImpl(key, what, focus) {
71
71
  }); }, focus);
72
72
  }
73
73
  exports.testWebSqlImpl = testWebSqlImpl;
74
- db_tests_setup_1.addDatabaseToTest(testWebSqlImpl);
74
+ db_tests_setup_1.addDatabaseToTest(testWebSqlImpl, db_tests_setup_1.TestDbs.webSql);
75
75
  function testRest(key, what, focus) {
76
76
  var _this = this;
77
77
  if (focus === void 0) { focus = false; }