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 { OptaFootballTeamRanking } from '../OptaFootballTeamRanking'; const requiredProps = { season: '2025', competition: '8', visible_categories: 'goals,shots,passing_accuracy,goals_conceded,fouls,cards_yellow,cards_red' }; describe('OptaFootballTeamRanking', () => { 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 team_ranking', async () => { await act(async () => { render(); }); expect(mockInitElement).toHaveBeenCalledWith( 'opta-widget', expect.objectContaining({ widget: 'team_ranking', navigation: 'tabs_more', default_nav: 1, show_ranks: true, limit: 5, team_naming: 'full' }) ); }); });