Skip to content

Commit a6a1903

Browse files
committed
fixed build swap ops for native ORAI
1 parent c4a8e3d commit a6a1903

File tree

3 files changed

+38
-14
lines changed

3 files changed

+38
-14
lines changed
226 Bytes
Binary file not shown.

contracts/cw-ics20-latest/src/ibc.rs

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -538,21 +538,18 @@ pub fn build_swap_operations(
538538
let fee_denom_asset_info = AssetInfo::NativeToken {
539539
denom: fee_denom.to_string(),
540540
};
541-
let mut swap_operations = vec![
542-
SwapOperation::OraiSwap {
541+
let mut swap_operations = vec![];
542+
if initial_receive_asset_info.ne(&fee_denom_asset_info) {
543+
swap_operations.push(SwapOperation::OraiSwap {
543544
offer_asset_info: initial_receive_asset_info.clone(),
544545
ask_asset_info: fee_denom_asset_info.clone(),
545-
},
546-
SwapOperation::OraiSwap {
546+
})
547+
}
548+
if destination_denom.ne(fee_denom) {
549+
swap_operations.push(SwapOperation::OraiSwap {
547550
offer_asset_info: fee_denom_asset_info.clone(),
548551
ask_asset_info: receiver_asset_info,
549-
},
550-
];
551-
if destination_denom.eq(fee_denom) {
552-
swap_operations.pop();
553-
}
554-
if initial_receive_asset_info.eq(&fee_denom_asset_info) {
555-
swap_operations.pop();
552+
});
556553
}
557554
swap_operations
558555
}

contracts/cw-ics20-latest/src/ibc_tests.rs

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -513,13 +513,13 @@ mod test {
513513
#[test]
514514
fn test_swap_operations() {
515515
let receiver_asset_info = AssetInfo::Token {
516-
contract_addr: Addr::unchecked("foobar"),
516+
contract_addr: Addr::unchecked("contract"),
517517
};
518518
let mut initial_asset_info = AssetInfo::Token {
519519
contract_addr: Addr::unchecked("addr"),
520520
};
521521
let fee_denom = "orai".to_string();
522-
let destination: DestinationInfo = DestinationInfo {
522+
let mut destination: DestinationInfo = DestinationInfo {
523523
receiver: "cosmos".to_string(),
524524
destination_channel: "channel-1".to_string(),
525525
destination_denom: "foobar".to_string(),
@@ -541,16 +541,43 @@ mod test {
541541
&destination.destination_denom,
542542
);
543543
assert_eq!(operations.len(), 1);
544+
assert_eq!(
545+
operations[0],
546+
SwapOperation::OraiSwap {
547+
offer_asset_info: initial_asset_info.clone(),
548+
ask_asset_info: AssetInfo::NativeToken {
549+
denom: fee_denom.clone()
550+
}
551+
}
552+
);
544553
initial_asset_info = AssetInfo::NativeToken {
545554
denom: "foobar".to_string(),
546555
};
547556
let operations = build_swap_operations(
548-
receiver_asset_info,
557+
receiver_asset_info.clone(),
549558
initial_asset_info.clone(),
550559
&fee_denom,
551560
&destination.destination_denom,
552561
);
553562
assert_eq!(operations.len(), 0);
563+
564+
destination.destination_denom = "atom".to_string();
565+
let operations = build_swap_operations(
566+
receiver_asset_info.clone(),
567+
initial_asset_info.clone(),
568+
&fee_denom,
569+
&destination.destination_denom,
570+
);
571+
assert_eq!(operations.len(), 1);
572+
assert_eq!(
573+
operations[0],
574+
SwapOperation::OraiSwap {
575+
offer_asset_info: AssetInfo::NativeToken {
576+
denom: fee_denom.clone()
577+
},
578+
ask_asset_info: receiver_asset_info
579+
}
580+
);
554581
}
555582

556583
#[test]

0 commit comments

Comments
 (0)