use stellar_axelar_std::interfaces::PausableClient;
use stellar_axelar_std::testutils::Address as _;
use stellar_axelar_std::{assert_auth, contract, Address, Env};
use stellar_axelar_std_derive::{contractimpl, Ownable, Pausable};
use crate as stellar_axelar_std;
#[contract]
#[derive(Ownable, Pausable)]
pub struct Contract;
#[contractimpl]
impl Contract {
pub fn __constructor(env: &Env, owner: Address) {
stellar_axelar_std::interfaces::set_owner(env, &owner);
}
}
#[test]
fn contract_pause_unpause_succeeds() {
let env = Env::default();
let owner = Address::generate(&env);
let contract_id = env.register(Contract, (owner.clone(),));
let client = PausableClient::new(&env, &contract_id);
assert!(!client.paused());
assert_auth!(owner, client.pause());
assert!(client.paused());
assert_auth!(owner, client.unpause());
assert!(!client.paused());
}