@@ -1141,6 +1141,89 @@ describe('mempool tests', () => {
11411141 expect ( JSON . parse ( searchResult7 . text ) ) . toEqual ( expectedResp7 ) ;
11421142 } ) ;
11431143
1144+ test ( 'fetch mempool-tx list sorted' , async ( ) => {
1145+ const sendAddr = 'SP25YGP221F01S9SSCGN114MKDAK9VRK8P3KXGEMB' ;
1146+ const recvAddr = 'SP10EZK56MB87JYF5A704K7N18YAT6G6M09HY22GC' ;
1147+
1148+ const block = new TestBlockBuilder ( ) . addTx ( ) . build ( ) ;
1149+ await db . update ( block ) ;
1150+ const txs : DbMempoolTxRaw [ ] = [ ] ;
1151+ for ( let index = 0 ; index < 5 ; index ++ ) {
1152+ const paddedIndex = ( '00' + index ) . slice ( - 2 ) ;
1153+ const mempoolTx : DbMempoolTxRaw = {
1154+ pruned : false ,
1155+ tx_id : `0x89120000000000000000000000000000000000000000000000000000000000${ paddedIndex } ` ,
1156+ anchor_mode : 3 ,
1157+ nonce : 0 ,
1158+ raw_tx : bufferToHex ( Buffer . from ( 'x' . repeat ( index + 1 ) ) ) ,
1159+ type_id : DbTxTypeId . TokenTransfer ,
1160+ receipt_time : ( new Date ( `2020-07-09T15:14:${ paddedIndex } Z` ) . getTime ( ) / 1000 ) | 0 ,
1161+ status : 1 ,
1162+ post_conditions : '0x01f5' ,
1163+ fee_rate : 100n * BigInt ( index + 1 ) ,
1164+ sponsored : false ,
1165+ sponsor_address : undefined ,
1166+ origin_hash_mode : 1 ,
1167+ sender_address : sendAddr ,
1168+ token_transfer_recipient_address : recvAddr ,
1169+ token_transfer_amount : 1234n ,
1170+ token_transfer_memo : '' ,
1171+ } ;
1172+ txs . push ( mempoolTx ) ;
1173+ }
1174+ await db . updateMempoolTxs ( { mempoolTxs : txs } ) ;
1175+
1176+ let result = await supertest ( api . server ) . get ( `/extended/v1/tx/mempool?order_by=fee&order=desc` ) ;
1177+ let json = JSON . parse ( result . text ) ;
1178+ expect ( json . results [ 0 ] . fee_rate ) . toBe ( '500' ) ;
1179+ expect ( json . results [ 1 ] . fee_rate ) . toBe ( '400' ) ;
1180+ expect ( json . results [ 2 ] . fee_rate ) . toBe ( '300' ) ;
1181+ expect ( json . results [ 3 ] . fee_rate ) . toBe ( '200' ) ;
1182+ expect ( json . results [ 4 ] . fee_rate ) . toBe ( '100' ) ;
1183+
1184+ result = await supertest ( api . server ) . get ( `/extended/v1/tx/mempool?order_by=fee&order=asc` ) ;
1185+ json = JSON . parse ( result . text ) ;
1186+ expect ( json . results [ 0 ] . fee_rate ) . toBe ( '100' ) ;
1187+ expect ( json . results [ 1 ] . fee_rate ) . toBe ( '200' ) ;
1188+ expect ( json . results [ 2 ] . fee_rate ) . toBe ( '300' ) ;
1189+ expect ( json . results [ 3 ] . fee_rate ) . toBe ( '400' ) ;
1190+ expect ( json . results [ 4 ] . fee_rate ) . toBe ( '500' ) ;
1191+
1192+ // Larger transactions were set with higher fees.
1193+ result = await supertest ( api . server ) . get ( `/extended/v1/tx/mempool?order_by=size&order=desc` ) ;
1194+ json = JSON . parse ( result . text ) ;
1195+ expect ( json . results [ 0 ] . fee_rate ) . toBe ( '500' ) ;
1196+ expect ( json . results [ 1 ] . fee_rate ) . toBe ( '400' ) ;
1197+ expect ( json . results [ 2 ] . fee_rate ) . toBe ( '300' ) ;
1198+ expect ( json . results [ 3 ] . fee_rate ) . toBe ( '200' ) ;
1199+ expect ( json . results [ 4 ] . fee_rate ) . toBe ( '100' ) ;
1200+
1201+ result = await supertest ( api . server ) . get ( `/extended/v1/tx/mempool?order_by=size&order=asc` ) ;
1202+ json = JSON . parse ( result . text ) ;
1203+ expect ( json . results [ 0 ] . fee_rate ) . toBe ( '100' ) ;
1204+ expect ( json . results [ 1 ] . fee_rate ) . toBe ( '200' ) ;
1205+ expect ( json . results [ 2 ] . fee_rate ) . toBe ( '300' ) ;
1206+ expect ( json . results [ 3 ] . fee_rate ) . toBe ( '400' ) ;
1207+ expect ( json . results [ 4 ] . fee_rate ) . toBe ( '500' ) ;
1208+
1209+ // Newer transactions were set with higher fees.
1210+ result = await supertest ( api . server ) . get ( `/extended/v1/tx/mempool?order_by=age&order=desc` ) ;
1211+ json = JSON . parse ( result . text ) ;
1212+ expect ( json . results [ 0 ] . fee_rate ) . toBe ( '500' ) ;
1213+ expect ( json . results [ 1 ] . fee_rate ) . toBe ( '400' ) ;
1214+ expect ( json . results [ 2 ] . fee_rate ) . toBe ( '300' ) ;
1215+ expect ( json . results [ 3 ] . fee_rate ) . toBe ( '200' ) ;
1216+ expect ( json . results [ 4 ] . fee_rate ) . toBe ( '100' ) ;
1217+
1218+ result = await supertest ( api . server ) . get ( `/extended/v1/tx/mempool?order_by=age&order=asc` ) ;
1219+ json = JSON . parse ( result . text ) ;
1220+ expect ( json . results [ 0 ] . fee_rate ) . toBe ( '100' ) ;
1221+ expect ( json . results [ 1 ] . fee_rate ) . toBe ( '200' ) ;
1222+ expect ( json . results [ 2 ] . fee_rate ) . toBe ( '300' ) ;
1223+ expect ( json . results [ 3 ] . fee_rate ) . toBe ( '400' ) ;
1224+ expect ( json . results [ 4 ] . fee_rate ) . toBe ( '500' ) ;
1225+ } ) ;
1226+
11441227 test ( 'mempool - contract_call tx abi details are retrieved' , async ( ) => {
11451228 const block1 = new TestBlockBuilder ( )
11461229 . addTx ( )
0 commit comments