summaryrefslogtreecommitdiffstats
path: root/vid-webpack-master/src/app/shared/services/featureFlag
diff options
context:
space:
mode:
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.ts47
-rw-r--r--vid-webpack-master/src/app/shared/services/featureFlag/feature-flags.service.ts29
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];
+ }
+
+
+}