Files
descro/programs/descro/tests/test_complete.rs
2026-05-18 12:26:18 +02:00

63 lines
1.6 KiB
Rust

mod common;
use common::*;
use solana_signer::Signer;
#[test]
fn complete_releases_funds_to_seller() {
let (mut svm, seller, buyer, _resolver) = setup();
send(
&mut svm,
ix_create_escrow(&seller.pubkey(), &buyer.pubkey(), AMOUNT, None, ESCROW_ID),
&seller,
);
send(&mut svm, ix_deposit(&buyer.pubkey(), &seller.pubkey(), ESCROW_ID), &buyer);
let seller_before = svm.get_account(&seller.pubkey()).map(|a| a.lamports).unwrap_or(0);
send(
&mut svm,
ix_complete(&buyer.pubkey(), &seller.pubkey(), ESCROW_ID),
&buyer,
);
assert!(svm.get_account(&escrow_pda(&seller.pubkey(), ESCROW_ID)).is_none());
let seller_after = svm.get_account(&seller.pubkey()).map(|a| a.lamports).unwrap_or(0);
assert!(seller_after > seller_before);
}
#[test]
fn complete_before_deposit_fails() {
let (mut svm, seller, buyer, _resolver) = setup();
send(
&mut svm,
ix_create_escrow(&seller.pubkey(), &buyer.pubkey(), AMOUNT, None, ESCROW_ID),
&seller,
);
assert!(!try_send(
&mut svm,
ix_complete(&buyer.pubkey(), &seller.pubkey(), ESCROW_ID),
&buyer,
));
}
#[test]
fn complete_wrong_buyer_fails() {
let (mut svm, seller, buyer, resolver) = setup();
send(
&mut svm,
ix_create_escrow(&seller.pubkey(), &buyer.pubkey(), AMOUNT, None, ESCROW_ID),
&seller,
);
send(&mut svm, ix_deposit(&buyer.pubkey(), &seller.pubkey(), ESCROW_ID), &buyer);
assert!(!try_send(
&mut svm,
ix_complete(&resolver.pubkey(), &seller.pubkey(), ESCROW_ID),
&resolver,
));
}