Revert contracts put_code test to pure code (not using the macro)

This commit is contained in:
Andrew Jones
2020-09-14 13:44:11 +01:00
parent e85d01ed08
commit 9a8680246e
3 changed files with 106 additions and 38 deletions
+3
View File
@@ -19,6 +19,9 @@ include = ["Cargo.toml", "src/**/*.rs", "README.md", "LICENSE"]
[features] [features]
client = ["substrate-subxt-client"] client = ["substrate-subxt-client"]
# enable this feature to run tests which require a local dev chain node
integration-tests = []
[dependencies] [dependencies]
log = "0.4.11" log = "0.4.11"
thiserror = "1.0.20" thiserror = "1.0.20"
+70 -38
View File
@@ -117,43 +117,75 @@ pub struct InstantiatedEvent<T: Contracts> {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use sp_keyring::AccountKeyring;
subxt_test!({ use super::*;
name: test_put_code_and_instantiate, use crate::{ClientBuilder, PairSigner, ContractsTemplateRuntime};
prelude: {
const CONTRACT: &str = r#" fn contract_wasm() -> Vec<u8> {
(module const CONTRACT: &str = r#"
(func (export "call")) (module
(func (export "deploy")) (func (export "call"))
) (func (export "deploy"))
"#; )
let wasm = wabt::wat2wasm(CONTRACT).expect("invalid wabt"); "#;
let code_hash; wabt::wat2wasm(CONTRACT).expect("invalid wabt")
}, }
step: {
call: PutCodeCall { #[async_std::test]
_runtime: PhantomData, #[cfg(feature = "integration-tests")]
code: &wasm, async fn tx_put_code() {
}, env_logger::try_init().ok();
event: CodeStoredEvent {
code_hash: { let signer = PairSigner::new(AccountKeyring::Alice.pair());
code_hash = event.code_hash.clone(); let client = ClientBuilder::<ContractsTemplateRuntime>::new().build().await.unwrap();
event.code_hash.clone()
}, let code = contract_wasm();
}, let result = client.put_code_and_watch(&signer, &code).await.unwrap();
}, let code_stored = result.code_stored().unwrap();
step: {
call: InstantiateCall { assert!(
endowment: 100_000_000_000_000, code_stored.is_some(),
gas_limit: 500_000_000, format!(
code_hash: &code_hash, "Error calling put_code and receiving CodeStored Event: {:?}",
data: &[], code_stored
}, )
event: InstantiatedEvent { );
caller: alice.clone(), }
contract: event.contract.clone(),
}, // #[test]
}, // #[cfg(feature = "integration-tests")]
}); // fn tx_instantiate() {
// env_logger::try_init().ok();
// let result: Result<_, Error> = async_std::task::block_on(async move {
// let signer = AccountKeyring::Bob.pair();
// let client = test_client().await;
//
// let code_hash = put_code(&client, signer.clone()).await?;
//
// log::info!("Code hash: {:?}", code_hash);
//
// let xt = client.xt(signer, None).await?;
// let result = xt
// .watch()
// .submit(InstantiateCall {
// endowment: 100_000_000_000_000,
// gas_limit: 500_000_000,
// code_hash: &code_hash,
// data: &[],
// })
// .await?;
// let event = result
// .find_event::<InstantiatedEvent<_>>()?
// .ok_or(Error::Other("Failed to find Instantiated event".into()))?;
// Ok(event)
// });
//
// log::info!("Instantiate result: {:?}", result);
//
// assert!(
// result.is_ok(),
// format!("Error instantiating contract: {:?}", result)
// );
// }
} }
+33
View File
@@ -116,6 +116,39 @@ impl Balances for NodeTemplateRuntime {
impl Sudo for NodeTemplateRuntime {} impl Sudo for NodeTemplateRuntime {}
/// Concrete type definitions compatible with the node template, with the
/// contracts pallet enabled.
///
/// Inherits types from [`NodeTemplateRuntime`], but adds an implementation for
/// the contracts pallet trait.
#[derive(Debug, Clone, Eq, PartialEq)]
pub struct ContractsTemplateRuntime;
impl Runtime for ContractsTemplateRuntime {
type Signature = <NodeTemplateRuntime as Runtime>::Signature;
type Extra = DefaultExtra<Self>;
}
impl System for ContractsTemplateRuntime {
type Index = <NodeTemplateRuntime as System>::Index;
type BlockNumber = <NodeTemplateRuntime as System>::BlockNumber;
type Hash = <NodeTemplateRuntime as System>::Hash;
type Hashing = <NodeTemplateRuntime as System>::Hashing;
type AccountId = <NodeTemplateRuntime as System>::AccountId;
type Address = <NodeTemplateRuntime as System>::Address;
type Header = <NodeTemplateRuntime as System>::Header;
type Extrinsic = <NodeTemplateRuntime as System>::Extrinsic;
type AccountData = <NodeTemplateRuntime as System>::AccountData;
}
impl Balances for ContractsTemplateRuntime {
type Balance = <NodeTemplateRuntime as Balances>::Balance;
}
impl Contracts for ContractsTemplateRuntime {}
impl Sudo for ContractsTemplateRuntime {}
/// Concrete type definitions compatible with those for kusama, v0.7 /// Concrete type definitions compatible with those for kusama, v0.7
/// ///
/// # Note /// # Note