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();
});