@antelopejs/interface-database 0.0.4 → 0.1.1

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.
@@ -1,467 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const interface_database_1 = require("@antelopejs/interface-database");
4
- const chai_1 = require("chai");
5
- const orders_1 = require("./datasets/orders");
6
- const products_1 = require("./datasets/products");
7
- const users_1 = require("./datasets/users");
8
- const vehicles_1 = require("./datasets/vehicles");
9
- const vehiclesTableName = "vehicles";
10
- const singleTableSchema = new interface_database_1.Schema("test-rl-ops", { [vehiclesTableName]: vehicles_1.Vehicle }, { rowLevel: true });
11
- const t1Vehicles = singleTableSchema.instance("t1").table(vehiclesTableName);
12
- const t2Vehicles = singleTableSchema.instance("t2").table(vehiclesTableName);
13
- const ordersTableName = "orders";
14
- const usersTableName = "users";
15
- const productsTableName = "products";
16
- const multiTableSchema = new interface_database_1.Schema("test-rl-multi", {
17
- [ordersTableName]: orders_1.Order,
18
- [usersTableName]: users_1.User,
19
- [productsTableName]: products_1.Product,
20
- }, { rowLevel: true });
21
- const t1Orders = multiTableSchema.instance("t1").table(ordersTableName);
22
- const t1Users = multiTableSchema.instance("t1").table(usersTableName);
23
- const t1Products = multiTableSchema.instance("t1").table(productsTableName);
24
- const t2Orders = multiTableSchema.instance("t2").table(ordersTableName);
25
- const t2Users = multiTableSchema.instance("t2").table(usersTableName);
26
- const t2Products = multiTableSchema.instance("t2").table(productsTableName);
27
- let vehicleKeys = [];
28
- const usersData = (0, users_1.getUniqueUsers)();
29
- const ordersData = (0, orders_1.getUniqueOrders)();
30
- const productsData = (0, products_1.getUniqueProducts)();
31
- const multiKeys = { users: [], orders: [], products: [] };
32
- describe("Row-Level Single-Table Operations", () => {
33
- it("Insert + tenant_id stamp", InsertAndTenantStamp);
34
- it("Get by ID", GetById);
35
- it("GetAll by index", GetAllByIndex);
36
- it("GetAll multi-key by index", GetAllMultiKeyByIndex);
37
- it("GetAll multi-key by primary keys", GetAllMultiKeyByPrimaryKey);
38
- it("Tenant isolation", TenantIsolation);
39
- it("Filter by equality", FilterByEquality);
40
- it("Filter by comparison", FilterByComparison);
41
- it("Filter by boolean", FilterByBoolean);
42
- it("OrderBy ascending", OrderByAscending);
43
- it("OrderBy descending", OrderByDescending);
44
- it("Count", Count);
45
- it("Count field", CountField);
46
- it("Sum", Sum);
47
- it("Avg", Avg);
48
- it("Min", Min);
49
- it("Max", Max);
50
- it("Nth", Nth);
51
- it("Slice", Slice);
52
- it("Pluck", Pluck);
53
- it("Without", Without);
54
- it("Distinct with field", DistinctWithField);
55
- it("Distinct without field", DistinctWithoutField);
56
- it("Between", Between);
57
- it("Between + filter", BetweenPlusFilter);
58
- it("Update scoped", UpdateScoped);
59
- it("Update with expression (numeric)", UpdateWithExpressionNumeric);
60
- it("Update with expression (single selection)", UpdateWithExpressionOnSingleSelection);
61
- it("Update with expression (mixed)", UpdateWithExpressionMixed);
62
- it("Replace scoped", ReplaceScoped);
63
- it("Delete scoped", DeleteScoped);
64
- after(async () => {
65
- await t1Vehicles.delete().run();
66
- await t2Vehicles.delete().run();
67
- });
68
- });
69
- async function InsertAndTenantStamp() {
70
- const keys = await t1Vehicles.insert(vehicles_1.vehicles).run();
71
- (0, chai_1.expect)(keys).to.have.lengthOf(vehicles_1.vehicles.length);
72
- vehicleKeys = keys;
73
- const doc = await t1Vehicles.get(keys[0]).run();
74
- (0, chai_1.expect)(doc).to.have.property("tenant_id", "t1");
75
- (0, chai_1.expect)(doc).to.have.property("car", vehicles_1.vehicles[0].car);
76
- }
77
- async function GetById() {
78
- const doc = await t1Vehicles.get(vehicleKeys[0]).run();
79
- (0, chai_1.expect)(doc).to.have.property("_id", vehicleKeys[0]);
80
- (0, chai_1.expect)(doc).to.have.property("car", vehicles_1.vehicles[0].car);
81
- (0, chai_1.expect)(doc).to.have.property("price", vehicles_1.vehicles[0].price);
82
- }
83
- async function GetAllByIndex() {
84
- const result = await t1Vehicles.getAll(false, "isElectric").run();
85
- const expectedCount = vehicles_1.vehicles.filter((v) => !v.isElectric).length;
86
- (0, chai_1.expect)(result).to.have.lengthOf(expectedCount);
87
- result.forEach((doc) => {
88
- (0, chai_1.expect)(doc.isElectric).to.equal(false);
89
- });
90
- }
91
- const TARGET_PRICES = [3000, 0];
92
- async function GetAllMultiKeyByIndex() {
93
- const result = await t1Vehicles.getAll(TARGET_PRICES, "price").run();
94
- const expectedCount = vehicles_1.vehicles.filter((v) => TARGET_PRICES.includes(v.price)).length;
95
- (0, chai_1.expect)(result).to.have.lengthOf(expectedCount);
96
- result.forEach((doc) => {
97
- (0, chai_1.expect)(TARGET_PRICES).to.include(doc.price);
98
- });
99
- }
100
- async function GetAllMultiKeyByPrimaryKey() {
101
- const targetKeys = [vehicleKeys[0], vehicleKeys[2]];
102
- const result = await t1Vehicles.getAll(targetKeys).run();
103
- (0, chai_1.expect)(result).to.have.lengthOf(targetKeys.length);
104
- result.forEach((doc) => {
105
- (0, chai_1.expect)(targetKeys).to.include(doc._id);
106
- });
107
- }
108
- async function TenantIsolation() {
109
- const t2Data = [
110
- {
111
- car: "BMW",
112
- manufactured: new Date("2020-01-01"),
113
- price: 40000,
114
- isElectric: true,
115
- kilometers: 5000,
116
- },
117
- ];
118
- await t2Vehicles.insert(t2Data).run();
119
- const t1Docs = await t1Vehicles.run();
120
- const t2Docs = await t2Vehicles.run();
121
- (0, chai_1.expect)(t1Docs).to.have.lengthOf(vehicles_1.vehicles.length);
122
- (0, chai_1.expect)(t2Docs).to.have.lengthOf(1);
123
- (0, chai_1.expect)(t2Docs[0].car).to.equal("BMW");
124
- const t1Cars = t1Docs.map((d) => d.car).sort();
125
- (0, chai_1.expect)(t1Cars).to.not.include("BMW");
126
- }
127
- async function FilterByEquality() {
128
- const result = await t1Vehicles
129
- .filter((doc) => doc.key("car").eq("Peugeot"))
130
- .run();
131
- const expectedCount = vehicles_1.vehicles.filter((v) => v.car === "Peugeot").length;
132
- (0, chai_1.expect)(result).to.have.lengthOf(expectedCount);
133
- result.forEach((doc) => {
134
- (0, chai_1.expect)(doc.car).to.equal("Peugeot");
135
- });
136
- }
137
- async function FilterByComparison() {
138
- const result = await t1Vehicles.filter((doc) => doc.key("price").gt(0)).run();
139
- const expectedCount = vehicles_1.vehicles.filter((v) => v.price > 0).length;
140
- (0, chai_1.expect)(result).to.have.lengthOf(expectedCount);
141
- result.forEach((doc) => {
142
- (0, chai_1.expect)(doc.price).to.be.greaterThan(0);
143
- });
144
- }
145
- async function FilterByBoolean() {
146
- const result = await t1Vehicles
147
- .filter((doc) => doc.key("isElectric").eq(true))
148
- .run();
149
- const expectedCount = vehicles_1.vehicles.filter((v) => v.isElectric).length;
150
- (0, chai_1.expect)(result).to.have.lengthOf(expectedCount);
151
- result.forEach((doc) => {
152
- (0, chai_1.expect)(doc.isElectric).to.equal(true);
153
- });
154
- }
155
- async function OrderByAscending() {
156
- const result = await t1Vehicles.orderBy("price", "asc").run();
157
- const sorted = [...vehicles_1.vehicles].sort((a, b) => a.price - b.price);
158
- (0, chai_1.expect)(result).to.have.lengthOf(vehicles_1.vehicles.length);
159
- result.forEach((doc, i) => {
160
- (0, chai_1.expect)(doc.price).to.equal(sorted[i].price);
161
- });
162
- }
163
- async function OrderByDescending() {
164
- const result = await t1Vehicles.orderBy("price", "desc").run();
165
- const sorted = [...vehicles_1.vehicles].sort((a, b) => b.price - a.price);
166
- (0, chai_1.expect)(result).to.have.lengthOf(vehicles_1.vehicles.length);
167
- result.forEach((doc, i) => {
168
- (0, chai_1.expect)(doc.price).to.equal(sorted[i].price);
169
- });
170
- }
171
- async function Count() {
172
- const result = await t1Vehicles.count().run();
173
- (0, chai_1.expect)(result).to.equal(vehicles_1.vehicles.length);
174
- }
175
- async function CountField() {
176
- const result = await t1Vehicles.count("car").run();
177
- const expectedDistinctCars = new Set(vehicles_1.vehicles.map((v) => v.car)).size;
178
- (0, chai_1.expect)(result).to.equal(expectedDistinctCars);
179
- }
180
- async function Sum() {
181
- const result = await t1Vehicles.sum("price").run();
182
- const expectedSum = vehicles_1.vehicles.reduce((acc, v) => acc + v.price, 0);
183
- (0, chai_1.expect)(result).to.equal(expectedSum);
184
- }
185
- async function Avg() {
186
- const result = await t1Vehicles.avg("price").run();
187
- const expectedAvg = vehicles_1.vehicles.reduce((acc, v) => acc + v.price, 0) / vehicles_1.vehicles.length;
188
- (0, chai_1.expect)(result).to.be.closeTo(expectedAvg, 0.01);
189
- }
190
- async function Min() {
191
- const result = await t1Vehicles.min("price").run();
192
- const expectedMin = Math.min(...vehicles_1.vehicles.map((v) => v.price));
193
- (0, chai_1.expect)(result).to.equal(expectedMin);
194
- }
195
- async function Max() {
196
- const result = await t1Vehicles.max("price").run();
197
- const expectedMax = Math.max(...vehicles_1.vehicles.map((v) => v.price));
198
- (0, chai_1.expect)(result).to.equal(expectedMax);
199
- }
200
- async function Nth() {
201
- const sorted = [...vehicles_1.vehicles].sort((a, b) => a.price - b.price);
202
- const result = await t1Vehicles.orderBy("price", "asc").nth(0).run();
203
- (0, chai_1.expect)(result).to.be.an("object");
204
- (0, chai_1.expect)(result).to.not.be.an("array");
205
- (0, chai_1.expect)(result).to.have.property("price", sorted[0].price);
206
- }
207
- async function Slice() {
208
- const sorted = [...vehicles_1.vehicles].sort((a, b) => a.price - b.price);
209
- const result = await t1Vehicles.orderBy("price", "asc").slice(0, 2).run();
210
- (0, chai_1.expect)(result).to.be.an("array");
211
- (0, chai_1.expect)(result).to.have.lengthOf(2);
212
- (0, chai_1.expect)(result[0].price).to.equal(sorted[0].price);
213
- (0, chai_1.expect)(result[1].price).to.equal(sorted[1].price);
214
- }
215
- async function Pluck() {
216
- const result = await t1Vehicles.pluck("car", "price").run();
217
- (0, chai_1.expect)(result).to.have.lengthOf(vehicles_1.vehicles.length);
218
- result.forEach((doc) => {
219
- (0, chai_1.expect)(doc).to.have.property("car");
220
- (0, chai_1.expect)(doc).to.have.property("price");
221
- (0, chai_1.expect)(doc).to.not.have.property("isElectric");
222
- (0, chai_1.expect)(doc).to.not.have.property("kilometers");
223
- (0, chai_1.expect)(doc).to.not.have.property("tenant_id");
224
- });
225
- }
226
- async function Without() {
227
- const result = await t1Vehicles.without("kilometers").run();
228
- (0, chai_1.expect)(result).to.have.lengthOf(vehicles_1.vehicles.length);
229
- result.forEach((doc) => {
230
- (0, chai_1.expect)(doc).to.not.have.property("kilometers");
231
- (0, chai_1.expect)(doc).to.have.property("car");
232
- (0, chai_1.expect)(doc).to.have.property("price");
233
- (0, chai_1.expect)(doc).to.have.property("tenant_id");
234
- });
235
- }
236
- async function DistinctWithField() {
237
- const result = await t1Vehicles.distinct("isElectric").run();
238
- const expectedDistinct = [...new Set(vehicles_1.vehicles.map((v) => v.isElectric))];
239
- (0, chai_1.expect)(result).to.have.lengthOf(expectedDistinct.length);
240
- expectedDistinct.forEach((val) => {
241
- (0, chai_1.expect)(result).to.include(val);
242
- });
243
- }
244
- async function DistinctWithoutField() {
245
- const result = await t1Vehicles.distinct().run();
246
- (0, chai_1.expect)(result).to.have.lengthOf(vehicles_1.vehicles.length);
247
- result.forEach((doc) => {
248
- (0, chai_1.expect)(doc).to.have.property("car");
249
- (0, chai_1.expect)(doc).to.have.property("price");
250
- (0, chai_1.expect)(doc).to.have.property("isElectric");
251
- });
252
- }
253
- async function Between() {
254
- const result = await t1Vehicles.between("price", -1000, 3000).run();
255
- const expected = vehicles_1.vehicles.filter((v) => v.price >= -1000 && v.price < 3000);
256
- (0, chai_1.expect)(result).to.have.lengthOf(expected.length);
257
- result.forEach((doc) => {
258
- (0, chai_1.expect)(doc.price).to.be.gte(-1000);
259
- (0, chai_1.expect)(doc.price).to.be.lt(3000);
260
- });
261
- }
262
- async function BetweenPlusFilter() {
263
- const result = await t1Vehicles
264
- .between("price", -2000, 5000)
265
- .filter((doc) => doc.key("isElectric").eq(true))
266
- .run();
267
- const expected = vehicles_1.vehicles.filter((v) => v.price >= -2000 && v.price < 5000 && v.isElectric);
268
- (0, chai_1.expect)(result).to.have.lengthOf(expected.length);
269
- result.forEach((doc) => {
270
- (0, chai_1.expect)(doc.isElectric).to.equal(true);
271
- });
272
- }
273
- async function UpdateScoped() {
274
- const t2Before = await t2Vehicles.run();
275
- const t2PriceBefore = t2Before[0].price;
276
- await t1Vehicles
277
- .filter((doc) => doc.key("car").eq("Peugeot"))
278
- .update({ price: 1 })
279
- .run();
280
- const t2After = await t2Vehicles.run();
281
- (0, chai_1.expect)(t2After[0].price).to.equal(t2PriceBefore);
282
- const t1Updated = await t1Vehicles
283
- .filter((doc) => doc.key("car").eq("Peugeot"))
284
- .run();
285
- for (const doc of t1Updated) {
286
- (0, chai_1.expect)(doc.price).to.equal(1);
287
- }
288
- }
289
- async function UpdateWithExpressionNumeric() {
290
- // After UpdateScoped, all Peugeot docs have price=1
291
- // Increment price by 100 using expression-based update
292
- const modified = await t1Vehicles
293
- .filter((doc) => doc.key("car").eq("Peugeot"))
294
- .update((doc) => ({ price: doc.key("price").add(100) }))
295
- .run();
296
- const peugeotCount = vehicles_1.vehicles.filter((v) => v.car === "Peugeot").length;
297
- (0, chai_1.expect)(modified).to.equal(peugeotCount);
298
- const updated = await t1Vehicles
299
- .filter((doc) => doc.key("car").eq("Peugeot"))
300
- .run();
301
- for (const doc of updated) {
302
- (0, chai_1.expect)(doc.price).to.equal(101); // was 1, now 1 + 100
303
- }
304
- }
305
- async function UpdateWithExpressionOnSingleSelection() {
306
- // Test expression-based update on SingleSelection (via .get())
307
- const modified = await t1Vehicles
308
- .get(vehicleKeys[0])
309
- .update((doc) => ({ kilometers: doc.key("kilometers").mul(2) }))
310
- .run();
311
- (0, chai_1.expect)(modified).to.equal(1);
312
- const updated = await t1Vehicles.get(vehicleKeys[0]).run();
313
- // After UpdateScoped set price=1 and UpdateWithExpressionNumeric set price=101,
314
- // the first vehicle was originally a Peugeot which was replaced in ReplaceScoped...
315
- // but ReplaceScoped runs later. At this point vehicleKeys[0] still has its original kilometers.
316
- // After UpdateScoped, Peugeot docs got price=1. vehicleKeys[0] is a Peugeot.
317
- // Original kilometers for Peugeot: 9876543210, now doubled.
318
- (0, chai_1.expect)(updated.kilometers).to.equal(9876543210 * 2);
319
- }
320
- async function UpdateWithExpressionMixed() {
321
- // Mix plain values and expressions
322
- const modified = await t1Vehicles
323
- .filter((doc) => doc.key("car").eq("Peugeot"))
324
- .update((doc) => ({
325
- price: doc.key("price").add(500),
326
- isElectric: true,
327
- }))
328
- .run();
329
- const peugeotCount = vehicles_1.vehicles.filter((v) => v.car === "Peugeot").length;
330
- (0, chai_1.expect)(modified).to.equal(peugeotCount);
331
- const updated = await t1Vehicles
332
- .filter((doc) => doc.key("car").eq("Peugeot"))
333
- .run();
334
- for (const doc of updated) {
335
- (0, chai_1.expect)(doc.price).to.equal(601); // was 101, now 101 + 500
336
- (0, chai_1.expect)(doc.isElectric).to.equal(true);
337
- }
338
- }
339
- async function ReplaceScoped() {
340
- const replacementData = {
341
- car: "Fiat",
342
- manufactured: new Date("2022-06-15"),
343
- price: 12000,
344
- isElectric: false,
345
- kilometers: 50000,
346
- };
347
- const t2Before = await t2Vehicles.run();
348
- const t2CountBefore = t2Before.length;
349
- await t1Vehicles.get(vehicleKeys[0]).replace(replacementData).run();
350
- const replaced = await t1Vehicles.get(vehicleKeys[0]).run();
351
- (0, chai_1.expect)(replaced).to.have.property("car", "Fiat");
352
- (0, chai_1.expect)(replaced).to.have.property("tenant_id", "t1");
353
- const t2After = await t2Vehicles.run();
354
- (0, chai_1.expect)(t2After).to.have.lengthOf(t2CountBefore);
355
- }
356
- async function DeleteScoped() {
357
- const t2CountBefore = await t2Vehicles.count().run();
358
- await t1Vehicles.delete().run();
359
- const t1Remaining = await t1Vehicles.run();
360
- (0, chai_1.expect)(t1Remaining).to.have.lengthOf(0);
361
- const t2CountAfter = await t2Vehicles.count().run();
362
- (0, chai_1.expect)(t2CountAfter).to.equal(t2CountBefore);
363
- }
364
- describe("Row-Level Multi-Table Operations", () => {
365
- it("Insert multi-table", InsertMultiTable);
366
- it("Group with aggregations", GroupWithAggregations);
367
- it("Inner join", InnerJoin);
368
- it("Lookup", Lookup);
369
- it("Map with merge", MapWithMerge);
370
- it("Do with sub-query", DoWithSubQuery);
371
- after(async () => {
372
- await t1Orders.delete().run();
373
- await t1Users.delete().run();
374
- await t1Products.delete().run();
375
- await t2Orders.delete().run();
376
- await t2Users.delete().run();
377
- await t2Products.delete().run();
378
- });
379
- });
380
- async function InsertMultiTable() {
381
- multiKeys.users = await t1Users.insert(usersData).run();
382
- multiKeys.orders = await t1Orders.insert(ordersData).run();
383
- multiKeys.products = await t1Products.insert(productsData).run();
384
- (0, chai_1.expect)(multiKeys.users).to.have.lengthOf(usersData.length);
385
- (0, chai_1.expect)(multiKeys.orders).to.have.lengthOf(ordersData.length);
386
- (0, chai_1.expect)(multiKeys.products).to.have.lengthOf(productsData.length);
387
- const t2UserCount = await t2Users.count().run();
388
- const t2OrderCount = await t2Orders.count().run();
389
- const t2ProductCount = await t2Products.count().run();
390
- (0, chai_1.expect)(t2UserCount).to.equal(0);
391
- (0, chai_1.expect)(t2OrderCount).to.equal(0);
392
- (0, chai_1.expect)(t2ProductCount).to.equal(0);
393
- }
394
- async function GroupWithAggregations() {
395
- const result = await t1Orders
396
- .group("deliveryType", (stream, group) => ({
397
- deliveryType: group,
398
- orderCount: stream.count(),
399
- totalRevenue: stream.sum("totalAmount"),
400
- }))
401
- .run();
402
- const expectedGroupCount = new Set(ordersData.map((o) => o.deliveryType))
403
- .size;
404
- (0, chai_1.expect)(result).to.have.lengthOf(expectedGroupCount);
405
- const expressGroup = result.find((item) => item.deliveryType === "express");
406
- const expectedExpressCount = ordersData.filter((o) => o.deliveryType === "express").length;
407
- (0, chai_1.expect)(expressGroup?.orderCount).to.equal(expectedExpressCount);
408
- const expectedExpressRevenue = ordersData
409
- .filter((o) => o.deliveryType === "express")
410
- .reduce((sum, o) => sum + o.totalAmount, 0);
411
- (0, chai_1.expect)(expressGroup?.totalRevenue).to.equal(expectedExpressRevenue);
412
- }
413
- async function InnerJoin() {
414
- const result = await t1Orders
415
- .joinInner(t1Users, (left, right) => left.key("customerEmail").eq(right.key("email")), (left, right) => left.merge({ customer: right }))
416
- .run();
417
- (0, chai_1.expect)(result).to.be.an("array");
418
- (0, chai_1.expect)(result).to.have.lengthOf(usersData.length);
419
- result.forEach((doc) => {
420
- (0, chai_1.expect)(doc).to.have.property("customerEmail");
421
- (0, chai_1.expect)(doc).to.have.property("customer");
422
- (0, chai_1.expect)(doc.customerEmail).to.equal(doc.customer?.email);
423
- });
424
- }
425
- async function Lookup() {
426
- const result = await t1Orders.lookup(t1Users, "customerName", "name").run();
427
- (0, chai_1.expect)(result).to.have.lengthOf(ordersData.length);
428
- result.forEach((doc) => {
429
- (0, chai_1.expect)(doc).to.have.property("customerName");
430
- (0, chai_1.expect)(doc.customerName).to.be.an("object");
431
- (0, chai_1.expect)(doc.customerName).to.have.property("name");
432
- });
433
- const antoineOrder = result.find((doc) => doc.orderId === "ORD-001");
434
- (0, chai_1.expect)(antoineOrder).to.not.equal(undefined);
435
- (0, chai_1.expect)(antoineOrder?.customerName).to.have.property("name", "Antoine");
436
- }
437
- async function MapWithMerge() {
438
- const result = await t1Orders
439
- .map((row) => row.merge({
440
- orderSummary: {
441
- totalAmount: row.key("totalAmount"),
442
- isPaid: row.key("isPaid"),
443
- },
444
- }))
445
- .run();
446
- (0, chai_1.expect)(result).to.have.lengthOf(ordersData.length);
447
- result.forEach((doc) => {
448
- (0, chai_1.expect)(doc).to.have.property("orderSummary");
449
- (0, chai_1.expect)(doc.orderSummary).to.have.property("totalAmount");
450
- (0, chai_1.expect)(doc.orderSummary).to.have.property("isPaid");
451
- });
452
- }
453
- async function DoWithSubQuery() {
454
- const result = await t1Users
455
- .get(multiKeys.users[0])
456
- .do((u) => u.merge({
457
- otherSkills: t1Users.get(multiKeys.users[1]).key("skills"),
458
- }))
459
- .run();
460
- (0, chai_1.expect)(result).to.be.an("object");
461
- (0, chai_1.expect)(result).to.have.property("name", usersData[0].name);
462
- (0, chai_1.expect)(result).to.have.property("otherSkills");
463
- (0, chai_1.expect)(result.otherSkills).to.be.an("array");
464
- const expectedSkills = usersData[1].skills || [];
465
- (0, chai_1.expect)(result.otherSkills).to.have.lengthOf(expectedSkills.length);
466
- }
467
- //# sourceMappingURL=row_level_operations.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"row_level_operations.test.js","sourceRoot":"","sources":["../../src/tests/row_level_operations.test.ts"],"names":[],"mappings":"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"}