adjust test and extend for tip

This commit is contained in:
Tadeo hepperle
2023-10-24 10:32:00 +02:00
parent ea59e6c5b5
commit 3dad99711e
2 changed files with 48 additions and 37 deletions
+1 -1
View File
@@ -668,7 +668,7 @@ impl<'a> ExtrinsicSignedExtensions<'a> {
/// The tip of an extrinsic, extracted from the ChargeTransactionPayment signed extension. /// The tip of an extrinsic, extracted from the ChargeTransactionPayment signed extension.
pub fn tip(&self) -> Option<u128> { pub fn tip(&self) -> Option<u128> {
let tip = self.find("ChargeTransactionPayment")?; let tip = self.find("ChargeAssetTxPayment")?;
let tip = Compact::<u128>::decode(&mut tip.bytes()).ok()?.0; let tip = Compact::<u128>::decode(&mut tip.bytes()).ok()?.0;
Some(tip) Some(tip)
} }
@@ -2,9 +2,13 @@
// This file is dual-licensed as Apache-2.0 or GPL-3.0. // This file is dual-licensed as Apache-2.0 or GPL-3.0.
// see LICENSE for license details. // see LICENSE for license details.
use crate::utils::TestContext;
use crate::{test_context, utils::node_runtime}; use crate::{test_context, utils::node_runtime};
use codec::{Compact, Encode}; use codec::{Compact, Encode};
use futures::StreamExt; use futures::StreamExt;
use std::future::Future;
use std::time::Duration;
use subxt::config::DefaultExtrinsicParamsBuilder;
use subxt_metadata::Metadata; use subxt_metadata::Metadata;
use subxt_signer::sr25519::dev; use subxt_signer::sr25519::dev;
@@ -235,46 +239,53 @@ async fn decode_signed_extensions_from_blocks() {
let alice = dev::alice(); let alice = dev::alice();
let bob = dev::bob(); let bob = dev::bob();
let submit_tranfer_extrinsic_and_get_it_back = || async { macro_rules! submit_transfer_extrinsic_and_get_it_back {
let tx = node_runtime::tx() ($tip:expr) => {{
.balances() let tx = node_runtime::tx()
.transfer_allow_death(bob.public_key().into(), 10_000); .balances()
.transfer_allow_death(bob.public_key().into(), 10_000);
let signed_extrinsic = api let signed_extrinsic = api
.tx() .tx()
.create_signed(&tx, &alice, Default::default()) .create_signed(
.await &tx,
.unwrap(); &alice,
DefaultExtrinsicParamsBuilder::new().tip($tip).build(),
)
.await
.unwrap();
let in_block = signed_extrinsic let in_block = signed_extrinsic
.submit_and_watch() .submit_and_watch()
.await .await
.unwrap() .unwrap()
.wait_for_in_block() .wait_for_finalized()
.await .await
.unwrap(); .unwrap();
let block_hash = in_block.block_hash(); let block_hash = in_block.block_hash();
let block = api.blocks().at(block_hash).await.unwrap(); let block = api.blocks().at(block_hash).await.unwrap();
let extrinsics = block.extrinsics().await.unwrap(); let extrinsics = block.extrinsics().await.unwrap();
let extrinsic_details = extrinsics.iter().next().unwrap().unwrap(); let extrinsic_details = extrinsics
extrinsic_details .iter()
}; .find_map(|e| e.ok().filter(|e| e.is_signed()))
.unwrap();
extrinsic_details
}};
}
let first_transaction = submit_tranfer_extrinsic_and_get_it_back().await; let transaction1 = submit_transfer_extrinsic_and_get_it_back!(1234);
let first_transaction_nonce = first_transaction let extensions1 = transaction1.signed_extensions().unwrap();
.signed_extensions() let nonce1 = extensions1.nonce().unwrap();
.unwrap() let tip1 = extensions1.tip().unwrap();
.nonce()
.unwrap();
let second_transaction = submit_tranfer_extrinsic_and_get_it_back().await; let transaction2 = submit_transfer_extrinsic_and_get_it_back!(5678);
let second_transaction_nonce = first_transaction let extensions2 = transaction2.signed_extensions().unwrap();
.signed_extensions() let nonce2 = extensions2.nonce().unwrap();
.unwrap() let tip2 = extensions2.tip().unwrap();
.nonce()
.unwrap();
assert_eq!(first_transaction_nonce, 0); assert_eq!(nonce1, 0);
assert_eq!(second_transaction_nonce, 1); assert_eq!(tip1, 1234);
assert_eq!(nonce2, 1);
assert_eq!(tip2, 5678);
} }