You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@superset.apache.org by GitBox <gi...@apache.org> on 2022/03/10 01:30:05 UTC

[GitHub] [superset] ktmud opened a new pull request #19090: refactor(TimezoneSelector): simplify override logics and tests

ktmud opened a new pull request #19090:
URL: https://github.com/apache/superset/pull/19090


   ### SUMMARY
   
   Encountered a broken unit test in `TimezoneSelector` after making changes in #19085 , found some room for improvements so I refactored this component a little: simplified the timezone overriding logics and made the unit tests more complete. See comments for details.
   
   ### BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF
   
   No visual changes
   
   ### TESTING INSTRUCTIONS
   
   Test places where timezone selector is used. The functionality should not change.
   
   ### ADDITIONAL INFORMATION
   <!--- Check any relevant boxes with "x" -->
   <!--- HINT: Include "Fixes #nnn" if you are fixing an existing issue -->
   - [ ] Has associated issue:
   - [ ] Required feature flags:
   - [ ] Changes UI
   - [ ] Includes DB Migration (follow approval process in [SIP-59](https://github.com/apache/superset/issues/13351))
     - [ ] Migration is atomic, supports rollback & is backwards-compatible
     - [ ] Confirm DB migration upgrade and downgrade tested
     - [ ] Runtime estimates and downtime expectations provided
   - [ ] Introduces new feature or API
   - [ ] Removes existing feature or API
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


[GitHub] [superset] github-actions[bot] commented on pull request #19090: refactor(TimezoneSelector): simplify override logics and tests

Posted by GitBox <gi...@apache.org>.
github-actions[bot] commented on pull request #19090:
URL: https://github.com/apache/superset/pull/19090#issuecomment-1064626138


   @eschutho Ephemeral environment spinning up at http://35.86.91.68:8080. Credentials are `admin`/`admin`. Please allow several minutes for bootstrapping and startup.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


[GitHub] [superset] ktmud merged pull request #19090: refactor(TimezoneSelector): simplify override logics and tests

Posted by GitBox <gi...@apache.org>.
ktmud merged pull request #19090:
URL: https://github.com/apache/superset/pull/19090


   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


[GitHub] [superset] ktmud commented on a change in pull request #19090: refactor(TimezoneSelector): simplify override logics and tests

Posted by GitBox <gi...@apache.org>.
ktmud commented on a change in pull request #19090:
URL: https://github.com/apache/superset/pull/19090#discussion_r823257632



##########
File path: superset-frontend/src/components/TimezoneSelector/index.tsx
##########
@@ -92,43 +92,40 @@ const TIMEZONE_OPTIONS = TIMEZONES.map(zone => ({
   timezoneName: zone.name,
 }));
 
+const TIMEZONE_OPTIONS_SORT_COMPARATOR = (
+  a: typeof TIMEZONE_OPTIONS[number],
+  b: typeof TIMEZONE_OPTIONS[number],
+) =>
+  moment.tz(currentDate, a.timezoneName).utcOffset() -
+  moment.tz(currentDate, b.timezoneName).utcOffset();
+
+TIMEZONE_OPTIONS.sort(TIMEZONE_OPTIONS_SORT_COMPARATOR);

Review comment:
       #19085 requires select options to be pre-sorted.

##########
File path: superset-frontend/src/components/TimezoneSelector/TimezoneSelector.test.tsx
##########
@@ -18,60 +18,78 @@
  */
 import React from 'react';
 import moment from 'moment-timezone';
-import { render, screen } from 'spec/helpers/testing-library';
+import { render, screen, waitFor } from 'spec/helpers/testing-library';
 import userEvent from '@testing-library/user-event';
 import TimezoneSelector from './index';
 
-describe('TimezoneSelector', () => {
-  let timezone: string | undefined;
-  const onTimezoneChange = jest.fn(zone => {
-    timezone = zone;
-  });
-  beforeEach(() => {
-    timezone = undefined;
-  });
-  it('renders a TimezoneSelector with a default if undefined', () => {
-    jest.spyOn(moment.tz, 'guess').mockReturnValue('America/New_York');
-    render(
-      <TimezoneSelector
-        onTimezoneChange={onTimezoneChange}
-        timezone={timezone}
-      />,
-    );
-    expect(onTimezoneChange).toHaveBeenCalledWith('America/Nassau');
-  });
-  it('should properly select values from the offsetsToName map', async () => {
-    jest.spyOn(moment.tz, 'guess').mockReturnValue('America/New_York');
-    render(
-      <TimezoneSelector
-        onTimezoneChange={onTimezoneChange}
-        timezone={timezone}
-      />,
-    );
+jest.spyOn(moment.tz, 'guess').mockReturnValue('America/New_York');
 
-    const select = screen.getByRole('combobox', {
-      name: 'Timezone selector',
-    });
-    expect(select).toBeInTheDocument();
-    userEvent.click(select);
+const getSelectOptions = () =>
+  waitFor(() => document.querySelectorAll('.ant-select-item-option-content'));
 
-    const isDaylight = moment('now').isDST();
-    let findTitle = 'GMT -07:00 (Mountain Standard Time)';
-    if (isDaylight) {
-      findTitle = 'GMT -06:00 (Mountain Daylight Time)';
-    }
-    const selection = await screen.findByTitle(findTitle);
-    expect(selection).toBeInTheDocument();
-    userEvent.click(selection);
-    expect(selection).toBeVisible();
-  });
-  it('renders a TimezoneSelector with the closest value if passed in', async () => {
-    render(
-      <TimezoneSelector
-        onTimezoneChange={onTimezoneChange}
-        timezone="America/Los_Angeles"
-      />,
-    );
-    expect(onTimezoneChange).toHaveBeenLastCalledWith('America/Vancouver');
+it('use the timezone from `moment` if no timezone provided', () => {
+  const onTimezoneChange = jest.fn();
+  render(<TimezoneSelector onTimezoneChange={onTimezoneChange} />);
+  expect(onTimezoneChange).toHaveBeenCalledTimes(1);
+  expect(onTimezoneChange).toHaveBeenCalledWith('America/Nassau');
+});
+
+it('update to closest deduped timezone when timezone is provided', async () => {
+  const onTimezoneChange = jest.fn();
+  render(
+    <TimezoneSelector
+      onTimezoneChange={onTimezoneChange}
+      timezone="America/Los_Angeles"
+    />,
+  );
+  expect(onTimezoneChange).toHaveBeenCalledTimes(1);
+  expect(onTimezoneChange).toHaveBeenLastCalledWith('America/Vancouver');
+});
+
+it('use the default timezone when an invalid timezone is provided', async () => {
+  const onTimezoneChange = jest.fn();
+  render(
+    <TimezoneSelector onTimezoneChange={onTimezoneChange} timezone="UTC" />,
+  );
+  expect(onTimezoneChange).toHaveBeenCalledTimes(1);
+  expect(onTimezoneChange).toHaveBeenLastCalledWith('Africa/Abidjan');
+});
+
+it('can select a timezone values and returns canonical value', async () => {
+  const onTimezoneChange = jest.fn();
+  render(
+    <TimezoneSelector
+      onTimezoneChange={onTimezoneChange}
+      timezone="America/Nassau"
+    />,
+  );
+
+  const searchInput = screen.getByRole('combobox', {
+    name: 'Timezone selector',
   });
+  expect(searchInput).toBeInTheDocument();
+
+  userEvent.click(searchInput);
+  const options = await getSelectOptions();
+  // select option is first
+  expect(options[0]).toHaveTextContent('GMT -05:00 (Eastern Standard Time)');
+  // others are ranked by offset
+  expect(options[1]).toHaveTextContent('GMT -11:00 (Pacific/Pago_Pago)');
+  expect(options[2]).toHaveTextContent('GMT -10:00 (Hawaii Standard Time)');
+  expect(options[3]).toHaveTextContent('GMT -10:00 (America/Adak)');
+
+  // search for mountain time
+  await userEvent.type(searchInput, 'mou', { delay: 10 });
+
+  const isDaylight = moment(moment.now()).isDST();
+
+  let findTitle = 'GMT -07:00 (Mountain Standard Time)';
+  if (isDaylight) {
+    findTitle = 'GMT -06:00 (Mountain Daylight Time)';
+  }
+  const selectOption = await screen.findByTitle(findTitle);
+  expect(selectOption).toBeInTheDocument();
+  userEvent.click(selectOption);
+  expect(onTimezoneChange).toHaveBeenCalledTimes(1);
+  expect(onTimezoneChange).toHaveBeenLastCalledWith('America/Cambridge_Bay');

Review comment:
       Test the updated timezone value after selecting an option

##########
File path: superset-frontend/src/components/TimezoneSelector/index.tsx
##########
@@ -92,43 +92,40 @@ const TIMEZONE_OPTIONS = TIMEZONES.map(zone => ({
   timezoneName: zone.name,
 }));
 
+const TIMEZONE_OPTIONS_SORT_COMPARATOR = (
+  a: typeof TIMEZONE_OPTIONS[number],
+  b: typeof TIMEZONE_OPTIONS[number],
+) =>
+  moment.tz(currentDate, a.timezoneName).utcOffset() -
+  moment.tz(currentDate, b.timezoneName).utcOffset();
+
+TIMEZONE_OPTIONS.sort(TIMEZONE_OPTIONS_SORT_COMPARATOR);
+
+const matchTimezoneToOptions = (timezone: string) =>
+  TIMEZONE_OPTIONS.find(option => option.offsets === getOffsetKey(timezone))
+    ?.value || DEFAULT_TIMEZONE.value;
+
 const TimezoneSelector = ({ onTimezoneChange, timezone }: TimezoneProps) => {
-  const prevTimezone = useRef(timezone);
-  const matchTimezoneToOptions = (timezone: string) =>
-    TIMEZONE_OPTIONS.find(option => option.offsets === getOffsetKey(timezone))
-      ?.value || DEFAULT_TIMEZONE.value;
-
-  const updateTimezone = useCallback(
-    (tz: string) => {
-      // update the ref to track changes
-      prevTimezone.current = tz;
-      // the parent component contains the state for the value
-      onTimezoneChange(tz);
-    },
-    [onTimezoneChange],
+  const validTimezone = useMemo(
+    () => matchTimezoneToOptions(timezone || moment.tz.guess()),
+    [timezone],
   );
 
+  // force trigger a timezone update if provided `timezone` is not invalid
   useEffect(() => {
-    const updatedTz = matchTimezoneToOptions(timezone || moment.tz.guess());
-    if (prevTimezone.current !== updatedTz) {
-      updateTimezone(updatedTz);
+    if (timezone !== validTimezone) {
+      onTimezoneChange(validTimezone);
     }
-  }, [timezone, updateTimezone]);
+  }, [validTimezone, onTimezoneChange, timezone]);
 
   return (
     <Select
       ariaLabel={t('Timezone selector')}
       css={{ minWidth: MIN_SELECT_WIDTH }} // smallest size for current values
-      onChange={onTimezoneChange}
-      value={timezone || DEFAULT_TIMEZONE.value}

Review comment:
       Make sure `value` is a valid timezone. `timezone` may be different than `updatedTz`.

##########
File path: superset-frontend/src/components/TimezoneSelector/TimezoneSelector.test.tsx
##########
@@ -18,60 +18,78 @@
  */
 import React from 'react';
 import moment from 'moment-timezone';
-import { render, screen } from 'spec/helpers/testing-library';
+import { render, screen, waitFor } from 'spec/helpers/testing-library';
 import userEvent from '@testing-library/user-event';
 import TimezoneSelector from './index';
 
-describe('TimezoneSelector', () => {
-  let timezone: string | undefined;
-  const onTimezoneChange = jest.fn(zone => {
-    timezone = zone;
-  });
-  beforeEach(() => {
-    timezone = undefined;
-  });
-  it('renders a TimezoneSelector with a default if undefined', () => {
-    jest.spyOn(moment.tz, 'guess').mockReturnValue('America/New_York');
-    render(
-      <TimezoneSelector
-        onTimezoneChange={onTimezoneChange}
-        timezone={timezone}
-      />,
-    );
-    expect(onTimezoneChange).toHaveBeenCalledWith('America/Nassau');
-  });
-  it('should properly select values from the offsetsToName map', async () => {
-    jest.spyOn(moment.tz, 'guess').mockReturnValue('America/New_York');
-    render(
-      <TimezoneSelector
-        onTimezoneChange={onTimezoneChange}
-        timezone={timezone}
-      />,
-    );
+jest.spyOn(moment.tz, 'guess').mockReturnValue('America/New_York');
 
-    const select = screen.getByRole('combobox', {
-      name: 'Timezone selector',
-    });
-    expect(select).toBeInTheDocument();
-    userEvent.click(select);
+const getSelectOptions = () =>
+  waitFor(() => document.querySelectorAll('.ant-select-item-option-content'));
 
-    const isDaylight = moment('now').isDST();
-    let findTitle = 'GMT -07:00 (Mountain Standard Time)';
-    if (isDaylight) {
-      findTitle = 'GMT -06:00 (Mountain Daylight Time)';
-    }
-    const selection = await screen.findByTitle(findTitle);
-    expect(selection).toBeInTheDocument();
-    userEvent.click(selection);
-    expect(selection).toBeVisible();
-  });
-  it('renders a TimezoneSelector with the closest value if passed in', async () => {
-    render(
-      <TimezoneSelector
-        onTimezoneChange={onTimezoneChange}
-        timezone="America/Los_Angeles"
-      />,
-    );
-    expect(onTimezoneChange).toHaveBeenLastCalledWith('America/Vancouver');
+it('use the timezone from `moment` if no timezone provided', () => {
+  const onTimezoneChange = jest.fn();
+  render(<TimezoneSelector onTimezoneChange={onTimezoneChange} />);
+  expect(onTimezoneChange).toHaveBeenCalledTimes(1);
+  expect(onTimezoneChange).toHaveBeenCalledWith('America/Nassau');
+});
+
+it('update to closest deduped timezone when timezone is provided', async () => {
+  const onTimezoneChange = jest.fn();
+  render(
+    <TimezoneSelector
+      onTimezoneChange={onTimezoneChange}
+      timezone="America/Los_Angeles"
+    />,
+  );
+  expect(onTimezoneChange).toHaveBeenCalledTimes(1);
+  expect(onTimezoneChange).toHaveBeenLastCalledWith('America/Vancouver');
+});
+
+it('use the default timezone when an invalid timezone is provided', async () => {
+  const onTimezoneChange = jest.fn();
+  render(
+    <TimezoneSelector onTimezoneChange={onTimezoneChange} timezone="GMT" />,
+  );
+  expect(onTimezoneChange).toHaveBeenCalledTimes(1);
+  expect(onTimezoneChange).toHaveBeenLastCalledWith('Africa/Abidjan');
+});
+
+it('Can select a timezone values and returns canonical value', async () => {
+  const onTimezoneChange = jest.fn();
+  render(
+    <TimezoneSelector
+      onTimezoneChange={onTimezoneChange}
+      timezone="America/Nassau"
+    />,
+  );
+
+  const searchInput = screen.getByRole('combobox', {
+    name: 'Timezone selector',
   });
+  expect(searchInput).toBeInTheDocument();
+
+  userEvent.click(searchInput);
+  const options = await getSelectOptions();
+  // select option is first
+  expect(options[0]).toHaveTextContent('GMT -05:00 (Eastern Standard Time)');
+  // others are ranked by offset
+  expect(options[1]).toHaveTextContent('GMT -11:00 (Pacific/Pago_Pago)');
+  expect(options[2]).toHaveTextContent('GMT -10:00 (Hawaii Standard Time)');
+  expect(options[3]).toHaveTextContent('GMT -10:00 (America/Adak)');

Review comment:
       New tests for option ordering.

##########
File path: superset-frontend/src/components/TimezoneSelector/index.tsx
##########
@@ -92,43 +92,40 @@ const TIMEZONE_OPTIONS = TIMEZONES.map(zone => ({
   timezoneName: zone.name,
 }));
 
+const TIMEZONE_OPTIONS_SORT_COMPARATOR = (
+  a: typeof TIMEZONE_OPTIONS[number],
+  b: typeof TIMEZONE_OPTIONS[number],
+) =>
+  moment.tz(currentDate, a.timezoneName).utcOffset() -
+  moment.tz(currentDate, b.timezoneName).utcOffset();
+
+TIMEZONE_OPTIONS.sort(TIMEZONE_OPTIONS_SORT_COMPARATOR);
+
+const matchTimezoneToOptions = (timezone: string) =>
+  TIMEZONE_OPTIONS.find(option => option.offsets === getOffsetKey(timezone))
+    ?.value || DEFAULT_TIMEZONE.value;
+
 const TimezoneSelector = ({ onTimezoneChange, timezone }: TimezoneProps) => {
-  const prevTimezone = useRef(timezone);
-  const matchTimezoneToOptions = (timezone: string) =>
-    TIMEZONE_OPTIONS.find(option => option.offsets === getOffsetKey(timezone))
-      ?.value || DEFAULT_TIMEZONE.value;
-
-  const updateTimezone = useCallback(
-    (tz: string) => {
-      // update the ref to track changes
-      prevTimezone.current = tz;
-      // the parent component contains the state for the value
-      onTimezoneChange(tz);
-    },
-    [onTimezoneChange],
+  const validTimezone = useMemo(
+    () => matchTimezoneToOptions(timezone || moment.tz.guess()),
+    [timezone],

Review comment:
       Changed from `useRef` to simply triggering a setState in `useEffect`.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


[GitHub] [superset] github-actions[bot] commented on pull request #19090: refactor(TimezoneSelector): simplify override logics and tests

Posted by GitBox <gi...@apache.org>.
github-actions[bot] commented on pull request #19090:
URL: https://github.com/apache/superset/pull/19090#issuecomment-1064641245


   @eschutho Ephemeral environment spinning up at http://35.163.121.68:8080. Credentials are `admin`/`admin`. Please allow several minutes for bootstrapping and startup.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


[GitHub] [superset] github-actions[bot] commented on pull request #19090: refactor(TimezoneSelector): simplify override logics and tests

Posted by GitBox <gi...@apache.org>.
github-actions[bot] commented on pull request #19090:
URL: https://github.com/apache/superset/pull/19090#issuecomment-1064700331


   Ephemeral environment shutdown and build artifacts deleted.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


[GitHub] [superset] codecov[bot] commented on pull request #19090: refactor(TimezoneSelector): simplify override logics and tests

Posted by GitBox <gi...@apache.org>.
codecov[bot] commented on pull request #19090:
URL: https://github.com/apache/superset/pull/19090#issuecomment-1063596895


   # [Codecov](https://codecov.io/gh/apache/superset/pull/19090?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation) Report
   > Merging [#19090](https://codecov.io/gh/apache/superset/pull/19090?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation) (4f7a93c) into [master](https://codecov.io/gh/apache/superset/commit/0e0beceac173f765d8f9a0887732029b78603f6d?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation) (0e0bece) will **decrease** coverage by `0.00%`.
   > The diff coverage is `90.00%`.
   
   [![Impacted file tree graph](https://codecov.io/gh/apache/superset/pull/19090/graphs/tree.svg?width=650&height=150&src=pr&token=KsB0fHcx6l&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation)](https://codecov.io/gh/apache/superset/pull/19090?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation)
   
   ```diff
   @@            Coverage Diff             @@
   ##           master   #19090      +/-   ##
   ==========================================
   - Coverage   66.48%   66.48%   -0.01%     
   ==========================================
     Files        1644     1644              
     Lines       63492    63491       -1     
     Branches     6459     6457       -2     
   ==========================================
   - Hits        42212    42211       -1     
     Misses      19610    19610              
     Partials     1670     1670              
   ```
   
   | Flag | Coverage Δ | |
   |---|---|---|
   | javascript | `51.23% <90.00%> (-0.01%)` | :arrow_down: |
   
   Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#carryforward-flags-in-the-pull-request-comment) to find out more.
   
   | [Impacted Files](https://codecov.io/gh/apache/superset/pull/19090?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation) | Coverage Δ | |
   |---|---|---|
   | [...frontend/src/components/TimezoneSelector/index.tsx](https://codecov.io/gh/apache/superset/pull/19090/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-c3VwZXJzZXQtZnJvbnRlbmQvc3JjL2NvbXBvbmVudHMvVGltZXpvbmVTZWxlY3Rvci9pbmRleC50c3g=) | `96.96% <90.00%> (-0.09%)` | :arrow_down: |
   
   ------
   
   [Continue to review full report at Codecov](https://codecov.io/gh/apache/superset/pull/19090?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation).
   > **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation)
   > `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
   > Powered by [Codecov](https://codecov.io/gh/apache/superset/pull/19090?src=pr&el=footer&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation). Last update [0e0bece...4f7a93c](https://codecov.io/gh/apache/superset/pull/19090?src=pr&el=lastupdated&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation).
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


[GitHub] [superset] eschutho commented on pull request #19090: refactor(TimezoneSelector): simplify override logics and tests

Posted by GitBox <gi...@apache.org>.
eschutho commented on pull request #19090:
URL: https://github.com/apache/superset/pull/19090#issuecomment-1064625202


   /testenv up
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


[GitHub] [superset] eschutho commented on pull request #19090: refactor(TimezoneSelector): simplify override logics and tests

Posted by GitBox <gi...@apache.org>.
eschutho commented on pull request #19090:
URL: https://github.com/apache/superset/pull/19090#issuecomment-1064638779


   /testenv up FEATURE_ALERT_REPORTS=True


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org