From 1a3c3d6300a26df33102d00c07a8bbcc3f3c5c19 Mon Sep 17 00:00:00 2001 From: nakul1010 Date: Thu, 21 Dec 2023 12:24:15 +0530 Subject: [PATCH] fix: add integration test for get_premium_vaults method. --- crates/vault-registry/src/lib.rs | 6 ++-- crates/vault-registry/src/tests.rs | 7 ++-- .../runtime-tests/src/parachain/redeem.rs | 33 +++++++++++-------- 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/crates/vault-registry/src/lib.rs b/crates/vault-registry/src/lib.rs index 280abe73df..dda7892e74 100644 --- a/crates/vault-registry/src/lib.rs +++ b/crates/vault-registry/src/lib.rs @@ -1563,7 +1563,6 @@ impl Pallet { Ok(Self::get_vault_from_id(&vault_id)?.is_liquidated()) } - #[cfg(feature = "integration-tests")] // note: unlike `is_vault_below_secure_threshold` and `is_vault_below_liquidation_threshold`, // this function uses to_be_backed tokens pub fn will_be_below_premium_threshold(vault_id: &DefaultVaultId) -> Result { @@ -1707,7 +1706,10 @@ impl Pallet { let request_redeem_tokens_for_max_premium = vault_to_burn_tokens.checked_div(&amount_wrapped).ok()?; - if Self::ensure_not_banned(&vault_id).is_ok() && !request_redeem_tokens_for_max_premium.is_zero() { + if Self::ensure_not_banned(&vault_id).is_ok() && !request_redeem_tokens_for_max_premium.is_zero() + // need the check as `inclusion_fee` will be a non zero amount, hence `request_redeem_tokens_for_max_premium` will also be a non zero amount + && Self::will_be_below_premium_threshold(&vault_id).unwrap_or(false) + { Some((vault_id, request_redeem_tokens_for_max_premium)) } else { None diff --git a/crates/vault-registry/src/tests.rs b/crates/vault-registry/src/tests.rs index c617f5ac8b..8db94062c7 100644 --- a/crates/vault-registry/src/tests.rs +++ b/crates/vault-registry/src/tests.rs @@ -1052,14 +1052,13 @@ mod get_vaults_below_premium_collaterlization_tests { }) } - // ToDo: move test case to parachain test #[test] fn get_vaults_below_premium_collateralization_filters_banned_and_sufficiently_collateralized_vaults() { run_test(|| { // not returned, because is is not under premium threshold (which is set to 100% for this test) let id1 = vault_id(3); let issue_tokens1: u128 = 50; - let collateral1 = 61; + let collateral1 = 50; add_vault(id1.clone(), issue_tokens1, collateral1); // returned @@ -1081,8 +1080,8 @@ mod get_vaults_below_premium_collaterlization_tests { VaultRegistry::_set_secure_collateral_threshold(DEFAULT_CURRENCY_PAIR, secure); assert_eq!( - VaultRegistry::get_premium_redeem_vaults(0_u32), - Ok(vec!((id2, wrapped(20)))) + VaultRegistry::get_premium_redeem_vaults(10_u32), + Ok(vec!((id2, wrapped(issue_tokens2)))) ); }) } diff --git a/parachain/runtime/runtime-tests/src/parachain/redeem.rs b/parachain/runtime/runtime-tests/src/parachain/redeem.rs index 3e6077747a..de11a4972a 100644 --- a/parachain/runtime/runtime-tests/src/parachain/redeem.rs +++ b/parachain/runtime/runtime-tests/src/parachain/redeem.rs @@ -21,12 +21,12 @@ fn test_with(execute: impl Fn(VaultId) -> R) { }) }; - // test_with(Token(DOT), Token(KBTC), None); + test_with(Token(DOT), Token(KBTC), None); test_with(Token(DOT), Token(IBTC), None); - // test_with(Token(DOT), Token(IBTC), Some(Token(KSM))); - // test_with(Token(KSM), Token(IBTC), None); - // test_with(ForeignAsset(1), Token(IBTC), None); - // test_with(LendToken(1), Token(IBTC), None); + test_with(Token(DOT), Token(IBTC), Some(Token(KSM))); + test_with(Token(KSM), Token(IBTC), None); + test_with(ForeignAsset(1), Token(IBTC), None); + test_with(LendToken(1), Token(IBTC), None); } fn test_setup_for_premium_redeem(execute: impl Fn(VaultId) -> R) { @@ -49,12 +49,12 @@ fn test_setup_for_premium_redeem(execute: impl Fn(VaultId) -> R) { }) }; - // test_with(Token(DOT), Token(KBTC), None); + test_with(Token(DOT), Token(KBTC), None); test_with(Token(DOT), Token(IBTC), None); - // test_with(Token(DOT), Token(IBTC), Some(Token(KSM))); - // test_with(Token(KSM), Token(IBTC), None); - // test_with(ForeignAsset(1), Token(IBTC), None); - // test_with(LendToken(1), Token(IBTC), None); + test_with(Token(DOT), Token(IBTC), Some(Token(KSM))); + test_with(Token(KSM), Token(IBTC), None); + test_with(ForeignAsset(1), Token(IBTC), None); + test_with(LendToken(1), Token(IBTC), None); } fn common_setup( @@ -201,11 +201,16 @@ mod premium_redeem_tests { } #[test] - fn integration_test_try_get_premium_vaults_which_are_sufficiently_collateralized() { + fn integration_test_try_get_premium_vaults_which_is_sufficiently_collateralized_then_under_collateralized() { test_setup_for_premium_redeem(|vault_id| { - let premium_redeem_vaults = RedeemPallet::get_premium_redeem_vaults().unwrap(); - // Fixme: No premium vaults should be return, length of vector should be zero - assert_eq!(premium_redeem_vaults.len(), 2); + assert_noop!( + RedeemPallet::get_premium_redeem_vaults(), + VaultRegistryError::NoVaultUnderThePremiumRedeemThreshold + ); + + // put vault under premium redeem threshold + setup_vault_below_premium_threshold(vault_id.clone()); + assert_eq!(RedeemPallet::get_premium_redeem_vaults().unwrap().len(), 1); }); }