1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- use program_derived_addresses_api::prelude::*;
- use solana_program::hash::Hash;
- use solana_program_test::{processor, BanksClient, ProgramTest};
- use solana_sdk::{signature::Keypair, signer::Signer, transaction::Transaction};
- use steel::*;
- async fn setup() -> (BanksClient, Keypair, Hash) {
- let mut program_test = ProgramTest::new(
- "program_derived_addresses_program",
- program_derived_addresses_api::ID,
- processor!(program_derived_addresses_program::process_instruction),
- );
- program_test.prefer_bpf(true);
- program_test.start().await
- }
- #[tokio::test]
- async fn run_test() {
- // Setup test
- let (mut banks, payer, blockhash) = setup().await;
- let test_user = Keypair::new();
- let page_visits_pda = page_visits_pda(&test_user.pubkey());
- let page_visits = PageVisits {
- page_visits: 0_u32.to_le_bytes(),
- bump: [page_visits_pda.1],
- };
- // Submit create transaction
- let ix_create = create(payer.pubkey(), test_user.pubkey(), page_visits);
- let tx_create = Transaction::new_signed_with_payer(
- &[ix_create],
- Some(&payer.pubkey()),
- &[&payer],
- blockhash,
- );
- let res_create = banks.process_transaction(tx_create).await;
- assert!(res_create.is_ok());
- // Submit increment transaction
- let ix_increment = increment(page_visits_pda.0);
- let tx_increment = Transaction::new_signed_with_payer(
- &[ix_increment],
- Some(&payer.pubkey()),
- &[&payer],
- blockhash,
- );
- let res_increment = banks.process_transaction(tx_increment).await;
- assert!(res_increment.is_ok());
- // Verify page visits was incremented
- let page_visits_account = banks.get_account(page_visits_pda.0).await.unwrap().unwrap();
- let page_visits = PageVisits::try_from_bytes(&page_visits_account.data).unwrap();
- assert_eq!(page_visits.page_visits(), 1);
- }
|