pure-orm 1.3.1 → 2.2.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.
Files changed (41) hide show
  1. package/.travis.yml +0 -6
  2. package/README.md +456 -185
  3. package/examples/order-more/bo/customer.js +18 -0
  4. package/examples/order-more/bo/customers.js +9 -0
  5. package/examples/order-more/bo/line-item.js +33 -0
  6. package/examples/order-more/bo/line-items.js +9 -0
  7. package/examples/order-more/bo/order.js +49 -0
  8. package/examples/order-more/bo/orders.js +9 -0
  9. package/examples/order-more/bo/parcel-event.js +19 -0
  10. package/examples/order-more/bo/parcel-events.js +9 -0
  11. package/examples/order-more/bo/parcel-line-item.js +24 -0
  12. package/examples/order-more/bo/parcel-line-items.js +9 -0
  13. package/examples/order-more/bo/parcel.js +18 -0
  14. package/examples/order-more/bo/parcels.js +9 -0
  15. package/examples/order-more/bo/physical-address.js +30 -0
  16. package/examples/order-more/bo/physical-addresses.js +12 -0
  17. package/examples/order-more/bo/refund.js +28 -0
  18. package/examples/order-more/bo/refunds.js +9 -0
  19. package/examples/order-more/bo/shipment-actual-product-variant.js +26 -0
  20. package/examples/order-more/bo/shipment-actual-product-variants.js +9 -0
  21. package/examples/order-more/bo/utm-medium.js +13 -0
  22. package/examples/order-more/bo/utm-source.js +13 -0
  23. package/examples/order-more/business-objects.js +12 -1
  24. package/package.json +1 -1
  25. package/src/bo/base-bo.js +51 -27
  26. package/src/bo/base-bo.spec.js +259 -0
  27. package/test-utils/eight/results.json +128 -0
  28. package/test-utils/eleven/results.json +818 -0
  29. package/test-utils/nine/bo/base.js +5 -0
  30. package/test-utils/nine/bo/feature-switch.js +18 -0
  31. package/test-utils/nine/bo/feature-switches.js +12 -0
  32. package/test-utils/nine/business-objects.js +7 -0
  33. package/test-utils/nine/results.json +12 -0
  34. package/test-utils/ten/results.json +899 -0
  35. package/test-utils/twelve/bo/base.js +5 -0
  36. package/test-utils/twelve/bo/member.js +16 -0
  37. package/test-utils/twelve/bo/members.js +9 -0
  38. package/test-utils/twelve/bo/prompt.js +20 -0
  39. package/test-utils/twelve/bo/prompts.js +9 -0
  40. package/test-utils/twelve/business-objects.js +8 -0
  41. package/test-utils/twelve/results.json +8 -0
@@ -2,6 +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');
6
+ const Shipment = require('../../examples/order-more/bo/shipment');
7
+ const FeatureSwitch = require('../../test-utils/nine/bo/feature-switch');
5
8
  const one = require('../../test-utils/one/results.json');
6
9
  const two = require('../../test-utils/two/results');
7
10
  const three = require('../../test-utils/three/results');
@@ -11,6 +14,12 @@ const five = require('../../test-utils/five/results.json');
11
14
  const Parcel = require('../../test-utils/six/bo/parcel');
12
15
  const six = require('../../test-utils/six/results.json');
13
16
  const seven = require('../../test-utils/seven/results.json');
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');
14
23
 
15
24
  test('Bo#parseFromDatabase where multiple rows reduce to one nested object (with all one-to-one or one-to-many tables)', () => {
16
25
  const order = Order.createOneFromDatabase(one);
@@ -286,3 +295,253 @@ test('Bo#parseOneFromDatabase where a deeply nested models property was attachin
286
295
  expect(inventoryLevel.actualProductVariant.productVariants.models[1].gender.id).toEqual(2);
287
296
  expect(inventoryLevel.actualProductVariant.productVariants.models[1].size.id).toEqual(11);
288
297
  });
298
+
299
+ // Problem:
300
+ // Shipment
301
+ // ShipmentActualProductVariant
302
+ // ActualProductVariant
303
+ // ProductVariant(1)
304
+ // Product
305
+ // ProductVariant(2)
306
+ // ShipmentActualProductVariant
307
+ // ActualProductVariant
308
+ // Instead of:
309
+ // Shipment
310
+ // ShipmentActualProductVariant
311
+ // ActualProductVariant
312
+ // ProductVariant(1)
313
+ // Product
314
+ // ShipmentActualProductVariant
315
+ // ActualProductVariant
316
+ // ProductVariant(2)
317
+ // Product
318
+ // Issue occcurs in nestClump
319
+ test('Bo#parseOneFromDatabase where a deeply nested models property was attaching to wrong parent 2', () => {
320
+ const shipments = Shipment.createFromDatabase(eight);
321
+ // The assertion that failed when the bug was present
322
+ expect(shipments.models[0].shipmentActualProductVariants.models[1].actualProductVariant.productVariants).toBeDefined();
323
+ // IN ADDITION TO ABOVE ASSERTION and helpful test description of what is
324
+ // being tested, the below tests tease out some logic that was hitherto
325
+ // incorrect. This "some logic" should be defined and have separate tests
326
+ // and jazz, but my brain hurts so TLDR these below tests are important but
327
+ // (somewhat?) unrelated to the example/assertion above. "Are you serious?!"
328
+ expect(shipments.models.length).toEqual(2);
329
+
330
+ expect(shipments.models[0].id).toEqual(19);
331
+ expect(shipments.models[0].shipmentActualProductVariants.models.length).toEqual(2);
332
+ expect(shipments.models[0].shipmentActualProductVariants.models[0].id).toEqual(25);
333
+ expect(shipments.models[0].shipmentActualProductVariants.models[0].actualProductVariant.id).toEqual(65);
334
+ expect(shipments.models[0].shipmentActualProductVariants.models[0].actualProductVariant.productVariants.models.length).toEqual(2);
335
+ expect(shipments.models[0].shipmentActualProductVariants.models[0].actualProductVariant.productVariants.models[0].id).toEqual(310);
336
+ expect(shipments.models[0].shipmentActualProductVariants.models[0].actualProductVariant.productVariants.models[0].product.id).toEqual(1);
337
+ expect(shipments.models[0].shipmentActualProductVariants.models[0].actualProductVariant.productVariants.models[0].size.id).toEqual(1);
338
+ expect(shipments.models[0].shipmentActualProductVariants.models[0].actualProductVariant.productVariants.models[0].color.id).toEqual(1);
339
+ expect(shipments.models[0].shipmentActualProductVariants.models[0].actualProductVariant.productVariants.models[0].gender.id).toEqual(1);
340
+ expect(shipments.models[0].shipmentActualProductVariants.models[0].actualProductVariant.productVariants.models[1].id).toEqual(309);
341
+ expect(shipments.models[0].shipmentActualProductVariants.models[0].actualProductVariant.productVariants.models[1].product.id).toEqual(2);
342
+ expect(shipments.models[0].shipmentActualProductVariants.models[0].actualProductVariant.productVariants.models[1].size.id).toEqual(4);
343
+ expect(shipments.models[0].shipmentActualProductVariants.models[0].actualProductVariant.productVariants.models[1].color.id).toEqual(1);
344
+ expect(shipments.models[0].shipmentActualProductVariants.models[0].actualProductVariant.productVariants.models[1].gender.id).toEqual(2);
345
+ expect(shipments.models[0].shipmentActualProductVariants.models[1].id).toEqual(26);
346
+ expect(shipments.models[0].shipmentActualProductVariants.models[1].actualProductVariant.id).toEqual(25);
347
+ expect(shipments.models[0].shipmentActualProductVariants.models[1].actualProductVariant.productVariants.models.length).toEqual(2);
348
+ expect(shipments.models[0].shipmentActualProductVariants.models[1].actualProductVariant.productVariants.models[0].id).toEqual(194);
349
+ expect(shipments.models[0].shipmentActualProductVariants.models[1].actualProductVariant.productVariants.models[0].product.id).toEqual(1);
350
+ expect(shipments.models[0].shipmentActualProductVariants.models[1].actualProductVariant.productVariants.models[0].size.id).toEqual(2);
351
+ expect(shipments.models[0].shipmentActualProductVariants.models[1].actualProductVariant.productVariants.models[0].color.id).toEqual(1);
352
+ expect(shipments.models[0].shipmentActualProductVariants.models[1].actualProductVariant.productVariants.models[0].gender.id).toEqual(1);
353
+ expect(shipments.models[0].shipmentActualProductVariants.models[1].actualProductVariant.productVariants.models[1].id).toEqual(195);
354
+ expect(shipments.models[0].shipmentActualProductVariants.models[1].actualProductVariant.productVariants.models[1].product.id).toEqual(2);
355
+ expect(shipments.models[0].shipmentActualProductVariants.models[1].actualProductVariant.productVariants.models[1].size.id).toEqual(5);
356
+ expect(shipments.models[0].shipmentActualProductVariants.models[1].actualProductVariant.productVariants.models[1].color.id).toEqual(1);
357
+ expect(shipments.models[0].shipmentActualProductVariants.models[1].actualProductVariant.productVariants.models[1].gender.id).toEqual(2);
358
+ expect(shipments.models[1].id).toEqual(18);
359
+ expect(shipments.models[1].shipmentActualProductVariants.models.length).toEqual(1);
360
+ expect(shipments.models[1].shipmentActualProductVariants.models[0].id).toEqual(1);
361
+ expect(shipments.models[1].shipmentActualProductVariants.models[0].actualProductVariant.id).toEqual(25);
362
+ expect(shipments.models[1].shipmentActualProductVariants.models[0].actualProductVariant.productVariants.models.length).toEqual(2);
363
+ expect(shipments.models[1].shipmentActualProductVariants.models[0].actualProductVariant.productVariants.models[0].id).toEqual(194);
364
+ expect(shipments.models[1].shipmentActualProductVariants.models[0].actualProductVariant.productVariants.models[0].product.id).toEqual(1);
365
+ expect(shipments.models[1].shipmentActualProductVariants.models[0].actualProductVariant.productVariants.models[0].size.id).toEqual(2);
366
+ expect(shipments.models[1].shipmentActualProductVariants.models[0].actualProductVariant.productVariants.models[0].color.id).toEqual(1);
367
+ expect(shipments.models[1].shipmentActualProductVariants.models[0].actualProductVariant.productVariants.models[0].gender.id).toEqual(1);
368
+ expect(shipments.models[1].shipmentActualProductVariants.models[0].actualProductVariant.productVariants.models[1].id).toEqual(195);
369
+ expect(shipments.models[1].shipmentActualProductVariants.models[0].actualProductVariant.productVariants.models[1].product.id).toEqual(2);
370
+ expect(shipments.models[1].shipmentActualProductVariants.models[0].actualProductVariant.productVariants.models[1].size.id).toEqual(5);
371
+ expect(shipments.models[1].shipmentActualProductVariants.models[0].actualProductVariant.productVariants.models[1].color.id).toEqual(1);
372
+ expect(shipments.models[1].shipmentActualProductVariants.models[0].actualProductVariant.productVariants.models[1].gender.id).toEqual(2);
373
+
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
+ });
@@ -0,0 +1,128 @@
1
+ [
2
+ {
3
+ "shipment#id": 19,
4
+ "shipment_actual_product_variant#id": 25,
5
+ "shipment_actual_product_variant#shipment_id": 19,
6
+ "shipment_actual_product_variant#actual_product_variant_id": 65,
7
+ "shipment_actual_product_variant#quantity": 20,
8
+ "actual_product_variant#id": 65,
9
+ "actual_product_variant#sku": "10010150",
10
+ "product_variant#id": 310,
11
+ "product_variant#product_id": 1,
12
+ "product_variant#actual_product_variant_id": 65,
13
+ "product_variant#color_id": 1,
14
+ "product_variant#gender_id": 1,
15
+ "product_variant#size_id": 1,
16
+ "product#id": 1,
17
+ "size#id": 1,
18
+ "size#value": "5",
19
+ "size#label": "5",
20
+ "color#id": 1,
21
+ "gender#id": 1
22
+ },
23
+ {
24
+ "shipment#id": 19,
25
+ "shipment_actual_product_variant#id": 26,
26
+ "shipment_actual_product_variant#shipment_id": 19,
27
+ "shipment_actual_product_variant#actual_product_variant_id": 25,
28
+ "shipment_actual_product_variant#quantity": 10,
29
+ "actual_product_variant#id": 25,
30
+ "actual_product_variant#sku": "10010155",
31
+ "product_variant#id": 194,
32
+ "product_variant#product_id": 1,
33
+ "product_variant#actual_product_variant_id": 25,
34
+ "product_variant#color_id": 1,
35
+ "product_variant#gender_id": 1,
36
+ "product_variant#size_id": 2,
37
+ "product#id": 1,
38
+ "size#id": 2,
39
+ "size#value": "5.5",
40
+ "size#label": "5.5",
41
+ "color#id": 1,
42
+ "gender#id": 1
43
+ },
44
+ {
45
+ "shipment#id": 19,
46
+ "shipment_actual_product_variant#id": 25,
47
+ "shipment_actual_product_variant#shipment_id": 19,
48
+ "shipment_actual_product_variant#actual_product_variant_id": 65,
49
+ "shipment_actual_product_variant#quantity": 20,
50
+ "actual_product_variant#id": 65,
51
+ "actual_product_variant#sku": "10010150",
52
+ "product_variant#id": 309,
53
+ "product_variant#product_id": 2,
54
+ "product_variant#actual_product_variant_id": 65,
55
+ "product_variant#color_id": 1,
56
+ "product_variant#gender_id": 2,
57
+ "product_variant#size_id": 4,
58
+ "product#id": 2,
59
+ "size#id": 4,
60
+ "size#value": "6.5",
61
+ "size#label": "6.5",
62
+ "color#id": 1,
63
+ "gender#id": 2
64
+ },
65
+ {
66
+ "shipment#id": 19,
67
+ "shipment_actual_product_variant#id": 26,
68
+ "shipment_actual_product_variant#shipment_id": 19,
69
+ "shipment_actual_product_variant#actual_product_variant_id": 25,
70
+ "shipment_actual_product_variant#quantity": 10,
71
+ "actual_product_variant#id": 25,
72
+ "actual_product_variant#sku": "10010155",
73
+ "product_variant#id": 195,
74
+ "product_variant#product_id": 2,
75
+ "product_variant#actual_product_variant_id": 25,
76
+ "product_variant#color_id": 1,
77
+ "product_variant#gender_id": 2,
78
+ "product_variant#size_id": 5,
79
+ "product#id": 2,
80
+ "size#id": 5,
81
+ "size#value": "7",
82
+ "size#label": "7",
83
+ "color#id": 1,
84
+ "gender#id": 2
85
+ },
86
+ {
87
+ "shipment#id": 18,
88
+ "shipment_actual_product_variant#id": 1,
89
+ "shipment_actual_product_variant#shipment_id": 18,
90
+ "shipment_actual_product_variant#actual_product_variant_id": 25,
91
+ "shipment_actual_product_variant#quantity": 10,
92
+ "actual_product_variant#id": 25,
93
+ "actual_product_variant#sku": "10010155",
94
+ "product_variant#id": 194,
95
+ "product_variant#product_id": 1,
96
+ "product_variant#actual_product_variant_id": 25,
97
+ "product_variant#color_id": 1,
98
+ "product_variant#gender_id": 1,
99
+ "product_variant#size_id": 2,
100
+ "product#id": 1,
101
+ "size#id": 2,
102
+ "size#value": "5.5",
103
+ "size#label": "5.5",
104
+ "color#id": 1,
105
+ "gender#id": 1
106
+ },
107
+ {
108
+ "shipment#id": 18,
109
+ "shipment_actual_product_variant#id": 1,
110
+ "shipment_actual_product_variant#shipment_id": 18,
111
+ "shipment_actual_product_variant#actual_product_variant_id": 25,
112
+ "shipment_actual_product_variant#quantity": 10,
113
+ "actual_product_variant#id": 25,
114
+ "actual_product_variant#sku": "10010155",
115
+ "product_variant#id": 195,
116
+ "product_variant#product_id": 2,
117
+ "product_variant#actual_product_variant_id": 25,
118
+ "product_variant#color_id": 1,
119
+ "product_variant#gender_id": 2,
120
+ "product_variant#size_id": 5,
121
+ "product#id": 2,
122
+ "size#id": 5,
123
+ "size#value": "7",
124
+ "size#label": "7",
125
+ "color#id": 1,
126
+ "gender#id": 2
127
+ }
128
+ ]