9
9
type StoreInterface ,
10
10
middyStore ,
11
11
} from "../src/store.js" ;
12
- import { calculateByteSize } from "../src/utils.js" ;
12
+ import { calculateByteSize , createReference } from "../src/utils.js" ;
13
13
14
14
const context = { } as Context ;
15
15
@@ -520,12 +520,123 @@ describe("store", () => {
520
520
521
521
await expect (
522
522
handler ( structuredClone ( [ payload , payload ] ) , context ) ,
523
- ) . resolves . toEqual ( { [ MIDDY_STORE ] : reference } ) ;
523
+ ) . resolves . toEqual ( createReference ( reference ) ) ;
524
524
expect ( mockStore . canStore ) . toHaveBeenCalled ( ) ;
525
525
expect ( mockStore . store ) . toHaveBeenCalled ( ) ;
526
526
} ) ;
527
527
} ) ;
528
528
529
+ test ( "should passthrough output if it's a reference" , async ( ) => {
530
+ const reference = { store : "mock" } ;
531
+
532
+ {
533
+ const payload = createReference ( reference ) ;
534
+ const handler = useStore ( {
535
+ stores : [ mockStore ] ,
536
+ loadingOptions : { skip : true } ,
537
+ storingOptions : {
538
+ minSize : Sizes . ZERO ,
539
+ } ,
540
+ } ) ;
541
+
542
+ await expect ( handler ( payload , context ) ) . resolves . toEqual ( payload ) ;
543
+ expect ( mockStore . canStore ) . not . toHaveBeenCalled ( ) ;
544
+ expect ( mockStore . store ) . not . toHaveBeenCalled ( ) ;
545
+ }
546
+
547
+ {
548
+ const payload = { a : createReference ( reference ) } ;
549
+ const handler = useStore ( {
550
+ stores : [ mockStore ] ,
551
+ loadingOptions : { skip : true } ,
552
+ storingOptions : {
553
+ minSize : Sizes . ZERO ,
554
+ selector : "a" ,
555
+ } ,
556
+ } ) ;
557
+
558
+ await expect ( handler ( payload , context ) ) . resolves . toEqual ( payload ) ;
559
+ expect ( mockStore . canStore ) . not . toHaveBeenCalled ( ) ;
560
+ expect ( mockStore . store ) . not . toHaveBeenCalled ( ) ;
561
+ }
562
+
563
+ {
564
+ const payload = { a : { b : createReference ( reference ) } } ;
565
+ const handler = useStore ( {
566
+ stores : [ mockStore ] ,
567
+ loadingOptions : { skip : true } ,
568
+ storingOptions : {
569
+ minSize : Sizes . ZERO ,
570
+ selector : "a.b" ,
571
+ } ,
572
+ } ) ;
573
+
574
+ await expect ( handler ( payload , context ) ) . resolves . toEqual ( payload ) ;
575
+ expect ( mockStore . canStore ) . not . toHaveBeenCalled ( ) ;
576
+ expect ( mockStore . store ) . not . toHaveBeenCalled ( ) ;
577
+ }
578
+
579
+ {
580
+ const payload = {
581
+ a : {
582
+ b : { c : createReference ( reference ) } ,
583
+ } ,
584
+ } ;
585
+ const handler = useStore ( {
586
+ stores : [ mockStore ] ,
587
+ loadingOptions : { skip : true } ,
588
+ storingOptions : {
589
+ minSize : Sizes . ZERO ,
590
+ selector : "a.b.c" ,
591
+ } ,
592
+ } ) ;
593
+
594
+ await expect ( handler ( payload , context ) ) . resolves . toEqual ( payload ) ;
595
+ expect ( mockStore . canStore ) . not . toHaveBeenCalled ( ) ;
596
+ expect ( mockStore . store ) . not . toHaveBeenCalled ( ) ;
597
+ }
598
+
599
+ {
600
+ const payload = {
601
+ a : {
602
+ b : { c : [ createReference ( reference ) , createReference ( reference ) ] } ,
603
+ } ,
604
+ } ;
605
+ const handler = useStore ( {
606
+ stores : [ mockStore ] ,
607
+ loadingOptions : { skip : true } ,
608
+ storingOptions : {
609
+ minSize : Sizes . ZERO ,
610
+ selector : "a.b.c[0]" ,
611
+ } ,
612
+ } ) ;
613
+
614
+ await expect ( handler ( payload , context ) ) . resolves . toEqual ( payload ) ;
615
+ expect ( mockStore . canStore ) . not . toHaveBeenCalled ( ) ;
616
+ expect ( mockStore . store ) . not . toHaveBeenCalled ( ) ;
617
+ }
618
+
619
+ {
620
+ const payload = {
621
+ a : {
622
+ b : { c : [ createReference ( reference ) , createReference ( reference ) ] } ,
623
+ } ,
624
+ } ;
625
+ const handler = useStore ( {
626
+ stores : [ mockStore ] ,
627
+ loadingOptions : { skip : true } ,
628
+ storingOptions : {
629
+ minSize : Sizes . ZERO ,
630
+ selector : "a.b.c[*]" ,
631
+ } ,
632
+ } ) ;
633
+
634
+ await expect ( handler ( payload , context ) ) . resolves . toEqual ( payload ) ;
635
+ expect ( mockStore . canStore ) . not . toHaveBeenCalled ( ) ;
636
+ expect ( mockStore . store ) . not . toHaveBeenCalled ( ) ;
637
+ }
638
+ } ) ;
639
+
529
640
test ( "should passthrough output if stores are empty" , async ( ) => {
530
641
const payload = {
531
642
foo : "bar" ,
@@ -694,7 +805,7 @@ describe("store", () => {
694
805
695
806
await expect (
696
807
handler ( structuredClone ( payload ) , context ) ,
697
- ) . resolves . toEqual ( { [ MIDDY_STORE ] : reference } ) ;
808
+ ) . resolves . toEqual ( createReference ( reference ) ) ;
698
809
expect ( mockStore . canStore ) . toHaveBeenCalledWith ( { payload, byteSize } ) ;
699
810
expect ( mockStore . store ) . toHaveBeenCalledWith ( { payload, byteSize } ) ;
700
811
}
@@ -710,7 +821,7 @@ describe("store", () => {
710
821
711
822
await expect (
712
823
handler ( structuredClone ( payload ) , context ) ,
713
- ) . resolves . toEqual ( { [ MIDDY_STORE ] : reference } ) ;
824
+ ) . resolves . toEqual ( createReference ( reference ) ) ;
714
825
expect ( mockStore . canStore ) . toHaveBeenCalledWith ( { payload, byteSize } ) ;
715
826
expect ( mockStore . store ) . toHaveBeenCalledWith ( { payload, byteSize } ) ;
716
827
}
@@ -727,7 +838,7 @@ describe("store", () => {
727
838
728
839
await expect (
729
840
handler ( structuredClone ( payload ) , context ) ,
730
- ) . resolves . toEqual ( { [ MIDDY_STORE ] : reference } ) ;
841
+ ) . resolves . toEqual ( createReference ( reference ) ) ;
731
842
expect ( mockStore . canStore ) . toHaveBeenCalledWith ( { payload, byteSize } ) ;
732
843
expect ( mockStore . store ) . toHaveBeenCalledWith ( { payload, byteSize } ) ;
733
844
}
@@ -744,7 +855,7 @@ describe("store", () => {
744
855
745
856
await expect (
746
857
handler ( structuredClone ( payload ) , context ) ,
747
- ) . resolves . toEqual ( { [ MIDDY_STORE ] : reference } ) ;
858
+ ) . resolves . toEqual ( createReference ( reference ) ) ;
748
859
expect ( mockStore . canStore ) . toHaveBeenCalledWith ( { payload, byteSize } ) ;
749
860
expect ( mockStore . store ) . toHaveBeenCalledWith ( { payload, byteSize } ) ;
750
861
}
@@ -771,7 +882,7 @@ describe("store", () => {
771
882
772
883
await expect (
773
884
handler ( structuredClone ( payload ) , context ) ,
774
- ) . resolves . toEqual ( { [ MIDDY_STORE ] : reference } ) ;
885
+ ) . resolves . toEqual ( createReference ( reference ) ) ;
775
886
expect ( mockStore . canStore ) . toHaveBeenCalledWith ( { payload, byteSize } ) ;
776
887
expect ( mockStore . store ) . toHaveBeenCalledWith ( { payload, byteSize } ) ;
777
888
}
@@ -787,7 +898,7 @@ describe("store", () => {
787
898
788
899
await expect (
789
900
handler ( structuredClone ( payload ) , context ) ,
790
- ) . resolves . toEqual ( { [ MIDDY_STORE ] : reference } ) ;
901
+ ) . resolves . toEqual ( createReference ( reference ) ) ;
791
902
expect ( mockStore . canStore ) . toHaveBeenCalledWith ( { payload, byteSize } ) ;
792
903
expect ( mockStore . store ) . toHaveBeenCalledWith ( { payload, byteSize } ) ;
793
904
}
@@ -803,7 +914,7 @@ describe("store", () => {
803
914
804
915
await expect (
805
916
handler ( structuredClone ( payload ) , context ) ,
806
- ) . resolves . toEqual ( { a : { [ MIDDY_STORE ] : reference } } ) ;
917
+ ) . resolves . toEqual ( { a : createReference ( reference ) } ) ;
807
918
expect ( mockStore . canStore ) . toHaveBeenCalledWith ( { payload, byteSize } ) ;
808
919
expect ( mockStore . store ) . toHaveBeenCalledWith ( { payload, byteSize } ) ;
809
920
}
@@ -819,7 +930,7 @@ describe("store", () => {
819
930
820
931
await expect (
821
932
handler ( structuredClone ( payload ) , context ) ,
822
- ) . resolves . toEqual ( { a : { b : { [ MIDDY_STORE ] : reference } } } ) ;
933
+ ) . resolves . toEqual ( { a : { b : createReference ( reference ) } } ) ;
823
934
expect ( mockStore . canStore ) . toHaveBeenCalledWith ( { payload, byteSize } ) ;
824
935
expect ( mockStore . store ) . toHaveBeenCalledWith ( { payload, byteSize } ) ;
825
936
}
@@ -835,7 +946,7 @@ describe("store", () => {
835
946
836
947
await expect (
837
948
handler ( structuredClone ( payload ) , context ) ,
838
- ) . resolves . toEqual ( { a : { b : { c : { [ MIDDY_STORE ] : reference } } } } ) ;
949
+ ) . resolves . toEqual ( { a : { b : { c : createReference ( reference ) } } } ) ;
839
950
expect ( mockStore . canStore ) . toHaveBeenCalledWith ( { payload, byteSize } ) ;
840
951
expect ( mockStore . store ) . toHaveBeenCalledWith ( { payload, byteSize } ) ;
841
952
}
@@ -852,7 +963,7 @@ describe("store", () => {
852
963
await expect (
853
964
handler ( structuredClone ( payload ) , context ) ,
854
965
) . resolves . toEqual ( {
855
- a : { b : { c : [ { [ MIDDY_STORE ] : reference } , { foo : "bar" } ] } } ,
966
+ a : { b : { c : [ createReference ( reference ) , { foo : "bar" } ] } } ,
856
967
} ) ;
857
968
expect ( mockStore . canStore ) . toHaveBeenCalledWith ( { payload, byteSize } ) ;
858
969
expect ( mockStore . store ) . toHaveBeenCalledWith ( { payload, byteSize } ) ;
@@ -872,7 +983,7 @@ describe("store", () => {
872
983
) . resolves . toEqual ( {
873
984
a : {
874
985
b : {
875
- c : [ { [ MIDDY_STORE ] : reference } , { [ MIDDY_STORE ] : reference } ] ,
986
+ c : [ createReference ( reference ) , createReference ( reference ) ] ,
876
987
} ,
877
988
} ,
878
989
} ) ;
0 commit comments