[−][src]Type Definition concordium_std::test_infrastructure::ReceiveContextTest
type ReceiveContextTest<'a> = ContextTest<'a, ReceiveOnlyDataTest>;
Placeholder for the receiving context. All the fields can be set optionally
and the getting an unset field will result in calling
fail!
. Use only in tests!
Setters
Every field have a setter function prefixed with set_
.
Example
Creating an empty context and setting the init_origin
.
let owner = AccountAddress([0u8; 32]); let mut ctx = ReceiveContextTest::empty(); ctx.set_owner(owner); ctx.set_sender(Address::Account(owner));
Set chain meta data
Chain meta data is set using setters on the context or by setters on a
mutable reference of ChainMetaTest
.
Example
Creating an empty context and setting the slot_time
metadata.
let mut ctx = ReceiveContextTest::empty(); ctx.set_metadata_slot_time(1609459200);
or
let mut ctx = ReceiveContextTest::empty(); ctx.metadata_mut().set_slot_time(1609459200);
Use case example
Creating a context for running unit tests
#[receive(contract = "mycontract", name = "receive")] fn contract_receive<R: HasReceiveContext, L: HasLogger, A: HasActions>( ctx: &R, amount: Amount, logger: &mut L, state: &mut State, ) -> ReceiveResult<A> { ensure!(ctx.sender().matches_account(&ctx.owner()), "Only the owner can increment."); Ok(A::accept()) } #[cfg(test)] mod tests { use super::*; use concordium_sc_base::test_infrastructure::*; #[test] fn test() { let owner = AccountAddress([0u8; 32]); let mut ctx = ReceiveContextTest::empty(); ctx.set_owner(owner); ctx.set_sender(Address::Account(owner)); ... let result: ReceiveResult<ActionsTree> = contract_receive(&ctx, 0, &mut logger, state); } }
Implementations
impl<'a> ReceiveContextTest<'a>
[src]
pub fn empty() -> Self
[src]
Create a ReceiveContextTest
where every field is unset, and getting
any of the fields will result in fail!
.