Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fullständig dokumentation #139

Draft
wants to merge 105 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
105 commits
Select commit Hold shift + click to select a range
dd6df10
Fixed style.
DariuszDepta Aug 14, 2024
b69f32a
Included the initial part of the plan.
DariuszDepta Aug 14, 2024
831e928
Updated plan.
DariuszDepta Aug 14, 2024
522b854
Updates.
DariuszDepta Aug 14, 2024
b383a72
Added block operations code examples.
DariuszDepta Aug 14, 2024
40ba944
Merge remote-tracking branch 'origin' into ddepta/multitest/helhetsdok
DariuszDepta Aug 14, 2024
23faa34
Updates.
DariuszDepta Aug 14, 2024
d0d8c70
Merge remote-tracking branch 'origin' into ddepta/multitest/helhetsdok
DariuszDepta Aug 14, 2024
f736ada
Updated starting dependencies.
DariuszDepta Aug 14, 2024
0e325de
Updated links in features.
DariuszDepta Aug 14, 2024
fbc50e3
Updated blocks.
DariuszDepta Aug 14, 2024
b119cad
Updates.
DariuszDepta Aug 14, 2024
f0c8203
Merge remote-tracking branch 'origin' into ddepta/multitest/helhetsdok
DariuszDepta Aug 15, 2024
72798ec
Added some chapters.
DariuszDepta Aug 15, 2024
00cd5bc
Updates.
DariuszDepta Aug 16, 2024
dc12950
Added source code highlighting.
DariuszDepta Aug 16, 2024
fcd5822
Updates.
DariuszDepta Aug 16, 2024
23b97f5
Updates.
DariuszDepta Aug 16, 2024
96ab854
Improved structure.
DariuszDepta Aug 16, 2024
fb6b26d
Updates.
DariuszDepta Aug 16, 2024
5adaea7
Updates.
DariuszDepta Aug 16, 2024
8faae92
Updates.
DariuszDepta Aug 16, 2024
83666b1
Updates.
DariuszDepta Aug 16, 2024
509f7e1
Updates.
DariuszDepta Aug 20, 2024
7bde953
Updates.
DariuszDepta Aug 20, 2024
1fea527
Updates.
DariuszDepta Aug 20, 2024
5d30f1a
Updates.
DariuszDepta Aug 20, 2024
dc43496
Updates.
DariuszDepta Aug 21, 2024
07a2b4e
Updates.
DariuszDepta Aug 21, 2024
b7052d4
Updates.
DariuszDepta Aug 21, 2024
c2158c4
Updates.
DariuszDepta Aug 26, 2024
6ec0a10
Updates.
DariuszDepta Aug 26, 2024
4491c2c
Updates.
DariuszDepta Aug 26, 2024
73bb646
Updates.
DariuszDepta Aug 26, 2024
854d9ab
Updates.
DariuszDepta Aug 27, 2024
86e5cf3
Updates.
DariuszDepta Aug 27, 2024
f1ba279
Updates.
DariuszDepta Aug 27, 2024
e4fd301
Updates.
DariuszDepta Aug 27, 2024
3162409
Updates.
DariuszDepta Aug 27, 2024
37f613a
Updates.
DariuszDepta Aug 27, 2024
2a7b64f
Merge remote-tracking branch 'origin' into ddepta/multitest/helhetsdok
DariuszDepta Aug 28, 2024
d7da37a
Updates.
DariuszDepta Aug 28, 2024
b34cd6e
Updates.
DariuszDepta Aug 28, 2024
c3983a0
Merge remote-tracking branch 'origin' into ddepta/multitest/helhetsdok
DariuszDepta Aug 29, 2024
b51ec91
Updates.
DariuszDepta Aug 29, 2024
f683c06
Updates.
DariuszDepta Aug 29, 2024
4b9b9d6
Updates.
DariuszDepta Aug 29, 2024
b0ece9e
Updates.
DariuszDepta Aug 29, 2024
1fe2477
Updates.
DariuszDepta Aug 29, 2024
52e78e1
Updates.
DariuszDepta Aug 29, 2024
a51b241
Updates.
DariuszDepta Aug 30, 2024
247f00e
Merge remote-tracking branch 'origin' into ddepta/multitest/helhetsdok
DariuszDepta Aug 30, 2024
c7ef092
Merge remote-tracking branch 'origin' into ddepta/multitest/helhetsdok
DariuszDepta Sep 2, 2024
410e170
Updates.
DariuszDepta Sep 2, 2024
a9a93c8
Updates.
DariuszDepta Sep 2, 2024
0a67889
Updates.
DariuszDepta Sep 2, 2024
4b0e535
Updates.
DariuszDepta Sep 2, 2024
a379ee2
Updates.
DariuszDepta Sep 3, 2024
ffb6739
Updates.
DariuszDepta Sep 3, 2024
3bc983e
Updates.
DariuszDepta Sep 3, 2024
0177a72
Updates.
DariuszDepta Sep 4, 2024
26fbb03
Updates.
DariuszDepta Sep 4, 2024
2aa1dbd
Updates.
DariuszDepta Sep 4, 2024
094b738
Updates.
DariuszDepta Sep 4, 2024
0cf8b2a
Updates.
DariuszDepta Sep 4, 2024
4638b28
Updates.
DariuszDepta Sep 4, 2024
341acda
Updates.
DariuszDepta Sep 4, 2024
85e7e5e
Updates.
DariuszDepta Sep 4, 2024
77366a5
Updates.
DariuszDepta Sep 4, 2024
78ba426
Updates.
DariuszDepta Sep 5, 2024
0081b9a
Updates.
DariuszDepta Sep 5, 2024
7ef3ef4
Updates.
DariuszDepta Sep 5, 2024
ec3dc0f
Updates.
DariuszDepta Sep 5, 2024
74da730
Updates.
DariuszDepta Sep 5, 2024
6c0acc6
Updates.
DariuszDepta Sep 5, 2024
4934794
Updates.
DariuszDepta Sep 5, 2024
ed7338a
Updates.
DariuszDepta Sep 5, 2024
d0fcac4
Updates.
DariuszDepta Sep 5, 2024
c7a234c
Updates.
DariuszDepta Sep 5, 2024
893556b
Updates.
DariuszDepta Sep 5, 2024
dc639cd
Merge remote-tracking branch 'origin' into ddepta/multitest/helhetsdok
DariuszDepta Sep 6, 2024
13fdc08
Updates.
DariuszDepta Sep 9, 2024
229d2d2
Updates.
DariuszDepta Sep 9, 2024
cf7335b
Updates.
DariuszDepta Sep 9, 2024
74d37e3
Updates.
DariuszDepta Sep 9, 2024
a857b0f
Updates.
DariuszDepta Sep 10, 2024
a55ea6c
Updates.
DariuszDepta Sep 10, 2024
ecd7ff9
Updates.
DariuszDepta Sep 10, 2024
12fa6cc
Updates.
DariuszDepta Sep 10, 2024
36e10f4
Updates.
DariuszDepta Sep 10, 2024
fdad84c
Updates.
DariuszDepta Sep 10, 2024
aca1dbe
Updates.
DariuszDepta Sep 10, 2024
7448dd1
Updates.
DariuszDepta Sep 10, 2024
b6cc395
Updates.
DariuszDepta Sep 10, 2024
f500ca9
Updates.
DariuszDepta Sep 11, 2024
07cefa4
Updates.
DariuszDepta Sep 11, 2024
f16dbf0
Updates.
DariuszDepta Sep 11, 2024
502adc3
Updates.
DariuszDepta Sep 11, 2024
d557745
Updates.
DariuszDepta Sep 11, 2024
ebba9c1
Updates.
DariuszDepta Sep 11, 2024
98636c4
Updates.
DariuszDepta Sep 11, 2024
19d22f9
Updates.
DariuszDepta Sep 16, 2024
5df1c4b
Updates.
DariuszDepta Oct 7, 2024
afd8185
Updates.
DariuszDepta Oct 7, 2024
1c3f5cc
Updates.
DariuszDepta Oct 7, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 15 additions & 11 deletions src/pages/cw-multi-test.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,31 +6,35 @@ import { Callout } from "nextra/components";

[file an issue]: https://github.com/CosmWasm/cw-multi-test/issues

# Introduction
# MultiTest

**`MultiTest`** is a suite of testing tools designed to facilitate multi-contract interactions
within the CosmWasm ecosystem. Its primary focus is on providing developers with a robust framework
for testing complex smart contract interactions and operations involving various Cosmos modules.
## Introduction

<Callout type="info">
**`MultiTest`** is a testing tool designed to facilitate multi-contract interactions within the
CosmWasm ecosystem. Its primary focus is on providing developers with a robust framework for
off-chain testing of complex smart contract interactions and operations involving various Cosmos
modules.

<Callout type="info" emoji="☉">
**`MultiTest`** is a blockchain **SIMULATOR**, allowing tested smart contracts to interact as if
they were operating on a real blockchain.
</Callout>

The most valuable advantage of using **`MultiTest`** is that it allows testing and debugging of
smart contracts with access to the Rust source code, eliminating the need to run a complete
blockchain node to begin designing the smart contract functionality. Additionally, **`MultiTest`**
The most valuable advantages of using **`MultiTest`** is that it allows for testing and debugging
smart contracts with access to the Rust source code and eliminates the need to run a complete
blockchain node to begin designing the functionality of the contract. Additionally, **`MultiTest`**
enables the execution of tests significantly faster than on a real blockchain, as it bypasses the
overhead associated with network consensus and block production. This results in a more efficient
development cycle, allowing for quicker iterations and faster identification of issues.
development cycle, allowing for quicker iterations and faster identification of issues, even before
the smart contract is deployed on the blockchain.

While **`MultiTest`** is a blockchain **SIMULATOR**, it may happen, that the behavior of the real
blockchain might slightly differ in some edge cases. We strongly encourage you to [file an issue]
with a detailed description of such use case to help us improve the **`MultiTest`**.

In the upcoming chapters, we provide detailed instructions on installing and getting started with
**`MultiTest`**, writing unit tests for smart contracts, testing complex interactions between smart
contracts and testing smart contract interactions with Cosmos modules.
**`MultiTest`**, writing integration tests for smart contracts, testing complex interactions between
smart contracts, and testing smart contract interactions with several Cosmos modules.

By the end of these chapters, you will have a comprehensive understanding of how to use
**`MultiTest`** for testing and debugging smart contracts in various scenarios.
Expand Down
19 changes: 18 additions & 1 deletion src/pages/cw-multi-test/_meta.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,21 @@
{
"installation": "Installation",
"features": "Features"
"features": "Features",
"getting-started": "Getting started",
"app": "App",
"app-builder": "AppBuilder",
"contract": "Contract",
"contract-wrapper": "ContractWrapper",
"blocks": "Blocks",
"api": "API",
"addresses": "Addresses",
"storage": "Storage",
"bank": "Bank",
"staking": "Staking",
"distribution": "Distribution",
"governance": "Governance",
"stargate": "Stargate",
"wasm": "Wasm",
"custom": "Custom",
"ibc": "IBC"
}
7 changes: 7 additions & 0 deletions src/pages/cw-multi-test/addresses.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
tags: ["multitest", "addresses"]
---

# Addresses

- `IntoAddr{:rust}`
17 changes: 17 additions & 0 deletions src/pages/cw-multi-test/api.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
tags: ["multitest", "API"]
---

# API

## Initialization with the default API

(some description)

- `App::default(){:rust}`
- `app.api(){:rust}`

```rust
let app = App::default();
app.api();
```
57 changes: 57 additions & 0 deletions src/pages/cw-multi-test/app-builder.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
---
tags: ["multitest", "AppBuilder"]
---

# `AppBuilder`

## with_block

```rust showLineNumbers {15} /with_block/
use cosmwasm_std::{BlockInfo, Timestamp};
use cw_multi_test::{no_init, AppBuilder};

// create the chain builder
let builder = AppBuilder::default();

// prepare the custom block
let block = BlockInfo {
height: 21,
time: Timestamp::from_nanos(1_571_797_419_879_305_544),
chain_id: "milky-way-testnet".to_string(),
};

// build the chain initialized with the custom block
let app = builder.with_block(block).build(no_init);

// get the current block properties
let block = app.block_info();

// now the block height is 21
assert_eq!(21, block.height);

// now the block timestamp is Wed Oct 23 2019 02:23:39 GMT+0000
assert_eq!(1_571_797_419_879_305_544, block.time.nanos());

// now the chain identifier is "milky-way-testnet"
assert_eq!("milky-way-testnet", block.chain_id);
```

## with_api

## with_storage

## with_bank

## with_staking

## with_distribution

## with_gov

## with_stargate

## with_wasm

## new_custom

## with_ibc
94 changes: 94 additions & 0 deletions src/pages/cw-multi-test/app.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
---
tags: ["multitest", "App"]
---

# `App`

The `App{:rust}` struct in **`MultiTest`** represents the blockchain simulator. Creating
`App{:rust}` mimics the startup of a real-life blockchain within tests that utilize **`MultiTest`**.

<br />

<div
style={{
textAlign: "center",
fontSize: "4em",
fontWeight: "bold",
verticalAlign: "middle",
background: "#005DC70D",
borderRadius: "0.2em",
}}
>
<div style={{ display: "inline-block", verticalAlign: "middle", color: "#9575CD" }}>App</div>
<div style={{ display: "inline-block", verticalAlign: "middle", fontWeight: "normal" }}>
&nbsp;=&nbsp;
</div>
<div style={{ display: "inline-block", verticalAlign: "middle" }}>
<div style={{ position: "relative", top: "0.1em", color: "#0D47A1" }}>Chain</div>
<div
style={{
fontSize: "0.4em",
fontWeight: "bold",
top: "-0.45em",
position: "relative",
color: "#1976D2",
}}
>
SIMULATOR
</div>
</div>
</div>

## `App::default`

The most straightforward way to create the `App{:rust}` is by using the `default` method, which is
the equivalent of calling the `new` constructor with an empty initialization callback.

```rust showLineNumbers copy /default/
use cw_multi_test::App;

let app = App::default();
```

```rust showLineNumbers copy /new/
use cw_multi_test::{no_init, App};

let app = App::new(no_init);
```

In both cases, the newly created `App{:rust}` object simulates a blockchain with the default
settings, as summarized in the table below:

| Feature | Default implementation |
| ---------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| [Blocks](blocks) | [`cosmwasm_std::mock_env().block{:rust}`](https://docs.rs/cosmwasm-std/latest/cosmwasm_std/testing/fn.mock_env.html) |
| [API](api) | [`cosmwasm_std::MockApi{:rust}`](https://docs.rs/cosmwasm-std/latest/cosmwasm_std/testing/struct.MockApi.html) |
| [Storage](storage) | [`cosmwasm_std::MockStorage{:rust}`](https://docs.rs/cosmwasm-std/latest/cosmwasm_std/testing/type.MockStorage.html) |
| [Bank](bank) | [`BankKeeper{:rust}`](https://docs.rs/cw-multi-test/latest/cw_multi_test/struct.BankKeeper.html) |
| [Staking](staking) | [`StakeKeeper{:rust}`](https://docs.rs/cw-multi-test/latest/cw_multi_test/struct.StakeKeeper.html) |
| [Distribution](distribution) | [`DistributionKeeper{:rust}`](https://docs.rs/cw-multi-test/latest/cw_multi_test/struct.DistributionKeeper.html) |
| [Governance](governance) | [`GovFailingModule{:rust}`](https://docs.rs/cw-multi-test/latest/cw_multi_test/type.GovFailingModule.html) |
| [Stargate](stargate) | [`StargateFailing{:rust}`](https://docs.rs/cw-multi-test/latest/cw_multi_test/struct.StargateFailing.html) |
| [Wasm](wasm) | [`WasmKeeper{:rust}`](https://docs.rs/cw-multi-test/latest/cw_multi_test/struct.WasmKeeper.html) |
| [Custom](custom) | [`FailingModule<Empty, Empty, Empty>{:rust}`](https://docs.rs/cw-multi-test/latest/cw_multi_test/struct.FailingModule.html) |
| [IBC](ibc) | [`IbcFailingModule{:rust}`](https://docs.rs/cw-multi-test/latest/cw_multi_test/type.IbcFailingModule.html) |

## `App::new`

(todo)

## Storing smart contract's code

(todo)

## Instantiating smart contract

(todo)

## Querying smart contract

(todo)

## Executing smart contract

(todo)
18 changes: 18 additions & 0 deletions src/pages/cw-multi-test/bank.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
tags: ["multitest", "bank"]
---

# Bank

- `BankKeeper{:rust}` (default implementation)

---

- `BankMsg::Send{:rust}`
- `BankMsg::Burn{:rust}`
- `BankQuery::AllBalances{:rust}`
- `BankQuery::Balance{:rust}`
- `BankQuery::Supply{:rust}`
- `BankQuery::DenomMetadata{:rust}`
- `BankQuery::AllDenomMetadata{:rust}`
- `BankSudo::Mint{:rust}`
Loading