import suiteFrontend from '@theorchard/suite-frontend';
import * as mockIdentity from 'src/__fixtures__/identity.json';
import { isFeatureFlagEnabled } from 'src/utils/feature-flag';

jest.mock('@theorchard/suite-frontend', () => ({
    ...jest.requireActual<object>('@theorchard/suite-frontend'),
    useIdentity: jest.fn(),
}));

describe('isFeatureFlagEnabled', () => {
    it('when feature flag is created and its enabled', () => {
        jest.spyOn(suiteFrontend, 'useIdentity').mockReturnValue(mockIdentity);
        const featureFlagEnabled = isFeatureFlagEnabled('abacus_feature_flag');
        expect(featureFlagEnabled).toBeTruthy();
    });

    it('when feature flag is created but its disabled', () => {
        const identity = {
            ...mockIdentity,
            features: { abacus_feature_flag: false },
        };
        jest.spyOn(suiteFrontend, 'useIdentity').mockReturnValue(identity);
        const featureFlagEnabled = isFeatureFlagEnabled('abacus_feature_flag');
        expect(featureFlagEnabled).toBeFalsy();
    });

    it('when feature flag is not created', () => {
        jest.spyOn(suiteFrontend, 'useIdentity').mockReturnValue(mockIdentity);
        const featureFlagEnabled = isFeatureFlagEnabled('test_feature_flag');
        expect(featureFlagEnabled).toBeFalsy();
    });
});
