import * as React from 'react'; import { render, fireEvent } from '@testing-library/react'; import SnapSettingsCard from '.'; describe('SnapSettingsCard', () => { const args = { name: 'Snap name', description: 'This snap provides developers everywhere access to an entirely new data storage paradigm, even letting your programs store data autonomously.', dateAdded: new Date().toDateString(), version: '10.5.1234', url: 'https://metamask.io', status: 'stopped', icon: './AST.png', }; it('should render the SnapsSettingCard without crashing', () => { const { getByText } = render(); expect(getByText('Snap name')).toBeDefined(); }); it('should render the pill as installing when given a status of installing', () => { args.status = 'installing'; const { getByText } = render(); expect(getByText('installing')).toBeDefined(); }); it('should render the pill as running when given a status of running', () => { args.status = 'running'; const { getByText } = render(); expect(getByText('running')).toBeDefined(); }); it('should render the pill as installing when given a status of stopped', () => { args.status = 'stopped'; const { getByText } = render(); expect(getByText('stopped')).toBeDefined(); }); it('should render the pill as crashed when given a status of crashed', () => { args.status = 'crashed'; const { getByText } = render(); expect(getByText('crashed')).toBeDefined(); }); it('should call onToggle prop when toggle button is clicked', () => { const onToggle = jest.fn(); args.onToggle = onToggle; const { container } = render(); const toggleBtn = container.querySelector('.toggle-button').firstChild; fireEvent.click(toggleBtn); expect(onToggle).toHaveBeenCalled(); }); it('should call onClick prop when See Details button is clicked', () => { const onClick = jest.fn(); args.onClick = onClick; const { container } = render(); const seeDetailsBtn = container.querySelector( '.snap-settings-card__button', ); fireEvent.click(seeDetailsBtn); expect(onClick).toHaveBeenCalled(); }); it('should render an icon image', () => { const { getByAltText } = render(); const image = getByAltText(args.name); expect(image).toBeDefined(); expect(image).toHaveAttribute('src', args.icon); }); it('should render the icon fallback using the first letter of the name', () => { const { getByText } = render(); expect(getByText('S')).toBeDefined(); }); });