Skip to content

Commit

Permalink
refactor: IT better error handling
Browse files Browse the repository at this point in the history
  • Loading branch information
Daanvdplas committed Jul 26, 2024
1 parent b93f009 commit b639e8b
Showing 1 changed file with 38 additions and 11 deletions.
49 changes: 38 additions & 11 deletions pop-api/integration-tests/src/local_fungibles.rs
Original file line number Diff line number Diff line change
Expand Up @@ -353,24 +353,30 @@ fn token_metadata_works() {
// });
// }

fn decoded<T: Decode>(result: ExecReturnValue) -> T {
<T>::decode(&mut &result.data[1..]).expect("_")
fn decoded<T: Decode>(result: ExecReturnValue) -> Result<T, ExecReturnValue> {
<T>::decode(&mut &result.data[1..]).map_err(|_| result)
}

// Call total_supply contract message.
fn total_supply(addr: AccountId32, asset_id: AssetId) -> Result<Balance, Error> {
let function = function_selector("total_supply");
let params = [function, asset_id.encode()].concat();
let result = bare_call(addr, params, 0).expect("should work");
decoded::<Result<Balance, Error>>(result)
match decoded::<Result<Balance, Error>>(result) {
Ok(x) => x,
Err(result) => panic!("Contract reverted: {:?}", result),
}
}

// Call balance_of contract message.
fn balance_of(addr: AccountId32, asset_id: AssetId, owner: AccountId32) -> Result<Balance, Error> {
let function = function_selector("balance_of");
let params = [function, asset_id.encode(), owner.encode()].concat();
let result = bare_call(addr, params, 0).expect("should work");
decoded::<Result<Balance, Error>>(result)
match decoded::<Result<Balance, Error>>(result) {
Ok(x) => x,
Err(result) => panic!("Contract reverted: {:?}", result),
}
}

// Call allowance contract message.
Expand All @@ -383,31 +389,43 @@ fn allowance(
let function = function_selector("allowance");
let params = [function, asset_id.encode(), owner.encode(), spender.encode()].concat();
let result = bare_call(addr, params, 0).expect("should work");
decoded::<Result<Balance, Error>>(result)
match decoded::<Result<Balance, Error>>(result) {
Ok(x) => x,
Err(result) => panic!("Contract reverted: {:?}", result),
}
}

// Call token_name contract message.
fn token_name(addr: AccountId32, asset_id: AssetId) -> Result<Vec<u8>, Error> {
let function = function_selector("token_name");
let params = [function, asset_id.encode()].concat();
let result = bare_call(addr, params, 0).expect("should work");
decoded::<Result<Vec<u8>, Error>>(result)
match decoded::<Result<Vec<u8>, Error>>(result) {
Ok(x) => x,
Err(result) => panic!("Contract reverted: {:?}", result),
}
}

// Call token_symbol contract message.
fn token_symbol(addr: AccountId32, asset_id: AssetId) -> Result<Vec<u8>, Error> {
let function = function_selector("token_symbol");
let params = [function, asset_id.encode()].concat();
let result = bare_call(addr, params, 0).expect("should work");
decoded::<Result<Vec<u8>, Error>>(result)
match decoded::<Result<Vec<u8>, Error>>(result) {
Ok(x) => x,
Err(result) => panic!("Contract reverted: {:?}", result),
}
}

// Call token_decimals contract message.
fn token_decimals(addr: AccountId32, asset_id: AssetId) -> Result<u8, Error> {
let function = function_selector("token_decimals");
let params = [function, asset_id.encode()].concat();
let result = bare_call(addr, params, 0).expect("should work");
decoded::<Result<u8, Error>>(result)
match decoded::<Result<u8, Error>>(result) {
Ok(x) => x,
Err(result) => panic!("Contract reverted: {:?}", result),
}
}

fn transfer(
Expand All @@ -419,7 +437,10 @@ fn transfer(
let function = function_selector("transfer");
let params = [function, asset_id.encode(), to.encode(), value.encode()].concat();
let result = bare_call(addr, params, 0).expect("should work");
decoded::<Result<(), Error>>(result)
match decoded::<Result<(), Error>>(result) {
Ok(x) => x,
Err(result) => panic!("Contract reverted: {:?}", result),
}
}

fn approve(
Expand All @@ -431,7 +452,10 @@ fn approve(
let function = function_selector("approve");
let params = [function, asset_id.encode(), spender.encode(), value.encode()].concat();
let result = bare_call(addr, params, 0).expect("should work");
decoded::<Result<(), Error>>(result)
match decoded::<Result<(), Error>>(result) {
Ok(x) => x,
Err(result) => panic!("Contract reverted: {:?}", result),
}
}

fn increase_allowance(
Expand All @@ -443,7 +467,10 @@ fn increase_allowance(
let function = function_selector("increase_allowance");
let params = [function, asset_id.encode(), spender.encode(), value.encode()].concat();
let result = bare_call(addr, params, 0).expect("should work");
decoded::<Result<(), Error>>(result)
match decoded::<Result<(), Error>>(result) {
Ok(x) => x,
Err(result) => panic!("Contract reverted: {:?}", result),
}
}

// fn asset_exists(addr: AccountId32, asset_id: AssetId) -> bool {
Expand Down

0 comments on commit b639e8b

Please sign in to comment.