mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-14 05:11:09 +00:00
adjust test and extend for tip
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user