From 1f10634f18d907debf1db73aeeb637f49e06e8e3 Mon Sep 17 00:00:00 2001 From: Lars Lubkoll <11710767+lubkoll@users.noreply.github.com> Date: Wed, 17 Jul 2024 19:41:43 +0200 Subject: [PATCH] Remove test tube tests --- .../contracts/dex-router-osmosis/Cargo.toml | 3 - .../src/tests/initialize.rs | 405 ------------------ .../dex-router-osmosis/src/tests/mod.rs | 1 - .../src/tests/remove_path.rs | 65 +-- .../dex-router-osmosis/src/tests/set_path.rs | 68 +-- .../dex-router-osmosis/src/tests/swap.rs | 198 +-------- .../contracts/merkle-incentives/Cargo.toml | 5 +- 7 files changed, 4 insertions(+), 741 deletions(-) delete mode 100644 smart-contracts/contracts/dex-router-osmosis/src/tests/initialize.rs diff --git a/smart-contracts/contracts/dex-router-osmosis/Cargo.toml b/smart-contracts/contracts/dex-router-osmosis/Cargo.toml index 0deba71fa..e394e973e 100644 --- a/smart-contracts/contracts/dex-router-osmosis/Cargo.toml +++ b/smart-contracts/contracts/dex-router-osmosis/Cargo.toml @@ -36,6 +36,3 @@ mars-owner = { workspace = true } osmosis-std = { workspace = true } quasar-types = { workspace = true } prost = { workspace = true } - -[dev-dependencies] -osmosis-test-tube = { workspace = true, optional = true } diff --git a/smart-contracts/contracts/dex-router-osmosis/src/tests/initialize.rs b/smart-contracts/contracts/dex-router-osmosis/src/tests/initialize.rs deleted file mode 100644 index e3546b31c..000000000 --- a/smart-contracts/contracts/dex-router-osmosis/src/tests/initialize.rs +++ /dev/null @@ -1,405 +0,0 @@ -use std::str::FromStr; - -use cosmwasm_schema::cw_serde; -use cosmwasm_std::{Addr, Attribute, Coin, Decimal, Uint128}; -use osmosis_std::types::cosmos::base::v1beta1::Coin as OsmoCoin; -use osmosis_std::types::cosmwasm::wasm::v1::MsgExecuteContractResponse; -use osmosis_std::types::osmosis::concentratedliquidity::v1beta1::{ - CreateConcentratedLiquidityPoolsProposal, Pool, PoolRecord, PoolsRequest, -}; -use osmosis_std::types::osmosis::gamm::v1beta1::MsgJoinPool; -use osmosis_std::types::osmosis::poolmanager::v1beta1::{SpotPriceRequest, SwapAmountInRoute}; - -use osmosis_test_tube::osmosis_std::types::osmosis::gamm::poolmodels::balancer::v1beta1::MsgCreateBalancerPool; -use osmosis_test_tube::osmosis_std::types::osmosis::gamm::v1beta1::PoolAsset; -use osmosis_test_tube::{ - cosmrs::proto::traits::Message, - osmosis_std::types::osmosis::concentratedliquidity::{ - poolmodel::concentrated::v1beta1::MsgCreateConcentratedPool, v1beta1::MsgCreatePosition, - }, - Account, ConcentratedLiquidity, GovWithAppAccess, Module, OsmosisTestApp, PoolManager, - SigningAccount, Wasm, -}; -use osmosis_test_tube::{ExecuteResponse, Gamm}; - -use crate::msg::{BestPathForPairResponse, ExecuteMsg, InstantiateMsg, QueryMsg}; - -pub(crate) const ADMIN_BALANCE_AMOUNT: u128 = 3402823669209384634633746074317682114u128; -pub(crate) const TOKENS_PROVIDED_AMOUNT: &str = "1000000000000"; -pub(crate) const FEE_DENOM: &str = "uosmo"; -pub(crate) const DENOM_BASE: &str = "udydx"; -pub(crate) const DENOM_QUOTE: &str = "uryeth"; -pub(crate) const INTERMEDIATE_QUOTE: &str = "uwosmo"; -pub(crate) const TESTUBE_BINARY: &str = - "./test-tube-build/wasm32-unknown-unknown/release/dex_router_osmosis.wasm"; - -#[cw_serde] -pub struct PoolWithDenoms { - pub pool: u64, - pub denom0: String, - pub denom1: String, -} - -pub fn single_cl_pool_fixture( - app: &OsmosisTestApp, - admin: &SigningAccount, - denoms: Vec, - mut pools: Vec, -) -> Vec { - let cl_pool = MsgCreateConcentratedPool { - sender: "overwritten".to_string(), - denom0: denoms[0].clone(), - denom1: denoms[1].clone(), - tick_spacing: 100, - spread_factor: Decimal::from_str("0.01").unwrap().atomics().to_string(), - }; - - let pm = PoolManager::new(app); - let cl = ConcentratedLiquidity::new(app); - let gov = GovWithAppAccess::new(&app); - - gov.propose_and_execute( - CreateConcentratedLiquidityPoolsProposal::TYPE_URL.to_string(), - CreateConcentratedLiquidityPoolsProposal { - title: "CL Pool".to_string(), - description: "So that we can trade it".to_string(), - pool_records: vec![PoolRecord { - denom0: cl_pool.denom0.clone(), - denom1: cl_pool.denom1.clone(), - tick_spacing: cl_pool.tick_spacing.clone(), - spread_factor: cl_pool.spread_factor.clone(), - }], - }, - admin.address(), - &admin, - ) - .unwrap(); - - let pools_response = cl.query_pools(&PoolsRequest { pagination: None }).unwrap(); - - // Find the pool with the specified denoms - let matching_pool = pools_response.pools.iter().find_map(|pool_any| { - if let Ok(pool) = Pool::decode(pool_any.value.as_slice()) { - if pool.token0 == cl_pool.denom0 && pool.token1 == cl_pool.denom1 { - return Some(pool); - } - } - None - }); - - if let Some(pool) = matching_pool { - let mut tokens_provided = vec![ - OsmoCoin { - denom: pool.token0.to_string(), - amount: TOKENS_PROVIDED_AMOUNT.to_string(), - }, - OsmoCoin { - denom: pool.token1.to_string(), - amount: TOKENS_PROVIDED_AMOUNT.to_string(), - }, - ]; - - tokens_provided.sort_by(|a, b| a.denom.cmp(&b.denom)); - - cl.create_position( - MsgCreatePosition { - pool_id: pool.id, - sender: admin.address(), - lower_tick: -5000000, - upper_tick: 500000, - tokens_provided: tokens_provided.clone(), - token_min_amount0: "1".to_string(), - token_min_amount1: "1".to_string(), - }, - &admin, - ) - .unwrap(); - - let spot_price = pm - .query_spot_price(&SpotPriceRequest { - base_asset_denom: tokens_provided[0].denom.to_string(), - quote_asset_denom: tokens_provided[1].denom.to_string(), - pool_id: pool.id, - }) - .unwrap(); - assert_eq!(spot_price.spot_price, "1.000000000000000000"); - - pools.push(PoolWithDenoms { - pool: pool.id, - denom0: cl_pool.denom0, - denom1: cl_pool.denom1, - }); - } else { - println!("Pool with the specified denoms not found."); - } - - pools -} - -pub fn single_gamm_pool_fixture( - app: &OsmosisTestApp, - admin: &SigningAccount, - denoms: Vec, - mut pools: Vec, -) -> Vec { - let gamm_pool = MsgCreateBalancerPool { - sender: "overwritten".to_string(), - pool_params: None, - pool_assets: vec![ - PoolAsset { - weight: "1".to_string(), - token: Some( - Coin { - denom: denoms[0].clone(), - amount: Uint128::from(1000000u128), - } - .into(), - ), - }, - PoolAsset { - weight: "1".to_string(), - token: Some( - Coin { - denom: denoms[1].clone(), - amount: Uint128::from(1000000u128), - } - .into(), - ), - }, - ], - future_pool_governor: "overwritten".to_string(), - }; - - let gamm = Gamm::new(app); - - let response = gamm - .create_basic_pool( - &[ - Coin { - denom: gamm_pool.pool_assets[0] - .token - .as_ref() - .unwrap() - .denom - .to_string(), - amount: Uint128::from_str( - &gamm_pool.pool_assets[0].token.as_ref().unwrap().amount, - ) - .unwrap(), - }, - Coin { - denom: gamm_pool.pool_assets[1] - .token - .as_ref() - .unwrap() - .denom - .to_string(), - amount: Uint128::from_str( - &gamm_pool.pool_assets[1].token.as_ref().unwrap().amount, - ) - .unwrap(), - }, - ], - &admin, - ) - .unwrap(); - - let ty = "pool_created"; - let keys = vec!["pool_id"]; - let pool_id: u64 = response - .events - .iter() - .filter(|event| event.ty == ty) - .flat_map(|event| event.attributes.clone()) - .filter(|attribute| keys.contains(&attribute.key.as_str())) - .collect::>() - .first() - .unwrap() - .value - .parse() - .unwrap(); - - let _ = MsgJoinPool { - sender: admin.address().to_string(), - pool_id: pool_id.clone(), - share_out_amount: "100".to_string(), - token_in_maxs: vec![ - Coin { - denom: gamm_pool.pool_assets[0] - .token - .as_ref() - .unwrap() - .denom - .to_string(), - amount: Uint128::from_str(&gamm_pool.pool_assets[0].token.as_ref().unwrap().amount) - .unwrap(), - } - .into(), - Coin { - denom: gamm_pool.pool_assets[1] - .token - .as_ref() - .unwrap() - .denom - .to_string(), - amount: Uint128::from_str(&gamm_pool.pool_assets[1].token.as_ref().unwrap().amount) - .unwrap(), - } - .into(), - ], - }; - - pools.push(PoolWithDenoms { - pool: pool_id, - denom0: gamm_pool.pool_assets[0] - .token - .as_ref() - .unwrap() - .denom - .to_string(), - denom1: gamm_pool.pool_assets[1] - .token - .as_ref() - .unwrap() - .denom - .to_string(), - }); - - pools -} - -pub fn init_test_contract(app: &OsmosisTestApp, admin: &SigningAccount, filename: &str) -> Addr { - // Create new osmosis appchain instance - let wasm = Wasm::new(app); - - // Load compiled wasm bytecode - let wasm_byte_code = std::fs::read(filename).unwrap(); - let code_id = wasm - .store_code(&wasm_byte_code, None, admin) - .unwrap() - .data - .code_id; - - // Instantiate dex router - let contract = wasm - .instantiate( - code_id, - &InstantiateMsg {}, - Some(admin.address().as_str()), - Some("dex-router-osmosis"), - &[], - admin, - ) - .unwrap(); - - Addr::unchecked(contract.data.address) -} - -pub fn setup_paths( - wasm: &Wasm, - contract_address: &Addr, - path: Vec, - offer_denom: String, - ask_denom: String, - admin: &SigningAccount, -) { - wasm.execute( - &contract_address.to_string(), - &ExecuteMsg::SetPath { - path, - bidirectional: true, - offer_denom, - ask_denom, - }, - &[], - admin, - ) - .unwrap(); -} - -pub fn query_paths( - wasm: &Wasm, - contract_address: &Addr, - offer_denom: String, - ask_denom: String, -) -> Result>, osmosis_test_tube::RunnerError> { - wasm.query( - contract_address.as_str(), - &QueryMsg::PathsForPair { - offer_denom, - ask_denom, - }, - ) -} -pub fn perform_swap( - wasm: &Wasm, - contract_address: &Addr, - offer_denom: String, - ask_denom: String, - path: Vec>, - admin: &SigningAccount, -) -> Result, osmosis_test_tube::RunnerError> { - wasm.execute( - &contract_address.to_string(), - &ExecuteMsg::Swap { - out_denom: ask_denom, - path: Some(path.first().unwrap().clone()), - minimum_receive: Some(Uint128::new(9500)), - }, - &[Coin::new(10000u128, offer_denom)], - admin, - ) -} - -#[test] -#[ignore] -fn default_init_works() { - let app = OsmosisTestApp::new(); - - // Create new account with initial funds - let admin = app - .init_account(&[ - Coin::new(ADMIN_BALANCE_AMOUNT, FEE_DENOM), - Coin::new(ADMIN_BALANCE_AMOUNT, DENOM_BASE), - Coin::new(ADMIN_BALANCE_AMOUNT, DENOM_QUOTE), - ]) - .unwrap(); - let wasm = Wasm::new(&app); - - let mut pools: Vec = vec![]; - pools = single_gamm_pool_fixture( - &app, - &admin, - vec![DENOM_BASE.to_string(), DENOM_QUOTE.to_string()], - pools, - ); - - let contract_address = init_test_contract(&app, &admin, TESTUBE_BINARY); - - setup_paths( - &wasm, - &contract_address, - vec![pools[0].pool], - pools[0].denom0.clone(), - pools[0].denom1.clone(), - &admin, - ); - - let resp: BestPathForPairResponse = wasm - .query( - &contract_address.to_string(), - &QueryMsg::BestPathForPair { - offer: Coin::new( - Uint128::from(100000000u128).into(), - pools.first().unwrap().denom0.clone(), - ), - ask_denom: pools.first().unwrap().denom1.clone(), - }, - ) - .unwrap(); - - let mut iter = resp.path.into_iter(); - // under the default setup, we expect the best path to route over pool 1 - assert_eq!(iter.next().unwrap().pool_id, 1); - assert!(iter.next().is_none()); -} diff --git a/smart-contracts/contracts/dex-router-osmosis/src/tests/mod.rs b/smart-contracts/contracts/dex-router-osmosis/src/tests/mod.rs index 066cc2f21..0da79ae3f 100644 --- a/smart-contracts/contracts/dex-router-osmosis/src/tests/mod.rs +++ b/smart-contracts/contracts/dex-router-osmosis/src/tests/mod.rs @@ -1,4 +1,3 @@ -mod initialize; mod remove_path; mod set_path; mod swap; diff --git a/smart-contracts/contracts/dex-router-osmosis/src/tests/remove_path.rs b/smart-contracts/contracts/dex-router-osmosis/src/tests/remove_path.rs index 01e4c69a4..ee9463e00 100644 --- a/smart-contracts/contracts/dex-router-osmosis/src/tests/remove_path.rs +++ b/smart-contracts/contracts/dex-router-osmosis/src/tests/remove_path.rs @@ -1,15 +1,9 @@ use crate::contract::{execute, instantiate}; -use crate::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; +use crate::msg::{ExecuteMsg, InstantiateMsg}; use crate::state::PATHS; -use crate::tests::initialize::{ - init_test_contract, setup_paths, single_gamm_pool_fixture, PoolWithDenoms, - ADMIN_BALANCE_AMOUNT, DENOM_BASE, DENOM_QUOTE, FEE_DENOM, TESTUBE_BINARY, -}; use crate::ContractError; use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info}; -use cosmwasm_std::Coin; use osmosis_std::types::osmosis::poolmanager::v1beta1::SwapAmountInRoute; -use osmosis_test_tube::{Module, OsmosisTestApp, Wasm}; #[test] fn test_if_not_owner_then_remove_path_fails() { @@ -229,60 +223,3 @@ fn test_remove_one_of_two_paths() { ); } -#[test] -#[ignore] -fn test_set_and_remove_path() { - let app = OsmosisTestApp::new(); - - // Create new account with initial funds - let admin = app - .init_account(&[ - Coin::new(ADMIN_BALANCE_AMOUNT, FEE_DENOM), - Coin::new(ADMIN_BALANCE_AMOUNT, DENOM_BASE), - Coin::new(ADMIN_BALANCE_AMOUNT, DENOM_QUOTE), - ]) - .unwrap(); - let wasm = Wasm::new(&app); - - let mut pools: Vec = vec![]; - pools = single_gamm_pool_fixture( - &app, - &admin, - vec![DENOM_BASE.to_string(), DENOM_QUOTE.to_string()], - pools, - ); - - let contract_address = init_test_contract(&app, &admin, TESTUBE_BINARY); - - setup_paths( - &wasm, - &contract_address, - vec![pools[0].pool], - pools[0].denom0.clone(), - pools[0].denom1.clone(), - &admin, - ); - let _ = wasm - .execute( - &contract_address.to_string(), - &ExecuteMsg::RemovePath { - path: vec![pools.first().unwrap().pool], - bidirectional: true, - offer_denom: pools.first().unwrap().denom0.clone(), - ask_denom: pools.first().unwrap().denom1.clone(), - }, - &[], - &admin, - ) - .unwrap(); - - let resp: Result>, osmosis_test_tube::RunnerError> = wasm.query( - contract_address.as_str(), - &QueryMsg::PathsForPair { - offer_denom: pools.first().unwrap().denom0.clone(), - ask_denom: pools.first().unwrap().denom1.clone(), - }, - ); - - assert!(resp.is_err(), "Path not found"); -} diff --git a/smart-contracts/contracts/dex-router-osmosis/src/tests/set_path.rs b/smart-contracts/contracts/dex-router-osmosis/src/tests/set_path.rs index 704a56faa..fbfe8777c 100644 --- a/smart-contracts/contracts/dex-router-osmosis/src/tests/set_path.rs +++ b/smart-contracts/contracts/dex-router-osmosis/src/tests/set_path.rs @@ -1,16 +1,7 @@ use crate::contract::{execute, instantiate}; use crate::error::ContractError; -use crate::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; -use crate::tests::initialize::{ - init_test_contract, setup_paths, PoolWithDenoms, ADMIN_BALANCE_AMOUNT, DENOM_BASE, DENOM_QUOTE, - FEE_DENOM, TESTUBE_BINARY, -}; +use crate::msg::{ExecuteMsg, InstantiateMsg}; use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info}; -use cosmwasm_std::Coin; -use osmosis_std::types::osmosis::poolmanager::v1beta1::SwapAmountInRoute; -use osmosis_test_tube::{Module, OsmosisTestApp, Wasm}; - -use super::initialize::single_cl_pool_fixture; #[test] fn test_if_not_owner_then_set_path_fails() { @@ -53,60 +44,3 @@ fn test_if_path_is_empty_then_set_path_fails() { assert_eq!(err, ContractError::EmptyPath {}); } -#[test] -#[ignore] -fn test_set_path_works() { - let app = OsmosisTestApp::new(); - - // Create new account with initial funds - let admin = app - .init_account(&[ - Coin::new(ADMIN_BALANCE_AMOUNT, FEE_DENOM), - Coin::new(ADMIN_BALANCE_AMOUNT, DENOM_BASE), - Coin::new(ADMIN_BALANCE_AMOUNT, DENOM_QUOTE), - ]) - .unwrap(); - let wasm = Wasm::new(&app); - - let mut pools: Vec = vec![]; - pools = single_cl_pool_fixture( - &app, - &admin, - vec![DENOM_BASE.to_string(), DENOM_QUOTE.to_string()], - pools, - ); - - let contract_address = init_test_contract(&app, &admin, TESTUBE_BINARY); - - setup_paths( - &wasm, - &contract_address, - vec![pools[0].pool], - pools[0].denom0.clone(), - pools[0].denom1.clone(), - &admin, - ); - - let resp: Vec> = wasm - .query( - contract_address.as_str(), - &QueryMsg::PathsForPair { - offer_denom: pools.first().unwrap().denom0.clone(), - ask_denom: pools.first().unwrap().denom1.clone(), - }, - ) - .unwrap(); - - // Assert that the set path is included in the response - let expected_path = SwapAmountInRoute { - pool_id: pools.first().unwrap().pool, - token_out_denom: pools.first().unwrap().denom1.clone(), - }; - - let paths_contain_expected = resp.iter().any(|path| path.contains(&expected_path)); - - assert!( - paths_contain_expected, - "Expected path was not found in the response" - ); -} diff --git a/smart-contracts/contracts/dex-router-osmosis/src/tests/swap.rs b/smart-contracts/contracts/dex-router-osmosis/src/tests/swap.rs index b8c9625b9..dcd1989e8 100644 --- a/smart-contracts/contracts/dex-router-osmosis/src/tests/swap.rs +++ b/smart-contracts/contracts/dex-router-osmosis/src/tests/swap.rs @@ -1,19 +1,10 @@ use crate::contract::{execute, instantiate}; use crate::error::ContractError; use crate::msg::{ExecuteMsg, InstantiateMsg}; -use crate::tests::initialize::{ - perform_swap, query_paths, setup_paths, ADMIN_BALANCE_AMOUNT, DENOM_BASE, DENOM_QUOTE, - FEE_DENOM, INTERMEDIATE_QUOTE, TESTUBE_BINARY, -}; use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info}; -use cosmwasm_std::{coin, Coin}; -use osmosis_test_tube::{Module, OsmosisTestApp, SigningAccount, Wasm}; +use cosmwasm_std::coin; use quasar_types::error::FundsError; -use super::initialize::{ - init_test_contract, single_cl_pool_fixture, single_gamm_pool_fixture, PoolWithDenoms, -}; - #[test] fn test_swap_without_funds_throws() { let mut deps = mock_dependencies(); @@ -52,190 +43,3 @@ fn test_swap_with_too_many_funds_throws() { assert_eq!(err, ContractError::Funds(FundsError::InvalidAssets(1))) } -#[test] -#[ignore] -fn test_swap_over_single_cl_route() { - let app = OsmosisTestApp::new(); - - // Create new account with initial funds - let admin = app - .init_account(&[ - Coin::new(ADMIN_BALANCE_AMOUNT, FEE_DENOM), - Coin::new(ADMIN_BALANCE_AMOUNT, DENOM_BASE), - Coin::new(ADMIN_BALANCE_AMOUNT, DENOM_QUOTE), - ]) - .unwrap(); - let wasm = Wasm::new(&app); - - let mut pools: Vec = vec![]; - pools = single_gamm_pool_fixture( - &app, - &admin, - vec![DENOM_BASE.to_string(), DENOM_QUOTE.to_string()], - pools, - ); - - let contract_address = init_test_contract(&app, &admin, TESTUBE_BINARY); - - setup_paths( - &wasm, - &contract_address, - vec![pools[0].pool], - pools[0].denom0.clone(), - pools[0].denom1.clone(), - &admin, - ); - let queried_path = query_paths( - &wasm, - &contract_address, - pools[0].denom0.clone(), - pools[0].denom1.clone(), - ) - .unwrap(); - - assert!(perform_swap( - &wasm, - &contract_address, - pools[0].denom0.clone(), - pools[0].denom1.clone(), - queried_path, - &admin - ) - .is_ok()); -} - -#[test] -#[ignore] -fn test_swap_over_single_gamm_route() { - let app = OsmosisTestApp::new(); - - // Create new account with initial funds - let admin = app - .init_account(&[ - Coin::new(ADMIN_BALANCE_AMOUNT, FEE_DENOM), - Coin::new(ADMIN_BALANCE_AMOUNT, DENOM_BASE), - Coin::new(ADMIN_BALANCE_AMOUNT, DENOM_QUOTE), - ]) - .unwrap(); - let wasm = Wasm::new(&app); - let mut pools: Vec = vec![]; - pools = single_gamm_pool_fixture( - &app, - &admin, - vec![DENOM_BASE.to_string(), DENOM_QUOTE.to_string()], - pools, - ); - - let contract_address = init_test_contract(&app, &admin, TESTUBE_BINARY); - - setup_paths( - &wasm, - &contract_address, - vec![pools[0].pool], - pools[0].denom0.clone(), - pools[0].denom1.clone(), - &admin, - ); - let queried_path = query_paths( - &wasm, - &contract_address, - pools[0].denom0.clone(), - pools[0].denom1.clone(), - ) - .unwrap(); - - assert!(perform_swap( - &wasm, - &contract_address, - pools[0].denom0.clone(), - pools[0].denom1.clone(), - queried_path, - &admin - ) - .is_ok()); -} - -#[test] -#[ignore] -fn test_multihop_swap() { - // Case 1: CL / CL - run_test_case(single_cl_pool_fixture, single_cl_pool_fixture); - - // Case 2: GAMM / GAMM - run_test_case(single_gamm_pool_fixture, single_gamm_pool_fixture); - - // Case 3: CL / GAMM - run_test_case(single_cl_pool_fixture, single_gamm_pool_fixture); - - // Case 4: GAMM / CL - run_test_case(single_gamm_pool_fixture, single_cl_pool_fixture); -} - -fn run_test_case( - fixture1: fn( - &OsmosisTestApp, - &SigningAccount, - Vec, - Vec, - ) -> Vec, - fixture2: fn( - &OsmosisTestApp, - &SigningAccount, - Vec, - Vec, - ) -> Vec, -) { - let app = OsmosisTestApp::new(); - - // Create new account with initial funds - let admin = app - .init_account(&[ - Coin::new(ADMIN_BALANCE_AMOUNT, FEE_DENOM), - Coin::new(ADMIN_BALANCE_AMOUNT, DENOM_BASE), - Coin::new(ADMIN_BALANCE_AMOUNT, DENOM_QUOTE), - Coin::new(ADMIN_BALANCE_AMOUNT, INTERMEDIATE_QUOTE), - ]) - .unwrap(); - let wasm = Wasm::new(&app); - let mut pools: Vec = vec![]; - pools = fixture1( - &app, - &admin, - vec![DENOM_QUOTE.to_string(), INTERMEDIATE_QUOTE.to_string()], - pools, - ); - pools = fixture2( - &app, - &admin, - vec![INTERMEDIATE_QUOTE.to_string(), DENOM_BASE.to_string()], - pools, - ); - - let contract_address = init_test_contract(&app, &admin, TESTUBE_BINARY); - - setup_paths( - &wasm, - &contract_address, - vec![pools[0].pool, pools[1].pool], - pools[0].denom0.clone(), - pools[1].denom1.clone(), - &admin, - ); - let queried_path = query_paths( - &wasm, - &contract_address, - pools[0].denom0.clone(), - pools[1].denom1.clone(), - ) - .unwrap(); - - assert!(perform_swap( - &wasm, - &contract_address, - pools[0].denom0.clone(), - pools[1].denom1.clone(), - queried_path, - &admin - ) - .is_ok()); -} diff --git a/smart-contracts/contracts/merkle-incentives/Cargo.toml b/smart-contracts/contracts/merkle-incentives/Cargo.toml index 80b9797b1..eb6ade529 100644 --- a/smart-contracts/contracts/merkle-incentives/Cargo.toml +++ b/smart-contracts/contracts/merkle-incentives/Cargo.toml @@ -26,8 +26,5 @@ schemars = { workspace = true } serde = { workspace = true } serde-json-wasm = { workspace = true } thiserror = { workspace = true } - rs_merkle = { version = "1.4.2", default-features = false } - -[dev-dependencies] -osmosis-test-tube = { workspace = true } +osmosis-test-tube = { workspace = true, optional = true }