From 7b0e70d5e7148484ef11d44e3fef6425028f9d80 Mon Sep 17 00:00:00 2001 From: escaprt Date: Mon, 31 Aug 2026 11:42:20 +0100 Subject: [PATCH] test(adapter-common): add initial test coverage for common helpers --- packages/contracts/adapter-common/Cargo.toml | 3 ++ packages/contracts/adapter-common/src/lib.rs | 53 ++++++++++++++++++++ 2 files changed, 56 insertions(+) diff --git a/packages/contracts/adapter-common/Cargo.toml b/packages/contracts/adapter-common/Cargo.toml index 2428380d..e1918410 100644 --- a/packages/contracts/adapter-common/Cargo.toml +++ b/packages/contracts/adapter-common/Cargo.toml @@ -8,3 +8,6 @@ crate-type = ["rlib"] [dependencies] soroban-sdk = { version = "22.0.0", features = ["alloc"] } + +[dev-dependencies] +soroban-sdk = { version = "22.0.0", features = ["testutils", "alloc"] } diff --git a/packages/contracts/adapter-common/src/lib.rs b/packages/contracts/adapter-common/src/lib.rs index d3edd83f..bd388c67 100644 --- a/packages/contracts/adapter-common/src/lib.rs +++ b/packages/contracts/adapter-common/src/lib.rs @@ -100,3 +100,56 @@ where { value.unwrap_or_else(|| panic_with_error!(env, E::not_initialized())) } + +// --------------------------------------------------------------------------- +// Unit tests +// --------------------------------------------------------------------------- + +#[cfg(test)] +mod tests { + use super::*; + use soroban_sdk::{testutils::Address as _, Address, Env}; + + /// `get_vault` returns `None` before `store_vault_and_usdc` is called. + #[test] + fn get_vault_returns_none_before_init() { + let env = Env::default(); + assert_eq!(get_vault(&env), None); + } + + /// `get_vault` returns `Some(vault)` after `store_vault_and_usdc` is called. + #[test] + fn get_vault_returns_some_after_store() { + let env = Env::default(); + let vault = Address::generate(&env); + let usdc = Address::generate(&env); + + store_vault_and_usdc(&env, &vault, &usdc); + + assert_eq!(get_vault(&env), Some(vault)); + } + + /// `require_not_initialized` returns `Ok(())` on a fresh environment. + #[test] + fn require_not_initialized_ok_before_init() { + let env = Env::default(); + assert_eq!(require_not_initialized(&env), Ok(())); + } + + /// `require_not_initialized` returns `Err(AlreadyInitialized)` once + /// `VAULT_KEY` has been written via `store_vault_and_usdc`. + #[test] + fn require_not_initialized_errs_after_store() { + let env = Env::default(); + let vault = Address::generate(&env); + let usdc = Address::generate(&env); + + store_vault_and_usdc(&env, &vault, &usdc); + + assert_eq!( + require_not_initialized(&env), + Err(AdapterError::AlreadyInitialized) + ); + } +} +