integration_tests_pure.rs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. use std::assert_eq;
  2. use cdk::amount::SplitTarget;
  3. use cdk::nuts::nut00::ProofsMethods;
  4. use cdk::wallet::SendKind;
  5. use cdk::Amount;
  6. use cdk_integration_tests::init_pure_tests::{
  7. create_and_start_test_mint, create_test_wallet_for_mint, fund_wallet,
  8. };
  9. #[tokio::test]
  10. async fn test_swap_to_send() -> anyhow::Result<()> {
  11. let mint_bob = create_and_start_test_mint().await?;
  12. let wallet_alice = create_test_wallet_for_mint(mint_bob.clone()).await?;
  13. // Alice gets 64 sats
  14. fund_wallet(wallet_alice.clone(), 64).await?;
  15. let balance_alice = wallet_alice.total_balance().await?;
  16. assert_eq!(Amount::from(64), balance_alice);
  17. // Alice wants to send 40 sats, which internally swaps
  18. let token = wallet_alice
  19. .send(
  20. Amount::from(40),
  21. None,
  22. None,
  23. &SplitTarget::None,
  24. &SendKind::OnlineExact,
  25. false,
  26. )
  27. .await?;
  28. assert_eq!(Amount::from(40), token.proofs().total_amount()?);
  29. assert_eq!(Amount::from(24), wallet_alice.total_balance().await?);
  30. // Alice sends cashu, Carol receives
  31. let wallet_carol = create_test_wallet_for_mint(mint_bob.clone()).await?;
  32. let received_amount = wallet_carol
  33. .receive_proofs(token.proofs(), SplitTarget::None, &[], &[])
  34. .await?;
  35. assert_eq!(Amount::from(40), received_amount);
  36. assert_eq!(Amount::from(40), wallet_carol.total_balance().await?);
  37. Ok(())
  38. }