Skip to content

Commit dac6b27

Browse files
feat: add-feature-flags-test-cases
1 parent bea6429 commit dac6b27

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

test/utils/FeatureFlags.spec.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import { NativeInstabug } from '../../src/native/NativeInstabug';
2+
import { FeatureFlags, registerW3CFlagsListener } from '../../src/utils/FeatureFlags';
3+
import { _registerW3CFlagsChangeListener } from '../../src/modules/Instabug';
4+
5+
jest.mock('../../src/modules/Instabug', () => ({
6+
_registerW3CFlagsChangeListener: jest.fn(),
7+
}));
8+
9+
describe('FeatureFlags', () => {
10+
beforeEach(() => {
11+
jest.clearAllMocks();
12+
});
13+
14+
it('calls native methods by default', () => {
15+
(NativeInstabug.isW3ExternalTraceIDEnabled as jest.Mock).mockReturnValue(true);
16+
(NativeInstabug.isW3ExternalGeneratedHeaderEnabled as jest.Mock).mockReturnValue(false);
17+
(NativeInstabug.isW3CaughtHeaderEnabled as jest.Mock).mockReturnValue(true);
18+
19+
expect(FeatureFlags.isW3ExternalTraceID()).toBe(true);
20+
expect(FeatureFlags.isW3ExternalGeneratedHeader()).toBe(false);
21+
expect(FeatureFlags.isW3CaughtHeader()).toBe(true);
22+
});
23+
24+
it('overrides flags after listener is registered', async () => {
25+
const mockListener = jest.fn();
26+
(_registerW3CFlagsChangeListener as jest.Mock).mockImplementation((cb) => {
27+
mockListener.mockImplementation(cb);
28+
cb({
29+
isW3ExternalTraceIDEnabled: false,
30+
isW3ExternalGeneratedHeaderEnabled: true,
31+
isW3CaughtHeaderEnabled: false,
32+
});
33+
});
34+
35+
registerW3CFlagsListener();
36+
37+
expect(typeof FeatureFlags.isW3ExternalTraceID).toBe('function');
38+
39+
// @ts-ignore - these are now async after listener runs
40+
await expect(FeatureFlags.isW3ExternalTraceID()).resolves.toBe(false);
41+
await expect(FeatureFlags.isW3ExternalGeneratedHeader()).resolves.toBe(true);
42+
await expect(FeatureFlags.isW3CaughtHeader()).resolves.toBe(false);
43+
});
44+
});

0 commit comments

Comments
 (0)