import { render } from '@dynatrace/strato-components-testing/jest'; import { screen } from '@testing-library/react'; import React from 'react'; import { buildMockedFetchResponse } from './test-utils'; import actionNameWidget from './action-name.widget'; describe('actionNameWidget', () => { let fetchMock; beforeEach(() => { fetchMock = jest.fn(); globalThis.fetch = fetchMock; }); afterEach(() => { // Clean up the mock to prevent interference with other tests fetchMock.mockClear(); }); it('should render a widget with values', async () => { fetchMock.mockImplementation((url: string) => { if (url.startsWith('/platform/app-settings/v2/objects?')) { return buildMockedFetchResponse({ items: [ { objectId: 'action-name-connection-object-id', summary: 'My Connection', }, ], totalCount: 1, pageSize: 500, }); } else if ( url === '/platform/app-settings/v2/objects/action-name-connection-object-id' ) { return buildMockedFetchResponse({ objectId: 'action-name-connection-object-id', summary: 'My Connection', }); } else { return Promise.reject(new Error(`Unexpected fetch URL: ${url}`)); } }); render( , ); expect(fetchMock).toHaveBeenCalledTimes(2); expect(screen.getByText('Mark')).toBeTruthy(); expect(await screen.findByText('My Connection')).toBeTruthy(); }); });