This is an automated email from the ASF dual-hosted git repository.

enzomartellucci pushed a commit to branch 
enxdev/refactor/InfoTooltipWithTrigger-component
in repository https://gitbox.apache.org/repos/asf/superset.git

commit ece557e454d20dbc13bc68ed49725decdac50051
Author: Enzo Martellucci <enzomartellu...@gmail.com>
AuthorDate: Mon Apr 28 16:30:52 2025 +0200

    refactor(test): enhance RTL test for InfoTooltipWithTrigger component
---
 .../src/components/InfoTooltipWithTrigger.tsx      |  3 +-
 .../components/InfoTooltipWithTrigger.test.tsx     | 60 ++++++++++++++++++----
 .../components/controls/OptionControls/index.tsx   |  8 ++-
 3 files changed, 58 insertions(+), 13 deletions(-)

diff --git 
a/superset-frontend/packages/superset-ui-chart-controls/src/components/InfoTooltipWithTrigger.tsx
 
b/superset-frontend/packages/superset-ui-chart-controls/src/components/InfoTooltipWithTrigger.tsx
index 7ba447b0f1..2c82fc52ec 100644
--- 
a/superset-frontend/packages/superset-ui-chart-controls/src/components/InfoTooltipWithTrigger.tsx
+++ 
b/superset-frontend/packages/superset-ui-chart-controls/src/components/InfoTooltipWithTrigger.tsx
@@ -19,6 +19,7 @@
 import { CSSProperties, KeyboardEvent, ReactNode } from 'react';
 import { kebabCase } from 'lodash';
 import { t } from '@superset-ui/core';
+import { ExclamationCircleOutlined } from '@ant-design/icons';
 import { Tooltip, TooltipProps, TooltipPlacement } from './Tooltip';
 
 export interface InfoTooltipWithTriggerProps {
@@ -35,7 +36,7 @@ export const InfoTooltipWithTrigger = ({
   label,
   tooltip,
   onClick,
-  icon,
+  icon = <ExclamationCircleOutlined />,
   className = 'text-muted',
   placement = 'right',
   iconsStyle = {},
diff --git 
a/superset-frontend/packages/superset-ui-chart-controls/test/components/InfoTooltipWithTrigger.test.tsx
 
b/superset-frontend/packages/superset-ui-chart-controls/test/components/InfoTooltipWithTrigger.test.tsx
index 0011f862b2..46cdd22585 100644
--- 
a/superset-frontend/packages/superset-ui-chart-controls/test/components/InfoTooltipWithTrigger.test.tsx
+++ 
b/superset-frontend/packages/superset-ui-chart-controls/test/components/InfoTooltipWithTrigger.test.tsx
@@ -18,7 +18,11 @@
  */
 import '@testing-library/jest-dom';
 import { fireEvent, render } from '@testing-library/react';
-import { ThemeProvider, supersetTheme } from '@superset-ui/core';
+import { ThemeProvider, supersetTheme, hexToRgb } from '@superset-ui/core';
+import {
+  InfoCircleOutlined,
+  ExclamationCircleOutlined,
+} from '@ant-design/icons';
 import { InfoTooltipWithTrigger, InfoTooltipWithTriggerProps } from 
'../../src';
 
 jest.mock('../../src/components/Tooltip', () => ({
@@ -44,31 +48,35 @@ test('renders a tooltip', () => {
   expect(getAllByTestId('mock-tooltip').length).toEqual(1);
 });
 
-test('renders an info icon', () => {
+test('renders an info antd icon', () => {
   const { container } = setup();
-  expect(container.getElementsByClassName('fa-info-circle')).toHaveLength(1);
+  const iconElement = container.querySelector('svg');
+  expect(iconElement).not.toBeNull();
 });
 
-test('responds to keypresses', () => {
+test('responds to keydown events', () => {
   const clickHandler = jest.fn();
   const { getByRole } = setup({
     label: 'test',
     tooltip: 'this is a test',
     onClick: clickHandler,
   });
-  fireEvent.keyPress(getByRole('button'), {
+
+  fireEvent.keyDown(getByRole('button'), {
     key: 'Tab',
     code: 9,
     charCode: 9,
   });
   expect(clickHandler).toHaveBeenCalledTimes(0);
-  fireEvent.keyPress(getByRole('button'), {
+
+  fireEvent.keyDown(getByRole('button'), {
     key: 'Enter',
     code: 13,
     charCode: 13,
   });
   expect(clickHandler).toHaveBeenCalledTimes(1);
-  fireEvent.keyPress(getByRole('button'), {
+
+  fireEvent.keyDown(getByRole('button'), {
     key: ' ',
     code: 32,
     charCode: 32,
@@ -76,9 +84,41 @@ test('responds to keypresses', () => {
   expect(clickHandler).toHaveBeenCalledTimes(2);
 });
 
-test('has a bsStyle', () => {
+test('applies success color based on theme token', () => {
+  const { container } = setup({
+    icon: <InfoCircleOutlined />,
+    iconsStyle: { color: supersetTheme.colorSuccess },
+  });
+
+  const buttonSpan = container.querySelector(
+    'span[role="button"]',
+  ) as HTMLElement;
+  expect(buttonSpan).toBeInTheDocument();
+  expect(buttonSpan.style.color).toBe(hexToRgb(supersetTheme.colorSuccess));
+});
+
+test('applies warning color based on theme token', () => {
   const { container } = setup({
-    bsStyle: 'something',
+    icon: <InfoCircleOutlined />,
+    iconsStyle: { color: supersetTheme.colorWarning },
   });
-  expect(container.getElementsByClassName('text-something')).toHaveLength(1);
+
+  const buttonSpan = container.querySelector(
+    'span[role="button"]',
+  ) as HTMLElement;
+  expect(buttonSpan).toBeInTheDocument();
+  expect(buttonSpan.style.color).toBe(hexToRgb(supersetTheme.colorWarning));
+});
+
+test('applies error color based on theme token', () => {
+  const { container } = setup({
+    icon: <ExclamationCircleOutlined />,
+    iconsStyle: { color: supersetTheme.colorError },
+  });
+
+  const buttonSpan = container.querySelector(
+    'span[role="button"]',
+  ) as HTMLElement;
+  expect(buttonSpan).toBeInTheDocument();
+  expect(buttonSpan.style.color).toBe(hexToRgb(supersetTheme.colorError));
 });
diff --git 
a/superset-frontend/src/explore/components/controls/OptionControls/index.tsx 
b/superset-frontend/src/explore/components/controls/OptionControls/index.tsx
index 8a44c5a06a..ec204ff717 100644
--- a/superset-frontend/src/explore/components/controls/OptionControls/index.tsx
+++ b/superset-frontend/src/explore/components/controls/OptionControls/index.tsx
@@ -395,9 +395,13 @@ export const OptionControlLabel = ({
       </Label>
       {(!!datasourceWarningMessage || isExtra) && (
         <StyledInfoTooltipWithTrigger
-          icon="exclamation-triangle"
+          icon={
+            <Icons.ExclamationCircleOutlined
+              iconSize="s"
+              iconColor={theme.colorWarning}
+            />
+          }
           placement="top"
-          bsStyle="warning"
           tooltip={
             datasourceWarningMessage ||
             t(`

Reply via email to