pure-orm 2.0.0 → 2.3.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/README.md +36 -11
- package/examples/order-more/bo/customer.js +18 -0
- package/examples/order-more/bo/customers.js +9 -0
- package/examples/order-more/bo/line-item.js +33 -0
- package/examples/order-more/bo/line-items.js +9 -0
- package/examples/order-more/bo/order.js +49 -0
- package/examples/order-more/bo/orders.js +9 -0
- package/examples/order-more/bo/parcel-event.js +19 -0
- package/examples/order-more/bo/parcel-events.js +9 -0
- package/examples/order-more/bo/parcel-line-item.js +24 -0
- package/examples/order-more/bo/parcel-line-items.js +9 -0
- package/examples/order-more/bo/parcel.js +18 -0
- package/examples/order-more/bo/parcels.js +9 -0
- package/examples/order-more/bo/physical-address.js +30 -0
- package/examples/order-more/bo/physical-addresses.js +12 -0
- package/examples/order-more/bo/refund.js +28 -0
- package/examples/order-more/bo/refunds.js +9 -0
- package/examples/order-more/bo/utm-medium.js +13 -0
- package/examples/order-more/bo/utm-source.js +13 -0
- package/examples/order-more/business-objects.js +11 -1
- package/package.json +1 -1
- package/src/bo/base-bo.js +31 -18
- package/src/bo/base-bo.spec.js +180 -0
- package/test-utils/eleven/results.json +818 -0
- package/test-utils/nine/bo/base.js +5 -0
- package/test-utils/nine/bo/feature-switch.js +18 -0
- package/test-utils/nine/bo/feature-switches.js +12 -0
- package/test-utils/nine/business-objects.js +7 -0
- package/test-utils/nine/results.json +12 -0
- package/test-utils/ten/results.json +899 -0
- package/test-utils/twelve/bo/base.js +5 -0
- package/test-utils/twelve/bo/member.js +16 -0
- package/test-utils/twelve/bo/members.js +9 -0
- package/test-utils/twelve/bo/prompt.js +20 -0
- package/test-utils/twelve/bo/prompts.js +9 -0
- package/test-utils/twelve/business-objects.js +8 -0
- package/test-utils/twelve/results.json +8 -0
package/src/bo/base-bo.spec.js
CHANGED
|
@@ -2,7 +2,9 @@ const Order = require('../../examples/order/bo/order');
|
|
|
2
2
|
const Article = require('../../examples/blog/bo/article');
|
|
3
3
|
const Articles = require('../../examples/blog/bo/articles');
|
|
4
4
|
const InventoryLevel = require('../../examples/order-more/bo/inventory-level');
|
|
5
|
+
const OrderFull = require('../../examples/order-more/bo/order');
|
|
5
6
|
const Shipment = require('../../examples/order-more/bo/shipment');
|
|
7
|
+
const FeatureSwitch = require('../../test-utils/nine/bo/feature-switch');
|
|
6
8
|
const one = require('../../test-utils/one/results.json');
|
|
7
9
|
const two = require('../../test-utils/two/results');
|
|
8
10
|
const three = require('../../test-utils/three/results');
|
|
@@ -13,6 +15,11 @@ const Parcel = require('../../test-utils/six/bo/parcel');
|
|
|
13
15
|
const six = require('../../test-utils/six/results.json');
|
|
14
16
|
const seven = require('../../test-utils/seven/results.json');
|
|
15
17
|
const eight = require('../../test-utils/eight/results.json');
|
|
18
|
+
const nine = require('../../test-utils/nine/results.json');
|
|
19
|
+
const ten = require('../../test-utils/ten/results.json');
|
|
20
|
+
const eleven = require('../../test-utils/eleven/results.json');
|
|
21
|
+
const twelve = require('../../test-utils/twelve/results.json');
|
|
22
|
+
const Prompt = require('../../test-utils/twelve/bo/prompt');
|
|
16
23
|
|
|
17
24
|
test('Bo#parseFromDatabase where multiple rows reduce to one nested object (with all one-to-one or one-to-many tables)', () => {
|
|
18
25
|
const order = Order.createOneFromDatabase(one);
|
|
@@ -365,3 +372,176 @@ test('Bo#parseOneFromDatabase where a deeply nested models property was attachin
|
|
|
365
372
|
expect(shipments.models[1].shipmentActualProductVariants.models[0].actualProductVariant.productVariants.models[1].gender.id).toEqual(2);
|
|
366
373
|
|
|
367
374
|
});
|
|
375
|
+
|
|
376
|
+
// Issue occcurs in nestClump
|
|
377
|
+
// Problem is with only top level nodes
|
|
378
|
+
test('Bo#parseFromDatabase with just top level nodes', () => {
|
|
379
|
+
let featureSwitches;
|
|
380
|
+
try {
|
|
381
|
+
// This failed when the bug was present
|
|
382
|
+
featureSwitches = FeatureSwitch.createFromDatabase(nine);
|
|
383
|
+
} catch (e) {
|
|
384
|
+
expect(e).not.toBeDefined();
|
|
385
|
+
}
|
|
386
|
+
expect(featureSwitches).toBeDefined();
|
|
387
|
+
// Lots of other assertions that are unrelated and shouldn't be here except
|
|
388
|
+
// I'm insecure about the lack of tests so just going at it cause I can.
|
|
389
|
+
expect(featureSwitches.models.length).toEqual(2);
|
|
390
|
+
expect(featureSwitches.models[0].id).toEqual('google_one_tap_sign_in');
|
|
391
|
+
expect(featureSwitches.models[1].id).toEqual('website_live_chat');
|
|
392
|
+
});
|
|
393
|
+
|
|
394
|
+
// Issue occcurs in nestClump
|
|
395
|
+
// Problem is when oldest parent is an empty join record and is not included
|
|
396
|
+
// which results in the oldest parent search returning -1 and parent heirarchy
|
|
397
|
+
// is thus messed up.
|
|
398
|
+
test('Bo#parseFromDatabase 10', () => {
|
|
399
|
+
let orders;
|
|
400
|
+
try {
|
|
401
|
+
// This failed when the bug was present
|
|
402
|
+
orders = OrderFull.createFromDatabase(ten);
|
|
403
|
+
} catch (e) {
|
|
404
|
+
expect(e).not.toBeDefined();
|
|
405
|
+
}
|
|
406
|
+
expect(orders).toBeDefined();
|
|
407
|
+
// Lots of other assertions that are unrelated and shouldn't be here except
|
|
408
|
+
// I'm insecure about the lack of tests so just going at it cause I can.
|
|
409
|
+
expect(orders.models.length).toEqual(5);
|
|
410
|
+
|
|
411
|
+
expect(orders.models[0].id).toEqual(24591);
|
|
412
|
+
expect(orders.models[0].customer.id).toEqual(5390);
|
|
413
|
+
expect(orders.models[0].physicalAddress.id).toEqual(48982);
|
|
414
|
+
expect(orders.models[0].lineItems.models.length).toEqual(1);
|
|
415
|
+
expect(orders.models[0].lineItems.models[0].id).toEqual(29883);
|
|
416
|
+
expect(orders.models[0].lineItems.models[0].productVariant.id).toEqual(158);
|
|
417
|
+
expect(orders.models[0].lineItems.models[0].productVariant.product.id).toEqual(1);
|
|
418
|
+
expect(orders.models[0].lineItems.models[0].productVariant.size.id).toEqual(9);
|
|
419
|
+
expect(orders.models[0].lineItems.models[0].productVariant.color.id).toEqual(3);
|
|
420
|
+
expect(orders.models[0].lineItems.models[0].productVariant.gender.id).toEqual(1);
|
|
421
|
+
expect(orders.models[0].lineItems.models[0].productVariant.productVariantImages.models.length).toEqual(1);
|
|
422
|
+
expect(orders.models[0].lineItems.models[0].productVariant.productVariantImages.models[0].id).toEqual(17);
|
|
423
|
+
expect(orders.models[0].lineItems.models[0].parcelLineItems.models.length).toEqual(1);
|
|
424
|
+
expect(orders.models[0].lineItems.models[0].parcelLineItems.models[0].id).toEqual(6100);
|
|
425
|
+
expect(orders.models[0].lineItems.models[0].parcelLineItems.models[0].parcel.id).toEqual(5942);
|
|
426
|
+
expect(orders.models[0].lineItems.models[0].parcelLineItems.models[0].parcel.parcelEvents.models.length).toEqual(14);
|
|
427
|
+
expect(orders.models[0].lineItems.models[0].parcelLineItems.models[0].parcel.parcelEvents.models[0].id).toEqual(193775);
|
|
428
|
+
expect(orders.models[0].lineItems.models[0].parcelLineItems.models[0].parcel.parcelEvents.models[1].id).toEqual(193774);
|
|
429
|
+
expect(orders.models[0].lineItems.models[0].parcelLineItems.models[0].parcel.parcelEvents.models[2].id).toEqual(193773);
|
|
430
|
+
expect(orders.models[0].lineItems.models[0].parcelLineItems.models[0].parcel.parcelEvents.models[3].id).toEqual(193425);
|
|
431
|
+
expect(orders.models[0].lineItems.models[0].parcelLineItems.models[0].parcel.parcelEvents.models[4].id).toEqual(193424);
|
|
432
|
+
expect(orders.models[0].lineItems.models[0].parcelLineItems.models[0].parcel.parcelEvents.models[5].id).toEqual(193423);
|
|
433
|
+
expect(orders.models[0].lineItems.models[0].parcelLineItems.models[0].parcel.parcelEvents.models[6].id).toEqual(192713);
|
|
434
|
+
expect(orders.models[0].lineItems.models[0].parcelLineItems.models[0].parcel.parcelEvents.models[7].id).toEqual(192712);
|
|
435
|
+
expect(orders.models[0].lineItems.models[0].parcelLineItems.models[0].parcel.parcelEvents.models[8].id).toEqual(192711);
|
|
436
|
+
expect(orders.models[0].lineItems.models[0].parcelLineItems.models[0].parcel.parcelEvents.models[9].id).toEqual(192709);
|
|
437
|
+
expect(orders.models[0].lineItems.models[0].parcelLineItems.models[0].parcel.parcelEvents.models[10].id).toEqual(192171);
|
|
438
|
+
expect(orders.models[0].lineItems.models[0].parcelLineItems.models[0].parcel.parcelEvents.models[11].id).toEqual(192170);
|
|
439
|
+
expect(orders.models[0].lineItems.models[0].parcelLineItems.models[0].parcel.parcelEvents.models[12].id).toEqual(192169);
|
|
440
|
+
expect(orders.models[0].lineItems.models[0].parcelLineItems.models[0].parcel.parcelEvents.models[13].id).toEqual(191790);
|
|
441
|
+
expect(orders.models[1].id).toEqual(24589);
|
|
442
|
+
expect(orders.models[1].customer.id).toEqual(5390);
|
|
443
|
+
expect(orders.models[1].physicalAddress.id).toEqual(48982);
|
|
444
|
+
expect(orders.models[1].lineItems.models.length).toEqual(1);
|
|
445
|
+
expect(orders.models[1].lineItems.models[0].id).toEqual(29880);
|
|
446
|
+
expect(orders.models[1].lineItems.models[0].productVariant.id).toEqual(158);
|
|
447
|
+
expect(orders.models[1].lineItems.models[0].productVariant.product.id).toEqual(1);
|
|
448
|
+
expect(orders.models[1].lineItems.models[0].productVariant.size.id).toEqual(9);
|
|
449
|
+
expect(orders.models[1].lineItems.models[0].productVariant.color.id).toEqual(3);
|
|
450
|
+
expect(orders.models[1].lineItems.models[0].productVariant.gender.id).toEqual(1);
|
|
451
|
+
expect(orders.models[1].lineItems.models[0].productVariant.productVariantImages.models.length).toEqual(1);
|
|
452
|
+
expect(orders.models[1].lineItems.models[0].productVariant.productVariantImages.models[0].id).toEqual(17);
|
|
453
|
+
expect(orders.models[2].id).toEqual(24587);
|
|
454
|
+
expect(orders.models[2].customer.id).toEqual(5390);
|
|
455
|
+
expect(orders.models[2].physicalAddress.id).toEqual(28145);
|
|
456
|
+
expect(orders.models[2].lineItems.models.length).toEqual(1);
|
|
457
|
+
expect(orders.models[2].lineItems.models[0].id).toEqual(29877);
|
|
458
|
+
expect(orders.models[2].lineItems.models[0].productVariant.id).toEqual(158);
|
|
459
|
+
expect(orders.models[2].lineItems.models[0].productVariant.product.id).toEqual(1);
|
|
460
|
+
expect(orders.models[2].lineItems.models[0].productVariant.size.id).toEqual(9);
|
|
461
|
+
expect(orders.models[2].lineItems.models[0].productVariant.color.id).toEqual(3);
|
|
462
|
+
expect(orders.models[2].lineItems.models[0].productVariant.gender.id).toEqual(1);
|
|
463
|
+
expect(orders.models[2].lineItems.models[0].productVariant.productVariantImages.models.length).toEqual(1);
|
|
464
|
+
expect(orders.models[2].lineItems.models[0].productVariant.productVariantImages.models[0].id).toEqual(17);
|
|
465
|
+
expect(orders.models[2].lineItems.models[0].parcelLineItems.models.length).toEqual(1);
|
|
466
|
+
expect(orders.models[2].lineItems.models[0].parcelLineItems.models[0].id).toEqual(6070);
|
|
467
|
+
expect(orders.models[2].lineItems.models[0].parcelLineItems.models[0].parcel.id).toEqual(5914);
|
|
468
|
+
expect(orders.models[2].lineItems.models[0].parcelLineItems.models[0].parcel.parcelEvents.models.length).toEqual(1);
|
|
469
|
+
expect(orders.models[2].lineItems.models[0].parcelLineItems.models[0].parcel.parcelEvents.models[0].id).toEqual(189194);
|
|
470
|
+
expect(orders.models[3].id).toEqual(14219);
|
|
471
|
+
expect(orders.models[3].customer.id).toEqual(5390);
|
|
472
|
+
expect(orders.models[3].physicalAddress.id).toEqual(28145);
|
|
473
|
+
expect(orders.models[3].lineItems.models.length).toEqual(2);
|
|
474
|
+
expect(orders.models[3].lineItems.models[0].id).toEqual(17298);
|
|
475
|
+
expect(orders.models[3].lineItems.models[0].productVariant.id).toEqual(353);
|
|
476
|
+
expect(orders.models[3].lineItems.models[0].productVariant.product.id).toEqual(8);
|
|
477
|
+
expect(orders.models[3].lineItems.models[0].productVariant.size.id).toEqual(20);
|
|
478
|
+
expect(orders.models[3].lineItems.models[0].productVariant.color.id).toEqual(10);
|
|
479
|
+
expect(orders.models[3].lineItems.models[0].productVariant.gender.id).toEqual(3);
|
|
480
|
+
expect(orders.models[3].lineItems.models[0].productVariant.productVariantImages.models.length).toEqual(1);
|
|
481
|
+
expect(orders.models[3].lineItems.models[0].productVariant.productVariantImages.models[0].id).toEqual(789);
|
|
482
|
+
expect(orders.models[3].lineItems.models[0].parcelLineItems.models.length).toEqual(1);
|
|
483
|
+
expect(orders.models[3].lineItems.models[0].parcelLineItems.models[0].id).toEqual(3338);
|
|
484
|
+
expect(orders.models[3].lineItems.models[0].parcelLineItems.models[0].parcel.id).toEqual(3304);
|
|
485
|
+
expect(orders.models[3].lineItems.models[0].parcelLineItems.models[0].parcel.parcelEvents.models.length).toEqual(3);
|
|
486
|
+
expect(orders.models[3].lineItems.models[0].parcelLineItems.models[0].parcel.parcelEvents.models[0].id).toEqual(87279);
|
|
487
|
+
expect(orders.models[3].lineItems.models[0].parcelLineItems.models[0].parcel.parcelEvents.models[1].id).toEqual(87278);
|
|
488
|
+
expect(orders.models[3].lineItems.models[0].parcelLineItems.models[0].parcel.parcelEvents.models[2].id).toEqual(84361);
|
|
489
|
+
expect(orders.models[3].lineItems.models[1].id).toEqual(17297);
|
|
490
|
+
expect(orders.models[3].lineItems.models[1].productVariant.id).toEqual(344);
|
|
491
|
+
expect(orders.models[3].lineItems.models[1].productVariant.product.id).toEqual(6);
|
|
492
|
+
expect(orders.models[3].lineItems.models[1].productVariant.size.id).toEqual(22);
|
|
493
|
+
expect(orders.models[3].lineItems.models[1].productVariant.color.id).toEqual(8);
|
|
494
|
+
expect(orders.models[3].lineItems.models[1].productVariant.gender.id).toEqual(3);
|
|
495
|
+
expect(orders.models[3].lineItems.models[1].productVariant.productVariantImages.models.length).toEqual(1);
|
|
496
|
+
expect(orders.models[3].lineItems.models[1].productVariant.productVariantImages.models[0].id).toEqual(780);
|
|
497
|
+
expect(orders.models[3].lineItems.models[1].parcelLineItems.models.length).toEqual(1);
|
|
498
|
+
expect(orders.models[3].lineItems.models[1].parcelLineItems.models[0].id).toEqual(2311);
|
|
499
|
+
expect(orders.models[3].lineItems.models[1].parcelLineItems.models[0].parcel.id).toEqual(2317);
|
|
500
|
+
expect(orders.models[3].lineItems.models[1].parcelLineItems.models[0].parcel.parcelEvents.models.length).toEqual(3);
|
|
501
|
+
expect(orders.models[3].lineItems.models[1].parcelLineItems.models[0].parcel.parcelEvents.models[0].id).toEqual(52627);
|
|
502
|
+
expect(orders.models[3].lineItems.models[1].parcelLineItems.models[0].parcel.parcelEvents.models[1].id).toEqual(52626);
|
|
503
|
+
expect(orders.models[3].lineItems.models[1].parcelLineItems.models[0].parcel.parcelEvents.models[2].id).toEqual(48326);
|
|
504
|
+
expect(orders.models[4].id).toEqual(13888);
|
|
505
|
+
expect(orders.models[4].customer.id).toEqual(5390);
|
|
506
|
+
expect(orders.models[4].physicalAddress.id).toEqual(7608);
|
|
507
|
+
expect(orders.models[4].lineItems.models.length).toEqual(1);
|
|
508
|
+
expect(orders.models[4].lineItems.models[0].id).toEqual(16900);
|
|
509
|
+
expect(orders.models[4].lineItems.models[0].productVariant.id).toEqual(363);
|
|
510
|
+
expect(orders.models[4].lineItems.models[0].productVariant.product.id).toEqual(5);
|
|
511
|
+
expect(orders.models[4].lineItems.models[0].productVariant.size.id).toEqual(8);
|
|
512
|
+
expect(orders.models[4].lineItems.models[0].productVariant.color.id).toEqual(12);
|
|
513
|
+
expect(orders.models[4].lineItems.models[0].productVariant.gender.id).toEqual(1);
|
|
514
|
+
expect(orders.models[4].lineItems.models[0].productVariant.productVariantImages.models.length).toEqual(1);
|
|
515
|
+
expect(orders.models[4].lineItems.models[0].productVariant.productVariantImages.models[0].id).toEqual(829);
|
|
516
|
+
});
|
|
517
|
+
|
|
518
|
+
// Issue occcurs in nestClump
|
|
519
|
+
// Problem from early returning not logging bo so parent hierarcy was missing it
|
|
520
|
+
test('Bo#parseFromDatabase 11', () => {
|
|
521
|
+
let orders;
|
|
522
|
+
try {
|
|
523
|
+
// This failed when the bug was present
|
|
524
|
+
orders = OrderFull.createFromDatabase(eleven);
|
|
525
|
+
} catch (e) {
|
|
526
|
+
expect(e).not.toBeDefined();
|
|
527
|
+
}
|
|
528
|
+
expect(orders).toBeDefined();
|
|
529
|
+
// Lots of other assertions that are unrelated and shouldn't be here except
|
|
530
|
+
// I'm insecure about the lack of tests so just going at it cause I can.
|
|
531
|
+
// TODO add more later
|
|
532
|
+
});
|
|
533
|
+
|
|
534
|
+
// Issue occcurs in nestClump
|
|
535
|
+
// Problem when a table references another model twice (two columns)
|
|
536
|
+
test('Bo#parseFromDatabase 12', () => {
|
|
537
|
+
let prompt;
|
|
538
|
+
try {
|
|
539
|
+
// This failed when the bug was present
|
|
540
|
+
prompt = Prompt.createFromDatabase(twelve);
|
|
541
|
+
} catch (e) {
|
|
542
|
+
expect(e).not.toBeDefined();
|
|
543
|
+
}
|
|
544
|
+
expect(prompt).toBeDefined();
|
|
545
|
+
// Ideally the below should work
|
|
546
|
+
// expect(prompt.fromMember.id).toEqual(1);
|
|
547
|
+
});
|