Crates.io | drink-pink-runtime |
lib.rs | drink-pink-runtime |
version | 1.2.16-dev.1 |
source | src |
created_at | 2023-11-06 11:19:51.202019 |
updated_at | 2024-02-21 01:24:44.934474 |
description | A drink runtime implementation for Phat Contract |
homepage | |
repository | |
max_upload_size | |
id | 1026820 |
size | 3,133,842 |
drink-pink-runtime
is a runtime implementation for drink framework for Pink contract environment. It extends Drink functionalities, offering a more convenient approach to writing strongly-typed tests for Pink contracts. This crate simplifies testing by simulating contract deployment, transaction execution, and queries in a Pink contract environment.
To include drink-pink-runtime
in your project, add it to your Cargo.toml
:
[dependencies]
pink-extension = "0.5"
drink = "0.8.0"
drink-pink-runtime = "1.2"
Here's an example demonstrating the basic usage of drink-pink-runtime
. This includes setting up a test environment, deploying a contract bundle, and simulating transactions and queries.
#[cfg(test)]
mod tests {
use drink_pink_runtime::{PinkRuntime, SessionExt, DeployBundle, Callable};
use drink::session::Session;
use super::YourContractRef;
// This would compile all contracts dependended by your contract
#[drink::contract_bundle_provider]
enum BundleProvider {}
#[test]
fn example_test() -> Result<(), Box<dyn std::error::Error>> {
let mut session = Session::<PinkRuntime>::new()?;
// Deploy a contract bundle
let contract_ref = YourContractRef::new().deploy_bundle(&BundleProvider::local()?, &mut session)?;
// Set the deployed contract as a driver
session.set_driver("YourDriverName", &contract_ref)?;
// Simulate a transaction
contract_ref.call_mut().your_transaction_method().submit_tx(&mut session)?;
// Simulate a query
let query_result = contract_ref.call().your_query_method().query(&mut session)?;
Ok(())
}
}