test.rs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. use lever_api::prelude::*;
  2. use solana_program::hash::Hash;
  3. use solana_program_test::{processor, BanksClient, ProgramTest};
  4. use solana_sdk::{signature::Keypair, signer::Signer, transaction::Transaction};
  5. use steel::*;
  6. async fn setup() -> (BanksClient, Keypair, Hash) {
  7. let mut program_test = ProgramTest::new(
  8. "lever_program",
  9. lever_api::ID,
  10. processor!(lever_program::process_instruction),
  11. );
  12. program_test.prefer_bpf(true);
  13. program_test.start().await
  14. }
  15. #[tokio::test]
  16. async fn run_test() {
  17. let (mut banks, payer, blockhash) = setup().await;
  18. let power_account = Keypair::new();
  19. // Submit initialize transaction.
  20. let ix = initialize(payer.pubkey(), power_account.pubkey());
  21. let tx = Transaction::new_signed_with_payer(
  22. &[ix],
  23. Some(&payer.pubkey()),
  24. &[&payer, &power_account],
  25. blockhash,
  26. );
  27. let res = banks.process_transaction(tx).await;
  28. assert!(res.is_ok());
  29. // Verify power account was initialized.
  30. let power_address = power_account.pubkey();
  31. let power_account = banks.get_account(power_address).await.unwrap().unwrap();
  32. let power_status = PowerStatus::try_from_bytes(&power_account.data).unwrap();
  33. assert_eq!(power_account.owner, lever_api::ID);
  34. assert_eq!(power_status.is_on, 0);
  35. // Submit switch_power transaction.
  36. let ix = switch_power(power_address, "Chris");
  37. let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[&payer], blockhash);
  38. let res = banks.process_transaction(tx).await;
  39. assert!(res.is_ok());
  40. // // Verify power_status was changed.
  41. let power_account = banks.get_account(power_address).await.unwrap().unwrap();
  42. let power_status = PowerStatus::try_from_bytes(&power_account.data).unwrap();
  43. assert_eq!(power_account.owner, lever_api::ID);
  44. assert_eq!(power_status.is_on, 1);
  45. }