test.rs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. use litesvm::LiteSVM;
  2. use repository_layout_program::processor::CarnivalInstructionData;
  3. use solana_instruction::{AccountMeta, Instruction};
  4. use solana_keypair::{Keypair, Signer};
  5. use solana_program::native_token::LAMPORTS_PER_SOL;
  6. use solana_pubkey::Pubkey;
  7. use solana_transaction::Transaction;
  8. #[test]
  9. fn test_repo_layout() {
  10. let mut svm = LiteSVM::new();
  11. let program_id = Pubkey::new_unique();
  12. let program_bytes = include_bytes!("../../tests/fixtures/repository_layout_program.so");
  13. svm.add_program(program_id, program_bytes).unwrap();
  14. let payer = Keypair::new();
  15. svm.airdrop(&payer.pubkey(), LAMPORTS_PER_SOL * 10).unwrap();
  16. let data = borsh::to_vec(&CarnivalInstructionData {
  17. name: "Jimmy".to_string(),
  18. height: 36,
  19. ticket_count: 15,
  20. attraction: "ride".to_string(),
  21. attraction_name: "Scrambler".to_string(),
  22. })
  23. .unwrap();
  24. let ix = Instruction {
  25. program_id,
  26. accounts: vec![AccountMeta::new(payer.pubkey(), true)],
  27. data,
  28. };
  29. let tx = Transaction::new_signed_with_payer(
  30. &[ix],
  31. Some(&payer.pubkey()),
  32. &[&payer],
  33. svm.latest_blockhash(),
  34. );
  35. let _ = svm.send_transaction(tx).is_ok();
  36. let data = borsh::to_vec(&CarnivalInstructionData {
  37. name: "Jimmy".to_string(),
  38. height: 36,
  39. ticket_count: 15,
  40. attraction: "game".to_string(),
  41. attraction_name: "I Got it!".to_string(),
  42. })
  43. .unwrap();
  44. let ix = Instruction {
  45. program_id,
  46. accounts: vec![AccountMeta::new(payer.pubkey(), true)],
  47. data,
  48. };
  49. let tx = Transaction::new_signed_with_payer(
  50. &[ix],
  51. Some(&payer.pubkey()),
  52. &[&payer],
  53. svm.latest_blockhash(),
  54. );
  55. let _ = svm.send_transaction(tx).is_ok();
  56. let data = borsh::to_vec(&CarnivalInstructionData {
  57. name: "Jimmy".to_string(),
  58. height: 36,
  59. ticket_count: 15,
  60. attraction: "food".to_string(),
  61. attraction_name: "Taco Shack".to_string(),
  62. })
  63. .unwrap();
  64. let ix = Instruction {
  65. program_id,
  66. accounts: vec![AccountMeta::new(payer.pubkey(), true)],
  67. data,
  68. };
  69. let tx = Transaction::new_signed_with_payer(
  70. &[ix],
  71. Some(&payer.pubkey()),
  72. &[&payer],
  73. svm.latest_blockhash(),
  74. );
  75. let _ = svm.send_transaction(tx).is_ok();
  76. }