diff options
author | Ittay Stern <ittay.stern@att.com> | 2018-08-29 17:01:32 +0300 |
---|---|---|
committer | Ittay Stern <ittay.stern@att.com> | 2019-02-18 18:35:30 +0200 |
commit | 6f900cc45d7dd7f97430812b86b5c1d1693c8ae3 (patch) | |
tree | 936005c364dc5a7264d6304d4777c3d83494db22 /vid-webpack-master/src/app/shared/services/featureFlag | |
parent | 67d99f816cc583643c35193197594cf78d8ce60a (diff) |
merge from ecomp a88f0072 - Modern UI
Issue-ID: VID-378
Change-Id: Ibcb23dd27f550cf32ce2fe0239f0f496ae014ff6
Signed-off-by: Ittay Stern <ittay.stern@att.com>
Diffstat (limited to 'vid-webpack-master/src/app/shared/services/featureFlag')
-rw-r--r-- | vid-webpack-master/src/app/shared/services/featureFlag/feature-flags.service.spec.ts | 47 | ||||
-rw-r--r-- | vid-webpack-master/src/app/shared/services/featureFlag/feature-flags.service.ts | 29 |
2 files changed, 76 insertions, 0 deletions
diff --git a/vid-webpack-master/src/app/shared/services/featureFlag/feature-flags.service.spec.ts b/vid-webpack-master/src/app/shared/services/featureFlag/feature-flags.service.spec.ts new file mode 100644 index 000000000..847af6676 --- /dev/null +++ b/vid-webpack-master/src/app/shared/services/featureFlag/feature-flags.service.spec.ts @@ -0,0 +1,47 @@ +import {FeatureFlagsService, Features} from "./feature-flags.service"; +import {getTestBed, TestBed} from "@angular/core/testing"; +import {NgRedux} from "@angular-redux/store"; +import each from 'jest-each'; +let flagValue:boolean; + +class MockReduxStore<T> { + + getState() { + return { + "global": { + "flags": { + "FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST": flagValue, + }, + }, + } + }; +} + +describe('Feature flags Service', () => { + + let injector; + let service: FeatureFlagsService; + + beforeAll(done => (async () => { + TestBed.configureTestingModule({ + providers: [ + FeatureFlagsService, + {provide: NgRedux, useClass: MockReduxStore}] + }); + await TestBed.compileComponents(); + + injector = getTestBed(); + service = injector.get(FeatureFlagsService); + + })().then(done).catch(done.fail)); + + let flagValueDataProvider = [ + ['flag is true', true], + ['flag is false', false] + ]; + + each(flagValueDataProvider).test("should return the correct flag %s", (desc: string, flag: boolean) => { + flagValue = flag; + expect(service.getFlagState(Features.FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST)).toEqual(flag); + }); +}); diff --git a/vid-webpack-master/src/app/shared/services/featureFlag/feature-flags.service.ts b/vid-webpack-master/src/app/shared/services/featureFlag/feature-flags.service.ts new file mode 100644 index 000000000..ec7bb0214 --- /dev/null +++ b/vid-webpack-master/src/app/shared/services/featureFlag/feature-flags.service.ts @@ -0,0 +1,29 @@ +import {NgRedux} from "@angular-redux/store"; +import {AppState} from "../../store/reducers"; +import {Injectable} from "@angular/core"; + +export enum Features { + FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST='FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST', + FLAG_1902_NEW_VIEW_EDIT='FLAG_1902_NEW_VIEW_EDIT', + FLAG_1902_VNF_GROUPING='FLAG_1902_VNF_GROUPING', + FLAG_VF_MODULE_RESUME_STATUS_CREATE = 'FLAG_VF_MODULE_RESUME_STATUS_CREATE', + DRAG_AND_DROP_OPERATION = 'DRAG_AND_DROP_OPERATION', + FLAG_1906_COMPONENT_INFO = 'FLAG_1906_COMPONENT_INFO', +} + +@Injectable() +export class FeatureFlagsService { + + constructor(private store: NgRedux<AppState>){} + + public getFlagState(flag: Features):boolean { + return FeatureFlagsService.getFlagState(flag, this.store); + } + + /*static method for easy refactoring of code, so no injection of FeatureFlagsService is needed*/ + public static getFlagState(flag: Features, store: NgRedux<AppState>):boolean { + return store.getState().global.flags[flag]; + } + + +} |