Crate cw_multi_test

source ·
Expand description

Multitest is a design to simulate a blockchain environment in pure Rust. This allows us to run unit tests that involve contract -> contract, and contract -> bank interactions. This is not intended to be a full blockchain app but to simulate the Cosmos SDK x/wasm module close enough to gain confidence in multi-contract deployements before testing them on a live blockchain.

To understand the design of this module, please refer to ../DESIGN.md

Modules

Structs

  • Router is a persisted state. You can query this. Execution generally happens on the RouterCache, which then can be atomically committed or rolled back. We offer .execute() as a wrapper around cache, execute, commit/rollback process.
  • Utility to build App in stages. If particular items wont be set, defaults would be used
  • Wraps the exported functions from a contract and provides the normalized format Place T4 and E4 at the end, as we just want default placeholders for most contracts that don’t have sudo

Enums

  • We use it to allow calling into modules from another module in sudo mode. Things like gov proposals belong here.

Traits

Functions

  • Creates new default App implementation working with customized exec and query messages. Outside of App implementation to make type elision better.

Type Definitions

  • Type alias for default build App to make its storing simpler in typical scenario
  • This is essential to create a custom app with custom handler. let mut app = BasicAppBuilder::<E, Q>::new_custom().with_custom(handler).build();