use crate::{Testbench, TestbenchTransactionResult};
use solana_program::system_instruction;
use solana_sdk::signer::keypair::Keypair;
use solana_sdk::signer::Signer;
pub struct TestUser {
pub keypair: Keypair,
}
impl TestUser {
pub async fn new(testbench: &mut Testbench) -> TestbenchTransactionResult<Self> {
let keypair = Keypair::new();
let instruction = system_instruction::transfer(
&testbench.payer().pubkey(),
&keypair.pubkey(),
150_000_000,
);
let payer = testbench.clone_payer();
testbench
.process_transaction(&[instruction], &payer, None)
.await
.map(|transaction_result| transaction_result.map(|_| Self { keypair }))
}
}