use crate::{
test_utils::builder::Contract,
tests::{builder, ExtBuilder, Test},
Code, Config,
};
use alloy_core::sol_types::SolCall;
use frame_support::traits::fungible::Mutate;
use pallet_revive_fixtures::{compile_module_with_type, FixtureType, StipendTest};
#[test]
fn evm_call_stipends_work_for_transfers() {
let (code, _) = compile_module_with_type("StipendTest", FixtureType::Solc).unwrap();
ExtBuilder::default().build().execute_with(|| {
let _ =
<Test as Config>::Currency::set_balance(&crate::test_utils::ALICE, 10_000_000_000_000);
let Contract { addr, .. } =
builder::bare_instantiate(Code::Upload(code)).build_and_unwrap_contract();
let result = builder::bare_call(addr)
.data(StipendTest::testTransferCall {}.abi_encode())
.evm_value(1_000_000_u128.into())
.build();
assert!(!result.result.unwrap().did_revert());
});
}
#[test]
fn evm_call_stipends_work_for_sends() {
let (code, _) = compile_module_with_type("StipendTest", FixtureType::Solc).unwrap();
ExtBuilder::default().build().execute_with(|| {
let _ =
<Test as Config>::Currency::set_balance(&crate::test_utils::ALICE, 10_000_000_000_000);
let Contract { addr, .. } =
builder::bare_instantiate(Code::Upload(code)).build_and_unwrap_contract();
let result = builder::bare_call(addr)
.data(StipendTest::testSendCall {}.abi_encode())
.evm_value(1_000_000_u128.into())
.build();
assert!(!result.result.unwrap().did_revert());
});
}
#[test]
fn evm_call_stipends_work_for_calls() {
let (code, _) = compile_module_with_type("StipendTest", FixtureType::Solc).unwrap();
ExtBuilder::default().build().execute_with(|| {
let _ =
<Test as Config>::Currency::set_balance(&crate::test_utils::ALICE, 10_000_000_000_000);
let Contract { addr, .. } =
builder::bare_instantiate(Code::Upload(code)).build_and_unwrap_contract();
let result = builder::bare_call(addr)
.data(StipendTest::testCallCall {}.abi_encode())
.evm_value(1_000_000_u128.into())
.build();
assert!(!result.result.unwrap().did_revert());
});
}