@@ -780,6 +780,125 @@ describe('TypeormStakePoolProvider', () => {
780
780
expect ( response . pageResults [ 0 ] . metrics ?. ros ) . toEqual ( expectedRos . min ) ;
781
781
} ) ;
782
782
} ) ;
783
+
784
+ describe ( 'sort by margin' , ( ) => {
785
+ let margins : Cardano . Fraction [ ] = [ ] ;
786
+
787
+ beforeAll ( ( ) => {
788
+ margins = poolsInfo
789
+ . map ( ( { margin } ) => margin )
790
+ . sort ( ( a , b ) => ( a . numerator / a . denominator < b . numerator / b . denominator ? - 1 : 1 ) ) ;
791
+ } ) ;
792
+
793
+ it ( 'desc order' , async ( ) => {
794
+ const { pageResults } = await provider . queryStakePools (
795
+ setSortCondition ( { pagination } , 'desc' , 'margin' )
796
+ ) ;
797
+
798
+ expect ( pageResults . map ( ( { margin } ) => margin ) ) . toEqual (
799
+ margins
800
+ . map ( ( _ ) => _ )
801
+ . reverse ( )
802
+ . splice ( 0 , 10 )
803
+ ) ;
804
+ } ) ;
805
+
806
+ it ( 'asc order' , async ( ) => {
807
+ const { pageResults } = await provider . queryStakePools ( setSortCondition ( { pagination } , 'asc' , 'margin' ) ) ;
808
+
809
+ expect ( pageResults . map ( ( { margin } ) => margin ) ) . toEqual ( margins . map ( ( _ ) => _ ) . splice ( 0 , 10 ) ) ;
810
+ } ) ;
811
+ } ) ;
812
+
813
+ describe ( 'sort by pledge' , ( ) => {
814
+ let pledges : bigint [ ] = [ ] ;
815
+
816
+ beforeAll ( ( ) => {
817
+ pledges = poolsInfo . map ( ( { pledge } ) => BigInt ( pledge ) ) . sort ( ( a , b ) => ( a < b ? - 1 : 1 ) ) ;
818
+ } ) ;
819
+
820
+ it ( 'desc order' , async ( ) => {
821
+ const { pageResults } = await provider . queryStakePools (
822
+ setSortCondition ( { pagination } , 'desc' , 'pledge' )
823
+ ) ;
824
+
825
+ expect ( pageResults . map ( ( { pledge } ) => pledge ) ) . toEqual (
826
+ pledges
827
+ . map ( ( _ ) => _ )
828
+ . reverse ( )
829
+ . splice ( 0 , 10 )
830
+ ) ;
831
+ } ) ;
832
+
833
+ it ( 'asc order' , async ( ) => {
834
+ const { pageResults } = await provider . queryStakePools ( setSortCondition ( { pagination } , 'asc' , 'pledge' ) ) ;
835
+
836
+ expect ( pageResults . map ( ( { pledge } ) => pledge ) ) . toEqual ( pledges . map ( ( _ ) => _ ) . splice ( 0 , 10 ) ) ;
837
+ } ) ;
838
+ } ) ;
839
+
840
+ describe ( 'sort by blocks' , ( ) => {
841
+ let blocks : number [ ] = [ ] ;
842
+
843
+ beforeAll ( ( ) => {
844
+ blocks = poolsInfoWithMetrics . map ( ( _ ) => _ . blocks ) . sort ( ( a , b ) => ( a < b ? - 1 : 1 ) ) ;
845
+ } ) ;
846
+
847
+ it ( 'desc order' , async ( ) => {
848
+ const { pageResults } = await provider . queryStakePools (
849
+ setSortCondition ( { pagination } , 'desc' , 'blocks' )
850
+ ) ;
851
+
852
+ expect ( pageResults . map ( ( { metrics } ) => metrics ! . blocksCreated ) ) . toEqual (
853
+ blocks
854
+ . map ( ( _ ) => _ )
855
+ . reverse ( )
856
+ . splice ( 0 , 10 )
857
+ ) ;
858
+ } ) ;
859
+
860
+ it ( 'asc order' , async ( ) => {
861
+ const { pageResults } = await provider . queryStakePools ( setSortCondition ( { pagination } , 'asc' , 'blocks' ) ) ;
862
+
863
+ expect ( pageResults . map ( ( { metrics } ) => metrics ! . blocksCreated ) ) . toEqual (
864
+ blocks . filter ( ( _ ) => _ !== null ) . splice ( 0 , 10 )
865
+ ) ;
866
+ } ) ;
867
+ } ) ;
868
+
869
+ describe ( 'sort by liveStake' , ( ) => {
870
+ let pledges : bigint [ ] = [ ] ;
871
+
872
+ beforeAll ( ( ) => {
873
+ pledges = poolsInfoWithMetrics
874
+ . filter ( ( { stake } ) => stake !== null )
875
+ . map ( ( { stake } ) => BigInt ( stake ) )
876
+ . sort ( ( a , b ) => ( a < b ? - 1 : 1 ) ) ;
877
+ } ) ;
878
+
879
+ it ( 'desc order' , async ( ) => {
880
+ const { pageResults } = await provider . queryStakePools (
881
+ setSortCondition ( { pagination } , 'desc' , 'liveStake' )
882
+ ) ;
883
+
884
+ expect ( pageResults . map ( ( { metrics } ) => metrics ! . stake . live ) ) . toEqual (
885
+ pledges
886
+ . map ( ( _ ) => _ )
887
+ . reverse ( )
888
+ . splice ( 0 , 10 )
889
+ ) ;
890
+ } ) ;
891
+
892
+ it ( 'asc order' , async ( ) => {
893
+ const { pageResults } = await provider . queryStakePools (
894
+ setSortCondition ( { pagination } , 'asc' , 'liveStake' )
895
+ ) ;
896
+
897
+ expect ( pageResults . map ( ( { metrics } ) => metrics ! . stake . live ) ) . toEqual (
898
+ pledges . map ( ( _ ) => _ ) . splice ( 0 , 10 )
899
+ ) ;
900
+ } ) ;
901
+ } ) ;
783
902
} ) ;
784
903
} ) ;
785
904
0 commit comments