backend-plus 2.7.0-beta.2 → 2.7.0-beta.3

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.
@@ -0,0 +1,325 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const best_globals_1 = require("best-globals");
13
+ require("mocha");
14
+ const my_websqldb_1 = require("../for-client/my-websqldb");
15
+ function compare(obtained, expected) {
16
+ expect(obtained).to.eql(expected);
17
+ return true;
18
+ }
19
+ before(function () {
20
+ // @ts-ignore
21
+ window.myOwn = window.myOwn || {};
22
+ // @ts-ignore
23
+ window.myOwn.config = window.myOwn.config || {};
24
+ // @ts-ignore
25
+ window.myOwn.config.useragent = new UserAgent().parse(window.navigator.userAgent);
26
+ });
27
+ describe("websql-db", function () {
28
+ var ldb;
29
+ before(function () {
30
+ this.timeout(10000);
31
+ ldb = new my_websqldb_1.WebsqlDb("the-test-name" + Math.random());
32
+ });
33
+ after(function () {
34
+ //ldb.close();
35
+ });
36
+ describe("structures", function () {
37
+ it("put and get structure", function () {
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ this.timeout(10000);
40
+ var tableDef = {
41
+ name: 'this_name',
42
+ fields: [
43
+ { name: 'pk1', typeName: 'text' }
44
+ ],
45
+ primaryKey: ['pk1']
46
+ };
47
+ yield ldb.registerStructure(tableDef);
48
+ var newTableDef = yield ldb.getStructure(tableDef.name);
49
+ compare(tableDef, newTableDef);
50
+ });
51
+ });
52
+ it("check if exists and exists", function () {
53
+ return __awaiter(this, void 0, void 0, function* () {
54
+ this.timeout(10000);
55
+ var tableDef = {
56
+ name: 'this_name',
57
+ fields: [
58
+ { name: 'pk1', typeName: 'text' }
59
+ ],
60
+ primaryKey: ['pk1']
61
+ };
62
+ var exists = yield ldb.existsStructure(tableDef.name);
63
+ compare(true, exists);
64
+ });
65
+ });
66
+ it("check if exists and not exists", function () {
67
+ return __awaiter(this, void 0, void 0, function* () {
68
+ this.timeout(10000);
69
+ var tableDef = {
70
+ name: 'inexistent_this_name',
71
+ fields: [
72
+ { name: 'pk1', typeName: 'text' }
73
+ ],
74
+ primaryKey: ['pk1']
75
+ };
76
+ var exists = yield ldb.existsStructure(tableDef.name);
77
+ compare(false, exists);
78
+ });
79
+ });
80
+ it("check empty structure", function () {
81
+ return __awaiter(this, void 0, void 0, function* () {
82
+ this.timeout(10000);
83
+ var tableDef = {
84
+ name: 'this_name',
85
+ fields: [
86
+ { name: 'pk1', typeName: 'text' }
87
+ ],
88
+ primaryKey: ['pk1']
89
+ };
90
+ var isEmpty = yield ldb.isEmpty(tableDef.name);
91
+ compare(true, isEmpty);
92
+ });
93
+ });
94
+ it("reput and get structure", function () {
95
+ return __awaiter(this, void 0, void 0, function* () {
96
+ this.timeout(10000);
97
+ var tableDef = {
98
+ name: 'this_name',
99
+ fields: [
100
+ { name: 'pk1', typeName: 'text' },
101
+ { name: 'field1', typeName: 'text' }
102
+ ],
103
+ primaryKey: ['pk1']
104
+ };
105
+ yield ldb.registerStructure(tableDef);
106
+ var newTableDef = yield ldb.getStructure(tableDef.name);
107
+ compare(tableDef, newTableDef);
108
+ });
109
+ });
110
+ it("put another structure", function () {
111
+ return __awaiter(this, void 0, void 0, function* () {
112
+ this.timeout(10000);
113
+ var tableDef = {
114
+ name: 'other_name',
115
+ fields: [
116
+ { name: 'pk2', typeName: 'text' }
117
+ ],
118
+ primaryKey: ['pk2']
119
+ };
120
+ yield ldb.registerStructure(tableDef);
121
+ var newTableDef = yield ldb.getStructure(tableDef.name);
122
+ compare(tableDef, newTableDef);
123
+ });
124
+ });
125
+ it("get all structures", function () {
126
+ return __awaiter(this, void 0, void 0, function* () {
127
+ this.timeout(10000);
128
+ var tableDef1 = yield ldb.getStructure('this_name');
129
+ var tableDef2 = yield ldb.getStructure('other_name');
130
+ var tableDefs = yield ldb.getAllStructures();
131
+ compare([tableDef1, tableDef2], tableDefs);
132
+ });
133
+ });
134
+ });
135
+ describe("data", function () {
136
+ var tableDef = {
137
+ name: 'phisical_quantities',
138
+ fields: [
139
+ { name: 'quantity', typeName: 'text' },
140
+ { name: 'preferedUnit', typeName: 'text' }
141
+ ],
142
+ primaryKey: ['quantity']
143
+ };
144
+ var mass = { quantity: 'mass', preferedUnit: 'g' };
145
+ var quantities = [
146
+ mass,
147
+ { quantity: 'time', preferedUnit: 's' },
148
+ { quantity: 'volume', preferedUnit: 'l' },
149
+ ];
150
+ before(function () {
151
+ return __awaiter(this, void 0, void 0, function* () {
152
+ yield ldb.registerStructure(tableDef);
153
+ });
154
+ });
155
+ it("put a value", function () {
156
+ return __awaiter(this, void 0, void 0, function* () {
157
+ var obtainedMass = yield ldb.putOne("phisical_quantities", mass);
158
+ compare(mass, obtainedMass);
159
+ });
160
+ });
161
+ it("put many", function () {
162
+ return __awaiter(this, void 0, void 0, function* () {
163
+ yield ldb.putMany("phisical_quantities", quantities.slice(1));
164
+ });
165
+ });
166
+ it("check empty structure", function () {
167
+ return __awaiter(this, void 0, void 0, function* () {
168
+ var count = yield ldb.isEmpty("phisical_quantities");
169
+ compare(false, count);
170
+ });
171
+ });
172
+ it("get one", function () {
173
+ return __awaiter(this, void 0, void 0, function* () {
174
+ var volume = yield ldb.getOne("phisical_quantities", ["volume"]);
175
+ compare(volume, quantities[2]);
176
+ });
177
+ });
178
+ it("get one if exists and exists", function () {
179
+ return __awaiter(this, void 0, void 0, function* () {
180
+ var time = yield ldb.getOneIfExists("phisical_quantities", ["time"]);
181
+ compare(time, quantities[1]);
182
+ });
183
+ });
184
+ it("get one if exists and do not exists", function () {
185
+ return __awaiter(this, void 0, void 0, function* () {
186
+ var undef = yield ldb.getOneIfExists("phisical_quantities", ["fourth dimension"]);
187
+ compare(undef, undefined);
188
+ });
189
+ });
190
+ it("get all", function () {
191
+ return __awaiter(this, void 0, void 0, function* () {
192
+ var all = yield ldb.getAll("phisical_quantities");
193
+ compare(all, quantities);
194
+ });
195
+ });
196
+ it("clear all", function () {
197
+ return __awaiter(this, void 0, void 0, function* () {
198
+ yield ldb.clear("phisical_quantities");
199
+ var all = yield ldb.getAll("phisical_quantities");
200
+ compare(all, []);
201
+ });
202
+ });
203
+ });
204
+ describe("childs", function () {
205
+ var tableDef = {
206
+ fields: [
207
+ { name: 'quantity', typeName: 'text' },
208
+ { name: 'unit', typeName: 'text' }
209
+ ],
210
+ name: 'units',
211
+ primaryKey: ['quantity', 'unit']
212
+ };
213
+ var volumeUnits = [
214
+ { quantity: 'volume', unit: 'ml' },
215
+ { quantity: 'volume', unit: 'l' },
216
+ { quantity: 'volume', unit: 'cm3' },
217
+ { quantity: 'volume', unit: 'm3' },
218
+ ];
219
+ var volumeUnitsSorted = [
220
+ { quantity: 'volume', unit: 'cm3' },
221
+ { quantity: 'volume', unit: 'l' },
222
+ { quantity: 'volume', unit: 'm3' },
223
+ { quantity: 'volume', unit: 'ml' },
224
+ ];
225
+ var massUnits = [
226
+ { quantity: 'mass', unit: 'g' },
227
+ { quantity: 'mass', unit: 'kg' },
228
+ { quantity: 'mass', unit: 'mg' },
229
+ ];
230
+ var timeUnits = [
231
+ { quantity: 'time', unit: 's' },
232
+ { quantity: 'time', unit: 'h' },
233
+ ];
234
+ var units = volumeUnits.concat(massUnits).concat(timeUnits);
235
+ before("", function () {
236
+ return __awaiter(this, void 0, void 0, function* () {
237
+ yield ldb.registerStructure(tableDef);
238
+ yield ldb.putMany("units", units);
239
+ });
240
+ });
241
+ it("get cm3", function () {
242
+ return __awaiter(this, void 0, void 0, function* () {
243
+ var obtainedVolumes = yield ldb.getOne("units", ["volume", "cm3"]);
244
+ compare(obtainedVolumes, volumeUnits[2]);
245
+ });
246
+ });
247
+ it("get volume childs", function () {
248
+ return __awaiter(this, void 0, void 0, function* () {
249
+ var obtainedVolumes = yield ldb.getChild("units", ["volume"]);
250
+ compare(obtainedVolumes, volumeUnitsSorted);
251
+ });
252
+ });
253
+ it("get mass childs", function () {
254
+ return __awaiter(this, void 0, void 0, function* () {
255
+ var obtainedMass = yield ldb.getChild("units", ["mass"]);
256
+ compare(obtainedMass, massUnits);
257
+ });
258
+ });
259
+ });
260
+ describe("foreignKeys", function () {
261
+ this.timeout(10000);
262
+ var unitsTableDef = {
263
+ name: 'units',
264
+ fields: [
265
+ { name: 'quantity', typeName: 'text' },
266
+ { name: 'unit', typeName: 'text' },
267
+ { name: 'description', typeName: 'text' }
268
+ ],
269
+ primaryKey: ['quantity', 'unit']
270
+ };
271
+ var productsTableDef = {
272
+ name: 'products',
273
+ fields: [
274
+ { name: 'product', typeName: 'text' },
275
+ { name: 'name', typeName: 'text' },
276
+ { name: 'price', typeName: 'decimal' },
277
+ { name: 'quantity_number', typeName: 'integer' },
278
+ { name: 'quantity', typeName: 'text' },
279
+ { name: 'unit', typeName: 'text' },
280
+ { name: 'units__description', typeName: 'text' }
281
+ ],
282
+ primaryKey: ['product'],
283
+ foreignKeys: [{ references: 'units', fields: [{ source: 'quantity', target: 'quantity' }, { source: 'unit', target: 'unit' }], displayFields: ['description'], alias: 'units' }]
284
+ };
285
+ var volumeUnits = [
286
+ { quantity: 'volume', unit: 'ml', description: 'millilitre' },
287
+ { quantity: 'volume', unit: 'l', description: 'litre' },
288
+ { quantity: 'volume', unit: 'cm3', description: 'cubic centimetre' },
289
+ { quantity: 'volume', unit: 'm3', description: 'cubic metre' },
290
+ ];
291
+ var massUnits = [
292
+ { quantity: 'mass', unit: 'g', description: 'gram' },
293
+ { quantity: 'mass', unit: 'kg', description: 'kilogram' },
294
+ { quantity: 'mass', unit: 'mg', description: 'milligram' },
295
+ ];
296
+ var timeUnits = [
297
+ { quantity: 'time', unit: 's', description: 'second' },
298
+ { quantity: 'time', unit: 'm', description: 'minute' },
299
+ { quantity: 'time', unit: 'h', description: 'hour' },
300
+ ];
301
+ var products = [
302
+ { product: 'P11111', name: 'Gaseosa', price: 35.50, quantity_number: 750, quantity: 'volume', unit: 'cm3', units__description: 'cubic centimetre' },
303
+ { product: 'P22222', name: 'Naranjas', price: 25, quantity_number: 1, quantity: 'mass', unit: 'kg', units__description: 'kilogram' },
304
+ { product: 'P33333', name: 'Pelicula', price: 150, quantity_number: 1.5, quantity: 'time', unit: 'h', units__description: 'hour' },
305
+ ];
306
+ var units = volumeUnits.concat(massUnits).concat(timeUnits);
307
+ before("", function () {
308
+ return __awaiter(this, void 0, void 0, function* () {
309
+ yield ldb.registerStructure(unitsTableDef);
310
+ yield ldb.registerStructure(productsTableDef);
311
+ yield ldb.putMany("units", units);
312
+ yield ldb.putMany("products", products);
313
+ });
314
+ });
315
+ it("get product and change unit", function () {
316
+ return __awaiter(this, void 0, void 0, function* () {
317
+ var myProduct = yield ldb.getOne("products", ["P11111"]);
318
+ myProduct.unit = 'ml';
319
+ var myChangedProduct = yield ldb.putOne("products", myProduct);
320
+ compare(myChangedProduct, (0, best_globals_1.changing)(products[0], { unit: 'ml', units__description: 'millilitre' }));
321
+ });
322
+ });
323
+ });
324
+ });
325
+ //# sourceMappingURL=karma-test-localdb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"karma-test-localdb.js","sourceRoot":"","sources":["karma-test-localdb.ts"],"names":[],"mappings":"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"}