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

yongjiezhao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git


The following commit(s) were added to refs/heads/master by this push:
     new d52d72ce64 refactor: Feature flags getter (#22015)
d52d72ce64 is described below

commit d52d72ce6402cc1f65f5d31eb2d984bf1a1a0257
Author: Yongjie Zhao <[email protected]>
AuthorDate: Thu Nov 3 22:30:22 2022 +0800

    refactor: Feature flags getter (#22015)
---
 .../superset-ui-core/src/utils/featureFlags.ts     |  9 ++---
 .../test/utils/featureFlag.test.ts                 | 47 +++++++++-------------
 2 files changed, 23 insertions(+), 33 deletions(-)

diff --git 
a/superset-frontend/packages/superset-ui-core/src/utils/featureFlags.ts 
b/superset-frontend/packages/superset-ui-core/src/utils/featureFlags.ts
index 380704f018..4eb90ea0af 100644
--- a/superset-frontend/packages/superset-ui-core/src/utils/featureFlags.ts
+++ b/superset-frontend/packages/superset-ui-core/src/utils/featureFlags.ts
@@ -87,14 +87,11 @@ declare global {
   }
 }
 
-export function isFeatureEnabled(feature: FeatureFlag) {
+export function isFeatureEnabled(feature: FeatureFlag): boolean {
   try {
     return !!window.featureFlags[feature];
   } catch (error) {
-    // eslint-disable-next-line no-console
-    console.error(`Failed to query feature flag ${feature} (see error below)`);
-    // eslint-disable-next-line no-console
-    console.error(error);
-    return false;
+    console.error(`Failed to query feature flag ${feature}`);
   }
+  return false;
 }
diff --git 
a/superset-frontend/packages/superset-ui-core/test/utils/featureFlag.test.ts 
b/superset-frontend/packages/superset-ui-core/test/utils/featureFlag.test.ts
index b2a273d2ed..66c58e79af 100644
--- a/superset-frontend/packages/superset-ui-core/test/utils/featureFlag.test.ts
+++ b/superset-frontend/packages/superset-ui-core/test/utils/featureFlag.test.ts
@@ -16,48 +16,41 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-
-import { FeatureFlag, isFeatureEnabled } from '@superset-ui/core';
-
-const originalFeatureFlags = window.featureFlags;
-// eslint-disable-next-line no-console
-const originalConsoleError = console.error;
-const reset = () => {
-  window.featureFlags = originalFeatureFlags;
-  // eslint-disable-next-line no-console
-  console.error = originalConsoleError;
-};
+import mockConsole from 'jest-mock-console';
+import { isFeatureEnabled, FeatureFlag } from '@superset-ui/core';
 
 it('returns false and raises console error if feature flags have not been 
initialized', () => {
-  // eslint-disable-next-line no-console
-  console.error = jest.fn();
-  delete (window as any).featureFlags;
+  mockConsole();
+  Object.defineProperty(window, 'featureFlags', {
+    value: undefined,
+  });
+
   
expect(isFeatureEnabled(FeatureFlag.ALLOW_DASHBOARD_DOMAIN_SHARDING)).toEqual(
     false,
   );
-
-  // eslint-disable-next-line no-console
-  expect(console.error).toHaveBeenNthCalledWith(
-    1,
-    'Failed to query feature flag ALLOW_DASHBOARD_DOMAIN_SHARDING (see error 
below)',
+  expect(console.error).toHaveBeenCalled();
+  // @ts-expect-error
+  expect(console.error.mock.calls[0][0]).toEqual(
+    'Failed to query feature flag ALLOW_DASHBOARD_DOMAIN_SHARDING',
   );
-
-  reset();
 });
 
 it('returns false for unset feature flag', () => {
+  Object.defineProperty(window, 'featureFlags', {
+    value: {},
+  });
+
   
expect(isFeatureEnabled(FeatureFlag.ALLOW_DASHBOARD_DOMAIN_SHARDING)).toEqual(
     false,
   );
-
-  reset();
 });
 
 it('returns true for set feature flag', () => {
-  window.featureFlags = {
-    [FeatureFlag.CLIENT_CACHE]: true,
-  };
+  Object.defineProperty(window, 'featureFlags', {
+    value: {
+      CLIENT_CACHE: true,
+    },
+  });
 
   expect(isFeatureEnabled(FeatureFlag.CLIENT_CACHE)).toEqual(true);
-  reset();
 });

Reply via email to