Skip to content

Commit

Permalink
Merge pull request #163 from novasamatech/feat/cloud_connections
Browse files Browse the repository at this point in the history
Feat: Cloud connections
  • Loading branch information
tuul-wq authored Jul 30, 2024
2 parents 8d303ac + 1531716 commit 65e6204
Show file tree
Hide file tree
Showing 7 changed files with 274 additions and 169 deletions.
10 changes: 5 additions & 5 deletions app/common/utils/chains.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
export const DEFAULT_CONNECTED_CHAINS: Record<ChainId, boolean> = {
'0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3': true, // POLKADOT
'0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe': true, // KUSAMA
'0x68d56f15f85d3136970ec16946040bc1752654e906147f7e43e9d539d7c3de2f': true, // DOT_ASSET_HUB
'0xe143f23803ac50e8f6f8e62695d1ce9e4e1d68aa36c1cd2cfd15340213f3423e': true, // WESTEND
export const DEFAULT_CONNECTED_CHAINS: Record<ChainId, AssetId[]> = {
'0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3': [0], // POLKADOT
'0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe': [0], // KUSAMA
'0x68d56f15f85d3136970ec16946040bc1752654e906147f7e43e9d539d7c3de2f': [1], // DOT_ASSET_HUB
'0xe143f23803ac50e8f6f8e62695d1ce9e4e1d68aa36c1cd2cfd15340213f3423e': [0], // WESTEND
};
102 changes: 56 additions & 46 deletions app/models/balances/balances-model.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,7 @@ describe('models/balances/balances-model', () => {
};

const scope = fork({
values: new Map().set(balancesModel._internal.$balances, {
'0x002': {
0: { ...defaultBalance, assetId: 0 },
},
}),
values: [[balancesModel._internal.$balances, { '0x002': { 0: { ...defaultBalance, assetId: 0 } } }]],
});

await allSettled(balancesModel._internal.balanceUpdated, {
Expand All @@ -47,7 +43,7 @@ describe('models/balances/balances-model', () => {

test('should update $activeAssets on assetToUnsubSet', async () => {
const scope = fork({
values: new Map().set(balancesModel._internal.$activeAssets, { '0x001': { 0: true } }),
values: [[balancesModel._internal.$activeAssets, { '0x001': { 0: true } }]],
});

await allSettled(balancesModel.input.assetToUnsubSet, {
Expand All @@ -62,7 +58,7 @@ describe('models/balances/balances-model', () => {
const mockedSubscriptions = { '0x001': { 0: Promise.resolve(noop), 1: Promise.resolve(noop) } };

const scope = fork({
values: new Map().set(balancesModel._internal.$subscriptions, mockedSubscriptions),
values: [[balancesModel._internal.$subscriptions, mockedSubscriptions]],
});

await allSettled(balancesModel.input.assetToUnsubSet, { scope, params: { chainId: '0x001', assetId: 1 } });
Expand All @@ -72,7 +68,7 @@ describe('models/balances/balances-model', () => {

test('should remove asset from $activeAssets on networkModel.output.assetChanged', async () => {
const scope = fork({
values: new Map().set(balancesModel._internal.$activeAssets, { '0x001': { 0: true } }),
values: [[balancesModel._internal.$activeAssets, { '0x001': { 0: true } }]],
});

await allSettled(networkModel.output.assetChanged, {
Expand All @@ -85,7 +81,7 @@ describe('models/balances/balances-model', () => {

test('should update $activeAssets on assetToSubSet', async () => {
const scope = fork({
values: new Map().set(balancesModel._internal.$activeAssets, { '0x001': { 0: true } }),
values: [[balancesModel._internal.$activeAssets, { '0x001': { 0: true } }]],
});

await allSettled(balancesModel.input.assetToSubSet, {
Expand All @@ -100,7 +96,7 @@ describe('models/balances/balances-model', () => {

test('should add asset to $activeAssets on networkModel.output.assetChanged', async () => {
const scope = fork({
values: new Map().set(balancesModel._internal.$activeAssets, { '0x001': { 0: true } }),
values: [[balancesModel._internal.$activeAssets, { '0x001': { 0: true } }]],
});

await allSettled(networkModel.output.assetChanged, {
Expand All @@ -118,8 +114,8 @@ describe('models/balances/balances-model', () => {
const fakeUnsubscribeFx = vi.fn().mockReturnValue({ '0x001': undefined });

const scope = fork({
values: new Map().set(balancesModel._internal.$subscriptions, mockedSubscriptions),
handlers: new Map().set(balancesModel._internal.unsubscribeChainAssetsFx, fakeUnsubscribeFx),
values: [[balancesModel._internal.$subscriptions, mockedSubscriptions]],
handlers: [[balancesModel._internal.unsubscribeChainAssetsFx, fakeUnsubscribeFx]],
});

await allSettled(balancesModel._internal.unsubscribeChainAssetsFx, {
Expand All @@ -135,8 +131,8 @@ describe('models/balances/balances-model', () => {
const fakeSubscribeFx = vi.fn().mockReturnValue({ '0x001': { 1: Promise.resolve(noop) } });

const scope = fork({
values: new Map().set(balancesModel._internal.$subscriptions, mockedSubscriptions),
handlers: new Map().set(balancesModel._internal.subscribeChainsAssetsFx, fakeSubscribeFx),
values: [[balancesModel._internal.$subscriptions, mockedSubscriptions]],
handlers: [[balancesModel._internal.subscribeChainsAssetsFx, fakeSubscribeFx]],
});

await allSettled(balancesModel._internal.subscribeChainsAssetsFx, {
Expand All @@ -151,9 +147,10 @@ describe('models/balances/balances-model', () => {
const spyUnsub = vi.fn();

const scope = fork({
values: new Map()
.set(balancesModel._internal.$activeAssets, { '0x001': { 0: true } })
.set(balancesModel._internal.$subscriptions, { '0x001': { 0: Promise.resolve(spyUnsub) } }),
values: [
[balancesModel._internal.$activeAssets, { '0x001': { 0: true } }],
[balancesModel._internal.$subscriptions, { '0x001': { 0: Promise.resolve(spyUnsub) } }],
],
});

await allSettled(balancesModel.input.assetToUnsubSet, {
Expand All @@ -170,12 +167,13 @@ describe('models/balances/balances-model', () => {
vi.spyOn(balancesApi, 'subscribeBalance').mockReturnValue(unsubPromise);

const scope = fork({
values: new Map()
.set(balancesModel._internal.$activeAssets, { '0x003': { 0: true } })
.set(balancesModel._internal.$subscriptions, { '0x003': { 0: unsubPromise } })
.set(walletModel._internal.$account, '0x999')
.set(networkModel._internal.$chains, mockedChains)
.set(networkModel._internal.$connections, { '0x003': { api: {}, status: 'connected' } }),
values: [
[balancesModel._internal.$activeAssets, { '0x003': { 0: true } }],
[balancesModel._internal.$subscriptions, { '0x003': { 0: unsubPromise } }],
[walletModel._internal.$account, '0x999'],
[networkModel._internal.$chains, mockedChains],
[networkModel._internal.$connections, { '0x003': { api: {}, status: 'connected' } }],
],
});

await allSettled(balancesModel.input.assetToSubSet, {
Expand All @@ -193,14 +191,18 @@ describe('models/balances/balances-model', () => {
vi.spyOn(balancesApi, 'subscribeBalance').mockReturnValue(unsubPromise);

const scope = fork({
values: new Map()
.set(balancesModel._internal.$activeAssets, { '0x001': { 1: true }, '0x003': { 0: true, 1: true } })
.set(walletModel._internal.$account, '0x999')
.set(networkModel._internal.$chains, mockedChains)
.set(networkModel._internal.$connections, {
'0x001': { status: 'disconnected' },
'0x003': { api: {}, status: 'connected' },
}),
values: [
[balancesModel._internal.$activeAssets, { '0x001': { 1: true }, '0x003': { 0: true, 1: true } }],
[walletModel._internal.$account, '0x999'],
[networkModel._internal.$chains, mockedChains],
[
networkModel._internal.$connections,
{
'0x001': { status: 'disconnected' },
'0x003': { api: {}, status: 'connected' },
},
],
],
});

await allSettled(networkModel.output.connectionChanged, {
Expand All @@ -218,14 +220,18 @@ describe('models/balances/balances-model', () => {
vi.spyOn(balancesApi, 'subscribeBalance').mockReturnValue(Promise.resolve(spyUnsub));

const scope = fork({
values: new Map()
.set(balancesModel._internal.$activeAssets, { '0x001': { 1: true }, '0x003': { 0: true, 1: true } })
.set(balancesModel._internal.$subscriptions, {
'0x001': { 1: Promise.resolve(spyUnsub) },
'0x003': { 0: Promise.resolve(spyUnsub), 1: Promise.resolve(spyUnsub) },
})
.set(walletModel._internal.$account, '0x999')
.set(networkModel._internal.$chains, mockedChains),
values: [
[balancesModel._internal.$activeAssets, { '0x001': { 1: true }, '0x003': { 0: true, 1: true } }],
[walletModel._internal.$account, '0x999'],
[networkModel._internal.$chains, mockedChains],
[
balancesModel._internal.$subscriptions,
{
'0x001': { 1: Promise.resolve(spyUnsub) },
'0x003': { 0: Promise.resolve(spyUnsub), 1: Promise.resolve(spyUnsub) },
},
],
],
});

await allSettled(networkModel.output.connectionChanged, {
Expand All @@ -245,13 +251,17 @@ describe('models/balances/balances-model', () => {
vi.spyOn(balancesApi, 'subscribeBalance').mockReturnValue(unsubPromise);

const scope = fork({
values: new Map()
.set(balancesModel._internal.$activeAssets, { '0x001': { 0: true }, '0x003': { 0: true, 1: true } })
.set(networkModel._internal.$chains, mockedChains)
.set(networkModel._internal.$connections, {
'0x001': { api: {}, status: 'connected' },
'0x003': { api: {}, status: 'connected' },
}),
values: [
[balancesModel._internal.$activeAssets, { '0x001': { 0: true }, '0x003': { 0: true, 1: true } }],
[networkModel._internal.$chains, mockedChains],
[
networkModel._internal.$connections,
{
'0x001': { api: {}, status: 'connected' },
'0x003': { api: {}, status: 'connected' },
},
],
],
});

await allSettled(walletModel._internal.$account, { scope, params: '0x999' });
Expand Down
Loading

0 comments on commit 65e6204

Please sign in to comment.