address review: import ReactElement type and assert onContextMenu call

This commit is contained in:
Evan Rusackas
2026-04-23 02:34:12 -07:00
parent 67502b2292
commit e3eae59568

View File

@@ -17,8 +17,9 @@
* under the License. * under the License.
*/ */
import type { ReactElement } from 'react';
import '@testing-library/jest-dom'; import '@testing-library/jest-dom';
import { render, screen } from '@testing-library/react'; import { fireEvent, render, screen } from '@testing-library/react';
import { supersetTheme, ThemeProvider } from '@apache-superset/core/theme'; import { supersetTheme, ThemeProvider } from '@apache-superset/core/theme';
import { TableRenderer } from '../../src/react-pivottable/TableRenderers'; import { TableRenderer } from '../../src/react-pivottable/TableRenderers';
import { aggregatorTemplates } from '../../src/react-pivottable/utilities'; import { aggregatorTemplates } from '../../src/react-pivottable/utilities';
@@ -52,7 +53,7 @@ const SAMPLE_DATA = [
{ color: 'red', shape: 'square', value: 40 }, { color: 'red', shape: 'square', value: 40 },
]; ];
function renderWithTheme(ui: React.ReactElement) { function renderWithTheme(ui: ReactElement) {
return render(<ThemeProvider theme={supersetTheme}>{ui}</ThemeProvider>); return render(<ThemeProvider theme={supersetTheme}>{ui}</ThemeProvider>);
} }
@@ -253,11 +254,23 @@ test('TableRenderer renders the column attribute label in the header', () => {
test('TableRenderer calls onContextMenu callback', () => { test('TableRenderer calls onContextMenu callback', () => {
const onContextMenu = jest.fn(); const onContextMenu = jest.fn();
const props = buildDefaultProps({ onContextMenu }); const props = buildDefaultProps({
onContextMenu,
tableOptions: { highlightHeaderCellsOnHover: true },
});
renderWithTheme(<TableRenderer {...props} />); renderWithTheme(<TableRenderer {...props} />);
const cells = screen.getAllByRole('gridcell'); // The column attribute value "circle" is rendered inside a header <th> whose
expect(cells.length).toBeGreaterThan(0); // onContextMenu handler calls the callback.
const columnHeaderCell = screen.getByText('circle').closest('th');
expect(columnHeaderCell).not.toBeNull();
fireEvent.contextMenu(columnHeaderCell!);
expect(onContextMenu).toHaveBeenCalledTimes(1);
const [, colKey, rowKey, filters] = onContextMenu.mock.calls[0];
expect(colKey).toEqual(['circle']);
expect(rowKey).toBeUndefined();
expect(filters).toEqual({ shape: 'circle' });
}); });
test('TableRenderer renders with multiple row dimensions', () => { test('TableRenderer renders with multiple row dimensions', () => {