import React from 'react'; import sinon from 'sinon'; import configureMockStore from 'redux-mock-store'; import { fireEvent, waitFor } from '@testing-library/react'; import { renderWithProvider } from '../../../../test/lib/render-helpers'; import testData from '../../../../.storybook/test-data'; import InteractiveReplacementTokenModal from '.'; describe('Interactive Replacement Token Modal', function () { const mockStore = { ...testData, metamask: { ...testData.metamask, mmiConfiguration: { portfolio: { enabled: true, url: 'https://dev.metamask-institutional.io/', }, features: { websocketApi: true, }, custodians: [ { refreshTokenUrl: 'https://saturn-custody.dev.metamask-institutional.io/oauth/token', name: 'saturn-dev', displayName: 'Saturn Custody', enabled: true, mmiApiUrl: 'https://api.dev.metamask-institutional.io/v1', websocketApiUrl: 'wss://websocket.dev.metamask-institutional.io/v1/ws', apiBaseUrl: 'https://saturn-custody.dev.metamask-institutional.io/eth', iconUrl: 'https://saturn-custody-ui.dev.metamask-institutional.io/saturn.svg', isNoteToTraderSupported: true, }, ], }, custodyAccountDetails: { '0xAddress': { address: '0xAddress', details: 'details', custodyType: 'testCustody - Saturn', custodianName: 'saturn-dev', }, }, providerConfig: { type: 'test', }, selectedAddress: '0xAddress', isUnlocked: true, interactiveReplacementToken: { oldRefreshToken: 'abc', url: 'https://saturn-custody-ui.dev.metamask-institutional.io', }, preferences: { useNativeCurrencyAsPrimaryCurrency: true, }, }, }; const store = configureMockStore()(mockStore); it('should render the interactive-replacement-token-modal', () => { const { getByText, getByTestId } = renderWithProvider( , store, ); expect(getByTestId('interactive-replacement-token-modal')).toBeVisible(); expect(getByText('Your custodian session has expired')).toBeInTheDocument(); }); it('opens new tab on Open Codefi Compliance click', async () => { global.platform = { openTab: sinon.spy() }; const { container } = renderWithProvider( , store, ); const button = container.getElementsByClassName('btn-primary')[0]; fireEvent.click(button); await waitFor(() => { expect(global.platform.openTab.calledOnce).toStrictEqual(true); }); }); });