import {render, screen, userEvent, waitFor} from 'sentry-test/reactTestingLibrary';
import {DiscoverDatasets} from 'sentry/utils/discover/types';
import {useNavigate} from 'sentry/utils/useNavigate';
import WidgetBuilderGroupBySelector from 'sentry/views/dashboards/widgetBuilder/components/groupBySelector';
import {WidgetBuilderProvider} from 'sentry/views/dashboards/widgetBuilder/contexts/widgetBuilderContext';
import {SpanTagsProvider} from 'sentry/views/explore/contexts/spanTagsContext';
jest.mock('sentry/utils/useNavigate', () => ({
useNavigate: jest.fn(),
}));
const mockUseNavigate = jest.mocked(useNavigate);
describe('WidgetBuilderGroupBySelector', function () {
beforeEach(function () {
MockApiClient.addMockResponse({
url: '/organizations/org-slug/spans/fields/',
body: [],
});
});
it('renders', async function () {
const mockNavigate = jest.fn();
mockUseNavigate.mockReturnValue(mockNavigate);
render(
);
expect(await screen.findByText('Group by')).toBeInTheDocument();
expect(await screen.findByText('Select group')).toBeInTheDocument();
expect(await screen.findByText('Add Group')).toBeInTheDocument();
});
it('renders the group by field and can function', async function () {
render(
);
expect(await screen.findByText('Group by')).toBeInTheDocument();
expect(await screen.findByText('Select group')).toBeInTheDocument();
expect(await screen.findByText('Add Group')).toBeInTheDocument();
await userEvent.click(await screen.findByText('Select group'));
await userEvent.click(await screen.findByText('timestamp'));
await userEvent.click(await screen.findByText('Add Group'));
await userEvent.click(await screen.findByText('Select group'));
await userEvent.click(await screen.findByText('id'));
expect(await screen.findAllByLabelText('Remove group')).toHaveLength(2);
await userEvent.click((await screen.findAllByLabelText('Remove group'))[0]!);
expect(await screen.findByText('id')).toBeInTheDocument();
await waitFor(() => {
expect(screen.queryByText('timestamp')).not.toBeInTheDocument();
});
});
});