import migration63 from './063'; describe('migration #63', () => { it('should update the version metadata', async () => { const oldStorage = { meta: { version: 62, }, data: {}, }; const newStorage = await migration63.migrate(oldStorage); expect(newStorage.meta).toStrictEqual({ version: 63, }); }); it('should move accountTokens data from PreferencesController to TokensController allTokens field and rotate structure from [accountAddress][chainId] to [chainId][accountAddress]', async () => { const oldAccountTokens = { '0x00000000000': { '0x1': [ { address: '0x6b175474e89094c44da98b954eedeac495271d0f', decimals: 18, isERC721: false, symbol: 'DAI', }, { address: '0x1f9840a85d5af5bf1d1762f925bdaddc4201f984', decimals: 18, isERC721: false, symbol: 'UNI', }, ], '0x89': [ { address: '0x70d1f773a9f81c852087b77f6ae6d3032b02d2ab', decimals: 18, isERC721: false, symbol: 'LINK', }, { address: '0xc2132d05d31c914a87c6611c10748aeb04b58e8f', decimals: 6, isERC721: false, symbol: 'USDT', }, ], }, '0x1111111111': { '0x1': [ { address: '0x6b175474e89094c44da98b954eedeac495271d0f', decimals: 18, isERC721: false, symbol: 'FAI', }, { address: '0x1f9840a85d5af5bf1d1762f925bdaddc4201f984', decimals: 18, isERC721: false, symbol: 'PUNI', }, ], '0x89': [ { address: '0x70d1f773a9f81c852087b77f6ae6d3032b02d2ab', decimals: 18, isERC721: false, symbol: 'SLINK', }, { address: '0xc2132d05d31c914a87c6611c10748aeb04b58e8f', decimals: 6, isERC721: false, symbol: 'USDC', }, ], }, }; const expectedTokens = { '0x1': { '0x00000000000': [ { address: '0x6b175474e89094c44da98b954eedeac495271d0f', decimals: 18, isERC721: false, symbol: 'DAI', }, { address: '0x1f9840a85d5af5bf1d1762f925bdaddc4201f984', decimals: 18, isERC721: false, symbol: 'UNI', }, ], '0x1111111111': [ { address: '0x6b175474e89094c44da98b954eedeac495271d0f', decimals: 18, isERC721: false, symbol: 'FAI', }, { address: '0x1f9840a85d5af5bf1d1762f925bdaddc4201f984', decimals: 18, isERC721: false, symbol: 'PUNI', }, ], }, '0x89': { '0x00000000000': [ { address: '0x70d1f773a9f81c852087b77f6ae6d3032b02d2ab', decimals: 18, isERC721: false, symbol: 'LINK', }, { address: '0xc2132d05d31c914a87c6611c10748aeb04b58e8f', decimals: 6, isERC721: false, symbol: 'USDT', }, ], '0x1111111111': [ { address: '0x70d1f773a9f81c852087b77f6ae6d3032b02d2ab', decimals: 18, isERC721: false, symbol: 'SLINK', }, { address: '0xc2132d05d31c914a87c6611c10748aeb04b58e8f', decimals: 6, isERC721: false, symbol: 'USDC', }, ], }, }; const oldStorage = { meta: {}, data: { PreferencesController: { completedOnboarding: true, dismissSeedBackUpReminder: false, accountTokens: oldAccountTokens, }, }, }; const newStorage = await migration63.migrate(oldStorage); expect(newStorage.data).toStrictEqual({ TokensController: { allTokens: expectedTokens, allIgnoredTokens: {}, }, PreferencesController: { completedOnboarding: true, dismissSeedBackUpReminder: false, }, }); }); it('should move accountHiddenTokens data from PreferencesController to TokensController allIgnoredTokens field and rotate structure from [accountAddress][chainId] to [chainId][accountAddress]', async () => { const oldStorage = { meta: {}, data: { PreferencesController: { completedOnboarding: true, dismissSeedBackUpReminder: false, accountTokens: {}, accountHiddenTokens: { '0x1111111111': { '0x1': ['0x000000000000'], '0x89': ['0x11111111111'], }, '0x222222': { '0x4': ['0x000011112222'], }, '0x333333': { '0x5': ['0x000022223333'], '0x1': ['0x000033333344'], }, }, }, }, }; const newStorage = await migration63.migrate(oldStorage); expect(newStorage.data).toStrictEqual({ TokensController: { allTokens: {}, allIgnoredTokens: { '0x1': { '0x1111111111': ['0x000000000000'], '0x333333': ['0x000033333344'], }, '0x89': { '0x1111111111': ['0x11111111111'], }, '0x4': { '0x222222': ['0x000011112222'], }, '0x5': { '0x333333': ['0x000022223333'], }, }, }, PreferencesController: { completedOnboarding: true, dismissSeedBackUpReminder: false, }, }); }); it('should should remove all token related state from the preferences controller', async () => { const oldStorage = { meta: {}, data: { PreferencesController: { completedOnboarding: true, dismissSeedBackUpReminder: false, accountTokens: {}, accountHiddenTokens: {}, tokens: {}, hiddenTokens: {}, assetImages: {}, suggestedTokens: {}, }, }, }; const newStorage = await migration63.migrate(oldStorage); expect(newStorage.data).toStrictEqual({ PreferencesController: { completedOnboarding: true, dismissSeedBackUpReminder: false, }, TokensController: { allTokens: {}, allIgnoredTokens: {}, }, }); }); });