import React from 'react'; import { render, act } from '@testing-library/react'; import 'regenerator-runtime'; import '@testing-library/jest-dom'; jest.mock('@times-components/image', () => ({ Placeholder: () => <>Placeholder })); const mockInitSettings = jest.fn(); const mockInitStyleSheet = jest.fn(); const mockInitComponent = jest.fn(); const mockInitElement = jest.fn(() => { const element = document.createElement('div'); element.appendChild(document.createTextNode('Widget')); return element; }); jest.mock('../../../utils/config', () => ({ initSettings: mockInitSettings, initStyleSheet: mockInitStyleSheet, initScript: () => new Promise(resolve => resolve({})), initElement: mockInitElement, initComponent: mockInitComponent })); import { OptaFootballPlayerRanking } from '../OptaFootballPlayerRanking'; const requiredProps = { season: '2025', competition: '8', visible_categories: 'goals,assists,chances,clean_sheets,cards_yellow,cards_red' }; describe('OptaFootballPlayerRanking', () => { beforeEach(() => { jest.clearAllMocks(); }); it('should render correctly', async () => { let asFragment: () => DocumentFragment; await act(async () => { const result = render(); asFragment = result.asFragment; }); expect(mockInitSettings).toHaveBeenCalled(); expect(mockInitStyleSheet).toHaveBeenCalled(); expect(mockInitComponent).toHaveBeenCalled(); expect(asFragment!()).toMatchSnapshot(); }); it('should pass widget as player_ranking', async () => { await act(async () => { render(); }); expect(mockInitElement).toHaveBeenCalledWith( 'opta-widget', expect.objectContaining({ widget: 'player_ranking', navigation: 'tabs_more', show_ranks: true, limit: 5, team_naming: 'full', player_naming: 'full' }) ); }); it('should pass team prop when provided', async () => { await act(async () => { render(); }); expect(mockInitElement).toHaveBeenCalledWith( 'opta-widget', expect.objectContaining({ team: '174' }) ); }); });