import * as React from 'react'; import configureMockStore from 'redux-mock-store'; import thunk from 'redux-thunk'; import { renderWithProvider } from '../../../../../test/lib/render-helpers'; import mockState from '../../../../../test/data/mock-state.json'; import ViewSnap from './view-snap'; jest.mock('../../../../store/actions.ts', () => { return { disableSnap: jest.fn(), enableSnap: jest.fn(), removeSnap: jest.fn(), removePermissionsFor: jest.fn(), updateCaveat: jest.fn(), }; }); jest.mock('react-router-dom', () => { const original = jest.requireActual('react-router-dom'); return { ...original, useLocation: jest.fn(() => ({ pathname: `/settings/snaps-view/${encodeURIComponent( 'npm:@metamask/test-snap-bip44', )}`, })), }; }); const mockStore = configureMockStore([thunk])(mockState); describe('ViewSnap', () => { it('should properly display Snap View elements', async () => { const { getByText, container, getByRole } = renderWithProvider( , mockStore, ); // Snap name & Snap authorship component expect(getByText('BIP-44 Test Snap')).toBeDefined(); expect( container.getElementsByClassName('snaps-authorship-expanded')?.length, ).toBe(1); // Snap description expect( getByText('An example Snap that signs messages using BLS.'), ).toBeDefined(); // Snap version info expect(getByText('5.1.2')).toBeDefined(); // Enable Snap expect(getByText('Enabled')).toBeDefined(); expect(container.getElementsByClassName('toggle-button')?.length).toBe(1); // Permissions expect(getByText('Permissions')).toBeDefined(); expect( container.getElementsByClassName('snap-permissions-list')?.length, ).toBe(1); // Connected sites expect(getByText('Connected sites')).toBeDefined(); expect( container.getElementsByClassName('connected-sites-list__content-rows') ?.length, ).toBe(1); // Remove snap expect(getByText('Remove snap')).toBeDefined(); expect( getByText( 'This action will delete the snap, its data and revoke your given permissions.', ), ).toBeDefined(); expect(getByText('Remove BIP-44 Test Snap')).toBeDefined(); expect(getByRole('button')).toHaveClass( 'button btn--rounded btn-danger view-snap__remove-button', ); }); });