test.rs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. use program_derived_addresses_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. "program_derived_addresses_program",
  9. program_derived_addresses_api::ID,
  10. processor!(program_derived_addresses_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. // Setup test
  18. let (mut banks, payer, blockhash) = setup().await;
  19. let test_user = Keypair::new();
  20. let page_visits_pda = page_visits_pda(&test_user.pubkey());
  21. let page_visits = PageVisits {
  22. page_visits: 0_u32.to_le_bytes(),
  23. bump: [page_visits_pda.1],
  24. };
  25. // Submit create transaction
  26. let ix_create = create(payer.pubkey(), test_user.pubkey(), page_visits);
  27. let tx_create = Transaction::new_signed_with_payer(
  28. &[ix_create],
  29. Some(&payer.pubkey()),
  30. &[&payer],
  31. blockhash,
  32. );
  33. let res_create = banks.process_transaction(tx_create).await;
  34. assert!(res_create.is_ok());
  35. // Submit increment transaction
  36. let ix_increment = increment(page_visits_pda.0);
  37. let tx_increment = Transaction::new_signed_with_payer(
  38. &[ix_increment],
  39. Some(&payer.pubkey()),
  40. &[&payer],
  41. blockhash,
  42. );
  43. let res_increment = banks.process_transaction(tx_increment).await;
  44. assert!(res_increment.is_ok());
  45. // Verify page visits was incremented
  46. let page_visits_account = banks.get_account(page_visits_pda.0).await.unwrap().unwrap();
  47. let page_visits = PageVisits::try_from_bytes(&page_visits_account.data).unwrap();
  48. assert_eq!(page_visits.page_visits(), 1);
  49. }