Skip to content

Commit

Permalink
test: add migration test for terraport token
Browse files Browse the repository at this point in the history
  • Loading branch information
fragwuerdig committed Apr 15, 2024
1 parent 28c9978 commit 3733891
Show file tree
Hide file tree
Showing 2 changed files with 129 additions and 1 deletion.
128 changes: 128 additions & 0 deletions contracts/cw20-taxed/src/contract.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2098,6 +2098,10 @@ mod tests {
}

mod migration {
use std::{borrow::{Borrow, BorrowMut}, mem};

use self::state::migrate_v1::tests::mock_dependencies_with_terraport_balances;

use super::*;

use cosmwasm_std::Empty;
Expand Down Expand Up @@ -2215,6 +2219,130 @@ mod tests {
}]
);
}

#[test]
fn test_migrate_from_terraport() {
let mut deps = mock_dependencies_with_terraport_balances(vec![
// initial balances
(Addr::unchecked("addr1"), Uint128::new(1234), 123),
(Addr::unchecked("addr2"), Uint128::new(1234), 123),
(Addr::unchecked("addr3"), Uint128::new(4455), 123),

// mock a transfer at later height
(Addr::unchecked("addr1"), Uint128::new(1233), 456),
(Addr::unchecked("addr2"), Uint128::new(1235), 456),
]);

let env = mock_env();
crate::contract::migrate(deps.as_mut(), env, MigrateMsg { tax_map: None }).unwrap();

// balances are ok
match query_balance(deps.as_ref(), "addr1".to_string()){
Ok(balance) => {
assert_eq!(
balance,
BalanceResponse{
balance: Uint128::new(1233),
}
)
},
Err(e) => panic!("Error querying balance: {:?}", e),
}
match query_balance(deps.as_ref(), "addr2".to_string()){
Ok(balance) => {
assert_eq!(
balance,
BalanceResponse{
balance: Uint128::new(1235),
}
)
},
Err(e) => panic!("Error querying balance: {:?}", e),
}

// tax map is set
match TAX_INFO.load(deps.as_ref().storage) {
Ok(tax_info) => {
assert_eq!(tax_info, TaxMap::default() )
},
Err(_) => panic!("Expected Tax map to be available!"),
}

}

#[test]
fn test_migrate_from_terraport_with_explicit_tax_map() {
let mut deps = mock_dependencies_with_terraport_balances(vec![
// initial balances
(Addr::unchecked("addr1"), Uint128::new(1234), 123),
(Addr::unchecked("addr2"), Uint128::new(1234), 123),
(Addr::unchecked("addr3"), Uint128::new(4455), 123),

// mock a transfer at later height
(Addr::unchecked("addr1"), Uint128::new(1233), 456),
(Addr::unchecked("addr2"), Uint128::new(1235), 456),
]);
let tax = TaxMap {
admin: Addr::unchecked("admin"),
on_transfer: TaxInfo{
src_cond: TaxCondition::Never(TaxNeverCondition{}),
dst_cond: TaxCondition::Never(TaxNeverCondition{}),
proceeds: Addr::unchecked("proceeds1"),
},
on_transfer_from: TaxInfo {
src_cond: TaxCondition::Never(TaxNeverCondition{}),
dst_cond: TaxCondition::Never(TaxNeverCondition{}),
proceeds: Addr::unchecked("proceeds2"),
},
on_send: TaxInfo {
src_cond: TaxCondition::Never(TaxNeverCondition{}),
dst_cond: TaxCondition::Never(TaxNeverCondition{}),
proceeds: Addr::unchecked("proceeds3"),

},
on_send_from: TaxInfo{
src_cond: TaxCondition::Always(TaxAlwaysCondition{tax_rate: Decimal::percent(1)}),
dst_cond: TaxCondition::Never(TaxNeverCondition{}),
proceeds: Addr::unchecked("proceeds4"),
}
};

let env = mock_env();
crate::contract::migrate(deps.as_mut(), env, MigrateMsg { tax_map: Some(tax.clone()) }).unwrap();

// balances are ok
match query_balance(deps.as_ref(), "addr1".to_string()){
Ok(balance) => {
assert_eq!(
balance,
BalanceResponse{
balance: Uint128::new(1233),
}
)
},
Err(e) => panic!("Error querying balance: {:?}", e),
}
match query_balance(deps.as_ref(), "addr2".to_string()){
Ok(balance) => {
assert_eq!(
balance,
BalanceResponse{
balance: Uint128::new(1235),
}
)
},
Err(e) => panic!("Error querying balance: {:?}", e),
}

// tax map is set
match TAX_INFO.load(deps.as_ref().storage) {
Ok(tax_info) => {
assert_eq!(tax_info, tax )
},
Err(_) => panic!("Expected Tax map to be available!"),
}

}
}

mod marketing {
Expand Down
2 changes: 1 addition & 1 deletion contracts/cw20-taxed/src/state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ pub mod migrate_v1 {
use cw2::set_contract_version;

// mock a terraport style store
fn mock_dependencies_with_terraport_balances(
pub fn mock_dependencies_with_terraport_balances(
balances: Vec<(Addr, Uint128, u64)>
) -> OwnedDeps<MockStorage, MockApi, MockQuerier> {
let mut deps = mock_dependencies();
Expand Down

0 comments on commit 3733891

Please sign in to comment.