import React from 'react'; import { fireEvent, render, cleanup } from '@testing-library/react'; import { composeStories } from '@storybook/testing-react'; import * as stories from './PopoverElement.stories'; import 'jest-styled-components'; const { Default } = composeStories(stories); const testClickEvent = jest.fn(); describe('Default', () => { let container: HTMLDivElement; const dropdownElementId = 'dropdown-element-test-id'; const dropdownElementClickId = 'dropdown-element-click-test-id'; beforeEach(() => { container = document.createElement('div'); render(, { container: document.body.appendChild(container), }); }); afterEach(() => { cleanup(); }); it('should render the component', () => { const element = container.querySelector( `[data-testid="${dropdownElementId}"]`, ); expect(element).not.toBeNull(); }); it('should fire event when clicked', async () => { const element = container.querySelector( `[data-testid="${dropdownElementClickId}"]`, ); element && fireEvent.click(element); expect(testClickEvent).toHaveBeenCalled(); }); }); describe('Custom', () => { let container: HTMLDivElement; const dropdownElementId = 'dropdown-element-test-id'; const dropdownElementClickId = 'dropdown-element-click-test-id'; const dropdownElementTextId = 'dropdown-element-text-test-id'; const height = 50; const width = 100; const buttonText = 'Local Devchain Server'; beforeEach(() => { container = document.createElement('div'); render( , { container: document.body.appendChild(container), }, ); }); afterEach(() => { cleanup(); }); it('should render the component', () => { const element = container.querySelector( `[data-testid="${dropdownElementId}"]`, ); expect(element).not.toBeNull(); }); it('should fire event when clicked', async () => { const element = container.querySelector( `[data-testid="${dropdownElementClickId}"]`, ); element && fireEvent.click(element); expect(testClickEvent).toHaveBeenCalled(); }); it(`should have set the width to ${width}`, () => { const element = container.querySelector( `[data-testid="${dropdownElementClickId}"]`, ); expect(element?.getAttribute('width')).toBe(`${width}`); }); it(`should have set the height to ${height}`, () => { const element = container.querySelector( `[data-testid="${dropdownElementClickId}"]`, ); expect(element?.getAttribute('height')).toBe(`${height}`); }); it('should have set the text', () => { const element = container.querySelector( `[data-testid="${dropdownElementTextId}"]`, ); expect(element?.textContent).toBe(buttonText); }); });