@@ -668,10 +668,18 @@ mod test {
668
668
use crate :: db:: { insert_campaign, insert_channel} ;
669
669
use crate :: test_util:: setup_dummy_app;
670
670
use crate :: CampaignRemaining ;
671
+ use adapter:: {
672
+ ethereum:: test_util:: { GANACHE_INFO_1 , GANACHE_INFO_1337 } ,
673
+ primitives:: Deposit as AdapterDeposit ,
674
+ } ;
671
675
use hyper:: StatusCode ;
672
676
use primitives:: {
673
- test_util:: { ADVERTISER , CREATOR , GUARDIAN , PUBLISHER , PUBLISHER_2 } ,
674
- test_util:: { DUMMY_CAMPAIGN , IDS } ,
677
+ channel:: Nonce ,
678
+ sentry:: channel_list:: ChannelListResponse ,
679
+ test_util:: {
680
+ ADVERTISER , CREATOR , DUMMY_CAMPAIGN , FOLLOWER , GUARDIAN , IDS , LEADER , LEADER_2 ,
681
+ PUBLISHER , PUBLISHER_2 ,
682
+ } ,
675
683
BigNum , Deposit , UnifiedMap , ValidatorId ,
676
684
} ;
677
685
@@ -690,7 +698,7 @@ mod test {
690
698
} ;
691
699
692
700
let precision: u8 = channel_context. token . precision . into ( ) ;
693
- let deposit = Deposit {
701
+ let deposit = AdapterDeposit {
694
702
total : BigNum :: from_str ( "100000000000000000000" ) . expect ( "should convert" ) , // 100 DAI
695
703
still_on_create2 : BigNum :: from_str ( "1000000000000000000" ) . expect ( "should convert" ) , // 1 DAI
696
704
} ;
@@ -731,7 +739,7 @@ mod test {
731
739
. expect ( "should return a spendable" ) ;
732
740
assert ! ( spendable. is_some( ) ) ;
733
741
734
- let updated_deposit = Deposit {
742
+ let updated_deposit = AdapterDeposit {
735
743
total : BigNum :: from_str ( "110000000000000000000" ) . expect ( "should convert" ) , // 110 DAI
736
744
still_on_create2 : BigNum :: from_str ( "1100000000000000000" ) . expect ( "should convert" ) , // 1.1 DAI
737
745
} ;
@@ -771,6 +779,14 @@ mod test {
771
779
accounting_response
772
780
}
773
781
782
+ async fn res_to_channel_list_response ( res : Response < Body > ) -> ChannelListResponse {
783
+ let json = hyper:: body:: to_bytes ( res. into_body ( ) )
784
+ . await
785
+ . expect ( "Should get json" ) ;
786
+
787
+ serde_json:: from_slice ( & json) . expect ( "Should deserialize ChannelListResponse" )
788
+ }
789
+
774
790
#[ tokio:: test]
775
791
async fn get_accountings_for_channel ( ) {
776
792
let app = setup_dummy_app ( ) . await ;
@@ -976,6 +992,149 @@ mod test {
976
992
) ;
977
993
}
978
994
995
+ #[ tokio:: test]
996
+ async fn get_channels_list ( ) {
997
+ let mut app = setup_dummy_app ( ) . await ;
998
+ app. config . channels_find_limit = 2 ;
999
+
1000
+ let channel = Channel {
1001
+ leader : IDS [ & LEADER ] ,
1002
+ follower : IDS [ & FOLLOWER ] ,
1003
+ guardian : * GUARDIAN ,
1004
+ token : GANACHE_INFO_1337 . tokens [ "Mocked TOKEN" ] . address ,
1005
+ nonce : Nonce :: from ( 987_654_321_u32 ) ,
1006
+ } ;
1007
+ insert_channel ( & app. pool , channel)
1008
+ . await
1009
+ . expect ( "should insert" ) ;
1010
+ let channel_other_token = Channel {
1011
+ leader : IDS [ & LEADER ] ,
1012
+ follower : IDS [ & FOLLOWER ] ,
1013
+ guardian : * GUARDIAN ,
1014
+ token : GANACHE_INFO_1 . tokens [ "Mocked TOKEN 2" ] . address ,
1015
+ nonce : Nonce :: from ( 987_654_322_u32 ) ,
1016
+ } ;
1017
+ insert_channel ( & app. pool , channel_other_token)
1018
+ . await
1019
+ . expect ( "should insert" ) ;
1020
+
1021
+ let channel_other_leader = Channel {
1022
+ leader : IDS [ & LEADER_2 ] ,
1023
+ follower : IDS [ & FOLLOWER ] ,
1024
+ guardian : * GUARDIAN ,
1025
+ token : GANACHE_INFO_1337 . tokens [ "Mocked TOKEN" ] . address ,
1026
+ nonce : Nonce :: from ( 987_654_323_u32 ) ,
1027
+ } ;
1028
+ insert_channel ( & app. pool , channel_other_leader)
1029
+ . await
1030
+ . expect ( "should insert" ) ;
1031
+
1032
+ let build_request = |query : ChannelListQuery | {
1033
+ let query = serde_urlencoded:: to_string ( query) . expect ( "should parse query" ) ;
1034
+ Request :: builder ( )
1035
+ . uri ( format ! ( "http://127.0.0.1/v5/channel/list?{}" , query) )
1036
+ . extension ( DUMMY_CAMPAIGN . channel . clone ( ) )
1037
+ . body ( Body :: empty ( ) )
1038
+ . expect ( "Should build Request" )
1039
+ } ;
1040
+
1041
+ // Test query page - page 0, page 1
1042
+ {
1043
+ let query = ChannelListQuery {
1044
+ page : 0 ,
1045
+ validator : None ,
1046
+ } ;
1047
+ let res = channel_list ( build_request ( query) , & app)
1048
+ . await
1049
+ . expect ( "should get channels" ) ;
1050
+ let channels_list = res_to_channel_list_response ( res) . await ;
1051
+
1052
+ assert_eq ! (
1053
+ channels_list. channels,
1054
+ vec![ channel, channel_other_token] ,
1055
+ "The channels should be listed by ascending order of their creation"
1056
+ ) ;
1057
+ assert_eq ! (
1058
+ channels_list. pagination. total_pages, 2 ,
1059
+ "There should be 2 pages in total"
1060
+ ) ;
1061
+
1062
+ let query = ChannelListQuery {
1063
+ page : 1 ,
1064
+ validator : None ,
1065
+ } ;
1066
+ let res = channel_list ( build_request ( query) , & app)
1067
+ . await
1068
+ . expect ( "should get channels" ) ;
1069
+ let channels_list = res_to_channel_list_response ( res) . await ;
1070
+ assert_eq ! (
1071
+ channels_list. channels,
1072
+ vec![ channel_other_leader] ,
1073
+ "The channels should be listed by ascending order of their creation"
1074
+ ) ;
1075
+ }
1076
+
1077
+ // Test query validator - query with validator ID
1078
+ {
1079
+ let query = ChannelListQuery {
1080
+ page : 0 ,
1081
+ validator : Some ( IDS [ & LEADER_2 ] ) ,
1082
+ } ;
1083
+ let res = channel_list ( build_request ( query) , & app)
1084
+ . await
1085
+ . expect ( "should get channels" ) ;
1086
+ let channels_list = res_to_channel_list_response ( res) . await ;
1087
+ assert_eq ! (
1088
+ channels_list. channels,
1089
+ vec![ channel_other_leader] ,
1090
+ "Response returns the correct channel"
1091
+ ) ;
1092
+ assert_eq ! (
1093
+ channels_list. pagination. total_pages, 1 ,
1094
+ "There should be 1 page in total"
1095
+ ) ;
1096
+ }
1097
+ // Test query with both pagination and validator by querying for the follower validator
1098
+ {
1099
+ let query = ChannelListQuery {
1100
+ page : 0 ,
1101
+ validator : Some ( IDS [ & FOLLOWER ] ) ,
1102
+ } ;
1103
+ let res = channel_list ( build_request ( query) , & app)
1104
+ . await
1105
+ . expect ( "should get channels" ) ;
1106
+ let channels_list = res_to_channel_list_response ( res) . await ;
1107
+
1108
+ assert_eq ! (
1109
+ channels_list. pagination. total_pages, 2 ,
1110
+ "There should be 2 pages in total"
1111
+ ) ;
1112
+ assert_eq ! (
1113
+ channels_list. channels,
1114
+ vec![ channel, channel_other_token] ,
1115
+ "The channels should be listed by ascending order of their creation"
1116
+ ) ;
1117
+
1118
+ let query = ChannelListQuery {
1119
+ page : 1 ,
1120
+ validator : Some ( IDS [ & FOLLOWER ] ) ,
1121
+ } ;
1122
+ let res = channel_list ( build_request ( query) , & app)
1123
+ . await
1124
+ . expect ( "should get channels" ) ;
1125
+ let channels_list = res_to_channel_list_response ( res) . await ;
1126
+ assert_eq ! (
1127
+ channels_list. channels,
1128
+ vec![ channel_other_leader] ,
1129
+ "The channels should be listed by ascending order of their creation"
1130
+ ) ;
1131
+ assert_eq ! (
1132
+ channels_list. pagination. total_pages, 2 ,
1133
+ "There should be 2 pages in total"
1134
+ ) ;
1135
+ }
1136
+ }
1137
+
979
1138
#[ tokio:: test]
980
1139
async fn payouts_for_earners_test ( ) {
981
1140
let app = setup_dummy_app ( ) . await ;
0 commit comments