Skip to content

Commit 318f489

Browse files
lrazovicJuaniRios
authored andcommitted
feat: remove unwrap from the migration
1 parent 8301355 commit 318f489

File tree

3 files changed

+108
-144
lines changed

3 files changed

+108
-144
lines changed

integration-tests/chopsticks/src/tests/hub.test.ts

-46
Original file line numberDiff line numberDiff line change
@@ -61,50 +61,4 @@ describe('Polkadot Hub -> Polimec Transfer Tests', () => {
6161
// { timeout: 25000 },
6262
// );
6363

64-
// test('sandbox', async () => {
65-
// console.log("hello");
66-
// const weth_1 = {
67-
// parents: 2,
68-
// interior: {
69-
// x2: [
70-
// {
71-
// globalConsensus: {
72-
// ethereum: {
73-
// chainId: 1n
74-
// }
75-
// }
76-
// },
77-
// {
78-
// accountKey20: {
79-
// key: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
80-
// }
81-
// }
82-
// ]
83-
// }
84-
// }
85-
//
86-
// const weth_2 = {
87-
// parents: 2,
88-
// interior: {
89-
// x2: [
90-
// {
91-
// globalConsensus: {
92-
// ethereum: {
93-
// chainId: 1n
94-
// }
95-
// }
96-
// },
97-
// {
98-
// accountKey20: {
99-
// key: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2"
100-
// }
101-
// }
102-
// ]
103-
// }
104-
// }
105-
//
106-
// const equals = Bun.deepEquals(weth_1, weth_2);
107-
// expect(equals).toEqual(false);
108-
//
109-
// }, { timeout: 10000000 });
11064
});
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,56 @@
1-
// import { afterAll, beforeAll, beforeEach, describe, test } from 'bun:test';
2-
// import { TRANSFER_AMOUNTS } from '@/constants';
3-
// import { createChainManager } from '@/managers/Factory';
4-
// import { polimec_storage } from '@/polimec';
5-
// import { ChainSetup } from '@/setup';
6-
// import { PolimecToHubTransfer } from '@/transfers/PolimecToHub';
7-
// import { Accounts, Asset, AssetSourceRelation, Chains } from '@/types';
1+
import { afterAll, beforeAll, beforeEach, describe, test } from 'bun:test';
2+
import { TRANSFER_AMOUNTS } from '@/constants';
3+
import { createChainManager } from '@/managers/Factory';
4+
import { polimec_storage } from '@/polimec';
5+
import { ChainSetup } from '@/setup';
6+
import { PolimecToHubTransfer } from '@/transfers/PolimecToHub';
7+
import { Accounts, Asset, AssetSourceRelation, Chains } from '@/types';
88

9-
// describe('Polimec -> Hub Transfer Tests', () => {
10-
// const sourceManager = createChainManager(Chains.Polimec);
11-
// const destManager = createChainManager(Chains.PolkadotHub);
12-
// const transferTest = new PolimecToHubTransfer(sourceManager, destManager);
13-
// const chainSetup = new ChainSetup();
9+
describe('Polimec -> Hub Transfer Tests', () => {
10+
const sourceManager = createChainManager(Chains.Polimec);
11+
const destManager = createChainManager(Chains.PolkadotHub);
12+
const transferTest = new PolimecToHubTransfer(sourceManager, destManager);
13+
const chainSetup = new ChainSetup();
1414

15-
// beforeAll(async () => await chainSetup.initialize(polimec_storage));
16-
// beforeEach(() => {
17-
// sourceManager.connect();
18-
// destManager.connect();
19-
// });
20-
// afterAll(async () => await chainSetup.cleanup());
15+
beforeAll(async () => await chainSetup.initialize(polimec_storage));
16+
beforeEach(() => {
17+
sourceManager.connect();
18+
destManager.connect();
19+
});
20+
afterAll(async () => await chainSetup.cleanup());
2121

22-
// async function getBalance(account: Accounts, asset: Asset) {
23-
// return await sourceManager.getAssetBalanceOf(account, asset);
24-
// }
25-
// test('Balance query', () => getBalance(Accounts.BOB, Asset.USDT), { timeout: 250000000 });
22+
async function getBalance(account: Accounts, asset: Asset) {
23+
return await sourceManager.getAssetBalanceOf(account, asset);
24+
}
25+
test('Balance query', () => getBalance(Accounts.BOB, Asset.USDT), { timeout: 250000000 });
2626

27-
// test(
28-
// 'Send USDC to Hub',
29-
// () =>
30-
// transferTest.testTransfer({
31-
// amount: TRANSFER_AMOUNTS.TOKENS,
32-
// account: Accounts.BOB,
33-
// asset: Asset.USDC,
34-
// assetSourceRelation: AssetSourceRelation.Sibling,
35-
// }),
36-
// { timeout: 25000 },
37-
// );
27+
test(
28+
'Send USDC to Hub',
29+
() =>
30+
transferTest.testTransfer({
31+
account: Accounts.BOB,
32+
assets: [[Asset.USDC, TRANSFER_AMOUNTS.TOKENS, AssetSourceRelation.Sibling]]
33+
}),
34+
{ timeout: 25000 },
35+
);
3836

39-
// test(
40-
// 'Send USDT to Hub',
41-
// () =>
42-
// transferTest.testTransfer({
43-
// amount: TRANSFER_AMOUNTS.TOKENS,
44-
// account: Accounts.BOB,
45-
// asset: Asset.USDT,
46-
// assetSourceRelation: AssetSourceRelation.Sibling,
47-
// }),
48-
// { timeout: 25000 },
49-
// );
37+
test(
38+
'Send USDT to Hub',
39+
() =>
40+
transferTest.testTransfer({
41+
account: Accounts.BOB,
42+
assets: [[Asset.USDT, TRANSFER_AMOUNTS.TOKENS, AssetSourceRelation.Sibling]]
43+
}),
44+
{ timeout: 25000 },
45+
);
5046

51-
// test(
52-
// 'Send DOT to Hub',
53-
// () =>
54-
// transferTest.testTransfer({
55-
// amount: TRANSFER_AMOUNTS.NATIVE,
56-
// account: Accounts.BOB,
57-
// asset: Asset.DOT,
58-
// assetSourceRelation: AssetSourceRelation.Parent,
59-
// }),
60-
// { timeout: 25000 },
61-
// );
62-
// });
47+
test(
48+
'Send DOT to Hub',
49+
() =>
50+
transferTest.testTransfer({
51+
account: Accounts.BOB,
52+
assets: [[Asset.DOT, TRANSFER_AMOUNTS.NATIVE, AssetSourceRelation.Parent]]
53+
}),
54+
{ timeout: 25000 },
55+
);
56+
});

runtimes/polimec/src/custom_migrations/asset_id_migration.rs

+58-42
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,20 @@ use frame_support::{
99
use itertools::Itertools;
1010
use pallet_assets::{Approval, AssetAccount, AssetDetails, AssetMetadata};
1111
use polimec_common::assets::AcceptedFundingAsset;
12-
use sp_api::runtime_decl_for_core::CoreV5;
1312
use sp_runtime::BoundedVec;
1413
use xcm::v4::Location;
1514

16-
// Storage items of pallet-assets are set to private for some reason. So we have to redefine them to get the same storage
17-
// encoding and call the `translate` methods. -_-'
15+
#[cfg(feature = "try-runtime")]
16+
use frame_support::migrations::VersionedPostUpgradeData;
17+
18+
#[cfg(feature = "try-runtime")]
19+
use parity_scale_codec::Encode;
20+
21+
#[cfg(feature = "try-runtime")]
22+
use sp_std::vec::Vec;
23+
24+
// Storage items of pallet-assets are private.
25+
// So we have to redefine them to get the same storage encoding and call the `translate` methods.
1826
pub mod pallet_assets_storage_items {
1927
use super::*;
2028

@@ -120,74 +128,82 @@ impl OnRuntimeUpgrade for FromOldAssetIdMigration {
120128
log::info!("AssetId Migration can be removed");
121129
return <Runtime as frame_system::Config>::DbWeight::get().reads(1)
122130
}
123-
log::info!("Running AssetId Migration...");
124131
let mut items = 0;
125132
if runtime_version.spec_version == 1_000_000 {
133+
log::info!("Running AssetId Migration...");
126134
let id_map = BTreeMap::from([
127-
(1984, AcceptedFundingAsset::USDT.id()),
128-
(1337, AcceptedFundingAsset::USDC.id()),
129135
(10, AcceptedFundingAsset::DOT.id()),
136+
(1337, AcceptedFundingAsset::USDC.id()),
137+
(1984, AcceptedFundingAsset::USDT.id()),
130138
(3344, Location::here()),
131139
]);
132140

133141
let old_account_iterator = pallet_assets_storage_items::old_types::Account::iter().collect_vec();
134142
for (old_asset_id, account, account_info) in old_account_iterator {
135-
items += 1;
136-
log::info!("old_account item {:?}", items);
137-
138-
pallet_assets_storage_items::new_types::Account::insert(
139-
id_map.get(&old_asset_id).unwrap(),
140-
account.clone(),
141-
account_info,
142-
);
143-
pallet_assets_storage_items::old_types::Account::remove(old_asset_id, account);
143+
if let Some(new_asset_id) = id_map.get(&old_asset_id) {
144+
items += 1;
145+
log::info!("old_account item {:?}", items);
146+
147+
pallet_assets_storage_items::new_types::Account::insert(
148+
new_asset_id,
149+
account.clone(),
150+
account_info,
151+
);
152+
pallet_assets_storage_items::old_types::Account::remove(old_asset_id, account);
153+
}
144154
}
145155

146156
let old_asset_iterator = pallet_assets_storage_items::old_types::Asset::iter().collect_vec();
147157
for (old_asset_id, asset_info) in old_asset_iterator {
148-
items += 1;
149-
log::info!("old_asset item {:?}", items);
150-
pallet_assets_storage_items::new_types::Asset::insert(id_map.get(&old_asset_id).unwrap(), asset_info);
151-
pallet_assets_storage_items::old_types::Asset::remove(old_asset_id);
158+
if let Some(new_asset_id) = id_map.get(&old_asset_id) {
159+
items += 1;
160+
log::info!("old_asset item {:?}", items);
161+
pallet_assets_storage_items::new_types::Asset::insert(new_asset_id, asset_info);
162+
pallet_assets_storage_items::old_types::Asset::remove(old_asset_id);
163+
}
152164
}
153165

154166
let old_approvals_iterator = pallet_assets_storage_items::old_types::Approvals::iter().collect_vec();
155167
for ((old_asset_id, owner, delegate), approval) in old_approvals_iterator {
156-
items += 1;
157-
log::info!("old_approvals item {:?}", items);
158-
pallet_assets_storage_items::new_types::Approvals::insert(
159-
(id_map.get(&old_asset_id).unwrap(), owner.clone(), delegate.clone()),
160-
approval,
161-
);
162-
pallet_assets_storage_items::old_types::Approvals::remove((old_asset_id, owner, delegate));
168+
if let Some(new_asset_id) = id_map.get(&old_asset_id) {
169+
items += 1;
170+
log::info!("old_approvals item {:?}", items);
171+
pallet_assets_storage_items::new_types::Approvals::insert(
172+
(new_asset_id, owner.clone(), delegate.clone()),
173+
approval,
174+
);
175+
pallet_assets_storage_items::old_types::Approvals::remove((old_asset_id, owner, delegate));
176+
}
163177
}
164178

165179
let old_metadata_iterator = pallet_assets_storage_items::old_types::Metadata::iter().collect_vec();
166180
for (old_asset_id, metadata) in old_metadata_iterator {
167-
items += 1;
168-
log::info!("old_metadata item {:?}", items);
169-
pallet_assets_storage_items::new_types::Metadata::insert(id_map.get(&old_asset_id).unwrap(), metadata);
170-
pallet_assets_storage_items::old_types::Metadata::remove(old_asset_id);
181+
if let Some(new_asset_id) = id_map.get(&old_asset_id) {
182+
items += 1;
183+
log::info!("old_metadata item {:?}", items);
184+
pallet_assets_storage_items::new_types::Metadata::insert(new_asset_id, metadata);
185+
pallet_assets_storage_items::old_types::Metadata::remove(old_asset_id);
186+
}
171187
}
172188

173189
let old_oracle_raw_values_iterator = orml_oracle_storage_items::old_types::RawValues::iter().collect_vec();
174190
for (account, old_asset_id, raw_values) in old_oracle_raw_values_iterator {
175-
items += 1;
176-
log::info!("old_oracle_raw_values item {:?}", items);
177-
orml_oracle::RawValues::<Runtime>::insert(
178-
account.clone(),
179-
id_map.get(&old_asset_id).unwrap(),
180-
raw_values,
181-
);
182-
orml_oracle_storage_items::old_types::RawValues::remove(account, old_asset_id);
191+
if let Some(new_asset_id) = id_map.get(&old_asset_id) {
192+
items += 1;
193+
log::info!("old_oracle_raw_values item {:?}", items);
194+
orml_oracle::RawValues::<Runtime>::insert(account.clone(), new_asset_id, raw_values);
195+
orml_oracle_storage_items::old_types::RawValues::remove(account, old_asset_id);
196+
}
183197
}
184198

185199
let old_oracle_values_iterator = orml_oracle_storage_items::old_types::Values::iter().collect_vec();
186200
for (old_asset_id, value) in old_oracle_values_iterator {
187-
items += 1;
188-
log::info!("old_oracle_values item {:?}", items);
189-
orml_oracle::Values::<Runtime>::insert(id_map.get(&old_asset_id).unwrap(), value);
190-
orml_oracle_storage_items::old_types::Values::remove(old_asset_id);
201+
if let Some(new_asset_id) = id_map.get(&old_asset_id) {
202+
items += 1;
203+
log::info!("old_oracle_values item {:?}", items);
204+
orml_oracle::Values::<Runtime>::insert(new_asset_id, value);
205+
orml_oracle_storage_items::old_types::Values::remove(old_asset_id);
206+
}
191207
}
192208
}
193209

0 commit comments

Comments
 (0)