Skip to content

Commit 0abe6f9

Browse files
committed
get tests passing
1 parent 7506400 commit 0abe6f9

File tree

1 file changed

+26
-4
lines changed

1 file changed

+26
-4
lines changed

xtokens/src/mock/para.rs

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use crate as orml_xtokens;
66

77
use frame_support::{
88
construct_runtime, derive_impl, ensure, parameter_types,
9-
traits::{ConstU128, ConstU32, Contains, Everything, Get, Nothing},
9+
traits::{ConstU128, ConstU32, Contains, ContainsPair, Everything, Get, Nothing},
1010
};
1111
use frame_system::EnsureRoot;
1212
use pallet_xcm::XcmPassthrough;
@@ -16,7 +16,7 @@ use sp_runtime::{
1616
traits::{Convert, IdentityLookup},
1717
AccountId32,
1818
};
19-
use sp_std::cell::RefCell;
19+
use sp_std::{cell::RefCell, marker::PhantomData};
2020
use xcm::v4::{prelude::*, Weight};
2121
use xcm_builder::{
2222
AccountId32Aliases, EnsureXcmOrigin, FixedWeightBounds, NativeAsset, ParentIsPreset, RelayChainAsNative,
@@ -26,8 +26,11 @@ use xcm_builder::{
2626
use xcm_executor::{Config, XcmExecutor};
2727

2828
use crate::mock::AllTokensAreCreatedEqualToWeight;
29-
use orml_traits::{location::AbsoluteReserveProvider, parameter_type_with_key, RateLimiterError};
30-
use orml_xcm_support::{IsNativeConcrete, MultiCurrencyAdapter, MultiNativeAsset};
29+
use orml_traits::{
30+
location::{AbsoluteReserveProvider, Reserve},
31+
parameter_type_with_key, RateLimiterError,
32+
};
33+
use orml_xcm_support::{IsNativeConcrete, MultiCurrencyAdapter};
3134

3235
pub type AccountId = AccountId32;
3336

@@ -117,6 +120,25 @@ parameter_types! {
117120
pub const MaxAssetsIntoHolding: u32 = 64;
118121
}
119122

123+
pub struct MultiNativeAsset<ReserveProvider>(PhantomData<ReserveProvider>);
124+
impl<ReserveProvider> ContainsPair<Asset, Location> for MultiNativeAsset<ReserveProvider>
125+
where
126+
ReserveProvider: Reserve,
127+
{
128+
fn contains(asset: &Asset, origin: &Location) -> bool {
129+
if let Some(ref reserve) = ReserveProvider::reserve(asset) {
130+
if reserve == origin {
131+
return true;
132+
}
133+
}
134+
// allow parachain to be reserved of relay to bypass https://github.com/paritytech/polkadot-sdk/pull/5660
135+
if asset.id.0 == Location::parent() {
136+
return true;
137+
}
138+
false
139+
}
140+
}
141+
120142
pub struct XcmConfig;
121143
impl Config for XcmConfig {
122144
type RuntimeCall = RuntimeCall;

0 commit comments

Comments
 (0)