mirror of
https://github.com/serai-dex/serai.git
synced 2024-12-23 20:19:24 +00:00
9da0eb69c7
It originally wasn't an enum so software which had yet to update before an integration wouldn't error (as now enums are strictly typed). The strict typing is preferable though.
55 lines
1.6 KiB
Rust
55 lines
1.6 KiB
Rust
use rand_core::{RngCore, OsRng};
|
|
|
|
use serai_client::{
|
|
primitives::{Amount, NetworkId, Coin, Balance, BlockHash, SeraiAddress},
|
|
in_instructions::{
|
|
primitives::{InInstruction, InInstructionWithBalance, Batch},
|
|
InInstructionsEvent,
|
|
},
|
|
tokens::TokensEvent,
|
|
Serai,
|
|
};
|
|
|
|
mod common;
|
|
use common::{serai, in_instructions::provide_batch};
|
|
|
|
serai_test!(
|
|
async fn publish_batch() {
|
|
let network = NetworkId::Bitcoin;
|
|
let id = 0;
|
|
|
|
let mut block_hash = BlockHash([0; 32]);
|
|
OsRng.fill_bytes(&mut block_hash.0);
|
|
|
|
let mut address = SeraiAddress::new([0; 32]);
|
|
OsRng.fill_bytes(&mut address.0);
|
|
|
|
let coin = Coin::Bitcoin;
|
|
let amount = Amount(OsRng.next_u64().saturating_add(1));
|
|
let balance = Balance { coin, amount };
|
|
|
|
let batch = Batch {
|
|
network,
|
|
id,
|
|
block: block_hash,
|
|
instructions: vec![InInstructionWithBalance {
|
|
instruction: InInstruction::Transfer(address),
|
|
balance,
|
|
}],
|
|
};
|
|
|
|
let block = provide_batch(batch).await;
|
|
|
|
let serai = serai().await;
|
|
assert_eq!(serai.get_latest_block_for_network(block, network).await.unwrap(), Some(block_hash));
|
|
let batches = serai.get_batch_events(block).await.unwrap();
|
|
assert_eq!(batches, vec![InInstructionsEvent::Batch { network, id, block: block_hash }]);
|
|
|
|
assert_eq!(
|
|
serai.get_mint_events(block).await.unwrap(),
|
|
vec![TokensEvent::Mint { address, balance }],
|
|
);
|
|
assert_eq!(serai.get_token_supply(block, coin).await.unwrap(), amount);
|
|
assert_eq!(serai.get_token_balance(block, coin, address).await.unwrap(), amount);
|
|
}
|
|
);
|