@@ -3,9 +3,12 @@ use std::str::FromStr;
3
3
use cosmwasm_std:: { coins, Addr , Coin , Decimal , OverflowError , OverflowOperation :: Sub , Uint128 } ;
4
4
use mars_credit_manager:: error:: ContractError ;
5
5
use mars_swapper_mock:: contract:: MOCK_SWAP_RESULT ;
6
- use mars_types:: credit_manager:: {
7
- Action :: { Deposit , SwapExactIn } ,
8
- ActionAmount , ActionCoin ,
6
+ use mars_types:: {
7
+ credit_manager:: {
8
+ Action :: { Deposit , SwapExactIn } ,
9
+ ActionAmount , ActionCoin ,
10
+ } ,
11
+ swapper:: { OsmoRoute , OsmoSwap , SwapperRoute } ,
9
12
} ;
10
13
11
14
use super :: helpers:: {
@@ -29,6 +32,12 @@ fn only_token_owner_can_swap_for_account() {
29
32
} ,
30
33
denom_out: "osmo" . to_string( ) ,
31
34
slippage: Decimal :: from_atomics( 6u128 , 1 ) . unwrap( ) ,
35
+ route: Some ( SwapperRoute :: Osmo ( OsmoRoute {
36
+ swaps: vec![ OsmoSwap {
37
+ pool_id: 101 ,
38
+ to: "osmo" . to_string( ) ,
39
+ } ] ,
40
+ } ) ) ,
32
41
} ] ,
33
42
& [ ] ,
34
43
) ;
@@ -57,6 +66,12 @@ fn denom_out_must_be_whitelisted() {
57
66
coin_in: blacklisted_coin. to_action_coin( 10_000 ) ,
58
67
denom_out: "ujake" . to_string( ) ,
59
68
slippage: Decimal :: from_atomics( 6u128 , 1 ) . unwrap( ) ,
69
+ route: Some ( SwapperRoute :: Osmo ( OsmoRoute {
70
+ swaps: vec![ OsmoSwap {
71
+ pool_id: 101 ,
72
+ to: "ujake" . to_string( ) ,
73
+ } ] ,
74
+ } ) ) ,
60
75
} ] ,
61
76
& [ ] ,
62
77
) ;
@@ -79,8 +94,14 @@ fn no_amount_sent() {
79
94
& user,
80
95
vec ! [ SwapExactIn {
81
96
coin_in: osmo_info. to_action_coin( 0 ) ,
82
- denom_out: atom_info. denom,
97
+ denom_out: atom_info. denom. clone ( ) ,
83
98
slippage: Decimal :: from_atomics( 6u128 , 1 ) . unwrap( ) ,
99
+ route: Some ( SwapperRoute :: Osmo ( OsmoRoute {
100
+ swaps: vec![ OsmoSwap {
101
+ pool_id: 101 ,
102
+ to: atom_info. denom,
103
+ } ] ,
104
+ } ) ) ,
84
105
} ] ,
85
106
& [ ] ,
86
107
) ;
@@ -103,8 +124,14 @@ fn user_has_zero_balance_for_swap_req() {
103
124
& user,
104
125
vec ! [ SwapExactIn {
105
126
coin_in: osmo_info. to_action_coin( 10_000 ) ,
106
- denom_out: atom_info. denom,
127
+ denom_out: atom_info. denom. clone ( ) ,
107
128
slippage: Decimal :: from_atomics( 6u128 , 1 ) . unwrap( ) ,
129
+ route: Some ( SwapperRoute :: Osmo ( OsmoRoute {
130
+ swaps: vec![ OsmoSwap {
131
+ pool_id: 101 ,
132
+ to: atom_info. denom,
133
+ } ] ,
134
+ } ) ) ,
108
135
} ] ,
109
136
& [ ] ,
110
137
) ;
@@ -139,8 +166,14 @@ fn slippage_too_high() {
139
166
& user,
140
167
vec ! [ SwapExactIn {
141
168
coin_in: osmo_info. to_action_coin( 10_000 ) ,
142
- denom_out: atom_info. denom,
169
+ denom_out: atom_info. denom. clone ( ) ,
143
170
slippage,
171
+ route: Some ( SwapperRoute :: Osmo ( OsmoRoute {
172
+ swaps: vec![ OsmoSwap {
173
+ pool_id: 101 ,
174
+ to: atom_info. denom,
175
+ } ] ,
176
+ } ) ) ,
144
177
} ] ,
145
178
& [ ] ,
146
179
) ;
@@ -177,8 +210,14 @@ fn user_does_not_have_enough_balance_for_swap_req() {
177
210
Deposit ( osmo_info. to_coin( 100 ) ) ,
178
211
SwapExactIn {
179
212
coin_in: osmo_info. to_action_coin( 10_000 ) ,
180
- denom_out: atom_info. denom,
213
+ denom_out: atom_info. denom. clone ( ) ,
181
214
slippage: Decimal :: from_atomics( 6u128 , 1 ) . unwrap( ) ,
215
+ route: Some ( SwapperRoute :: Osmo ( OsmoRoute {
216
+ swaps: vec![ OsmoSwap {
217
+ pool_id: 101 ,
218
+ to: atom_info. denom,
219
+ } ] ,
220
+ } ) ) ,
182
221
} ,
183
222
] ,
184
223
& [ osmo_info. to_coin ( 100 ) ] ,
@@ -209,7 +248,13 @@ fn swap_success_with_specified_amount() {
209
248
. build ( )
210
249
. unwrap ( ) ;
211
250
212
- let res = mock. query_swap_estimate ( & atom_info. to_coin ( 10_000 ) , & osmo_info. denom ) ;
251
+ let route = SwapperRoute :: Osmo ( OsmoRoute {
252
+ swaps : vec ! [ OsmoSwap {
253
+ pool_id: 101 ,
254
+ to: osmo_info. denom. clone( ) ,
255
+ } ] ,
256
+ } ) ;
257
+ let res = mock. query_swap_estimate ( & atom_info. to_coin ( 10_000 ) , & osmo_info. denom , route. clone ( ) ) ;
213
258
assert_eq ! ( res. amount, MOCK_SWAP_RESULT ) ;
214
259
215
260
let account_id = mock. create_credit_account ( & user) . unwrap ( ) ;
@@ -222,6 +267,7 @@ fn swap_success_with_specified_amount() {
222
267
coin_in: atom_info. to_action_coin( 10_000 ) ,
223
268
denom_out: osmo_info. denom. clone( ) ,
224
269
slippage: Decimal :: from_atomics( 6u128 , 1 ) . unwrap( ) ,
270
+ route: Some ( route) ,
225
271
} ,
226
272
] ,
227
273
& [ atom_info. to_coin ( 10_000 ) ] ,
@@ -256,7 +302,13 @@ fn swap_success_with_amount_none() {
256
302
. build ( )
257
303
. unwrap ( ) ;
258
304
259
- let res = mock. query_swap_estimate ( & atom_info. to_coin ( 10_000 ) , & osmo_info. denom ) ;
305
+ let route = SwapperRoute :: Osmo ( OsmoRoute {
306
+ swaps : vec ! [ OsmoSwap {
307
+ pool_id: 101 ,
308
+ to: osmo_info. denom. clone( ) ,
309
+ } ] ,
310
+ } ) ;
311
+ let res = mock. query_swap_estimate ( & atom_info. to_coin ( 10_000 ) , & osmo_info. denom , route. clone ( ) ) ;
260
312
assert_eq ! ( res. amount, MOCK_SWAP_RESULT ) ;
261
313
262
314
let account_id = mock. create_credit_account ( & user) . unwrap ( ) ;
@@ -269,6 +321,7 @@ fn swap_success_with_amount_none() {
269
321
coin_in: atom_info. to_action_coin_full_balance( ) ,
270
322
denom_out: osmo_info. denom. clone( ) ,
271
323
slippage: Decimal :: from_atomics( 6u128 , 1 ) . unwrap( ) ,
324
+ route: Some ( route) ,
272
325
} ,
273
326
] ,
274
327
& [ atom_info. to_coin ( 10_000 ) ] ,
0 commit comments