123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- use solana_program::hash::Hash;
- use solana_program_test::{processor, BanksClient, ProgramTest};
- use solana_sdk::{
- native_token::LAMPORTS_PER_SOL, signature::Keypair, signer::Signer, system_instruction,
- transaction::Transaction,
- };
- use steel::*;
- use token_swap_api::prelude::*;
- async fn setup() -> (BanksClient, Keypair, Hash) {
- let mut program_test = ProgramTest::new(
- "token_swap_program",
- token_swap_api::ID,
- processor!(token_swap_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 admin = Keypair::new();
- let id = Keypair::new();
- let fee = 1000; // 10%
- // // create admin account
- // let tx = Transaction::new_signed_with_payer(
- // &[system_instruction::create_account(
- // &payer.pubkey(),
- // &admin.pubkey(),
- // 1 * LAMPORTS_PER_SOL,
- // 0,
- // &token_swap_api::ID,
- // )],
- // Some(&payer.pubkey()),
- // &[&payer, &admin],
- // blockhash,
- // );
- // let res = banks.process_transaction(tx).await;
- // assert!(res.is_ok());
- // Submit initialize transaction.
- let ix = create_amm(payer.pubkey(), admin.pubkey(), id.pubkey(), fee);
- let tx = Transaction::new_signed_with_payer(&[ix], Some(&payer.pubkey()), &[&payer], blockhash);
- let res = banks.process_transaction(tx).await;
- assert!(res.is_ok());
- let amm_address = amm_pda(id.pubkey()).0;
- let amm_account = banks.get_account(amm_address).await.unwrap().unwrap();
- let amm = Amm::try_from_bytes(&amm_account.data).unwrap();
- assert_eq!(amm_account.owner, token_swap_api::ID);
- assert_eq!(amm.id, id.pubkey());
- assert_eq!(amm.admin, admin.pubkey());
- assert_eq!(u16::from_le_bytes(amm.fee), fee);
- }
|