Pause Upon VF Module Failure
[vid.git] / vid-webpack-master / src / app / instantiationStatus / instantiationStatus.component.service.spec.ts
index 29adfa9..5652923 100644 (file)
@@ -1,40 +1,42 @@
 import {getTestBed, TestBed} from '@angular/core/testing';
-import {COMPLETED_WITH_ERRORS, INPROGRESS, InstantiationStatusComponentService, PAUSE, PENDING, ServiceStatus, STOPPED, SUCCESS_CIRCLE, UNKNOWN, X_O} from './instantiationStatus.component.service';
+import {
+  COMPLETED_WITH_ERRORS,
+  FAILED_AND_PAUSED,
+  INPROGRESS,
+  InstantiationStatusComponentService,
+  PAUSE,
+  PAUSE_UPON_COMPLETION,
+  PENDING,
+  ServiceStatus,
+  STOPPED,
+  SUCCESS_CIRCLE,
+  UNKNOWN,
+  X_O
+} from './instantiationStatus.component.service';
 import {ServiceInfoModel} from '../shared/server/serviceInfo/serviceInfo.model';
 import {AaiService} from "../shared/services/aaiService/aai.service";
 import {MsoService} from "../shared/services/msoService/mso.service";
 import {NgRedux} from "@angular-redux/store";
 import {HttpClientTestingModule} from "@angular/common/http/testing";
-import {FeatureFlagsService} from "../shared/services/featureFlag/feature-flags.service";
+import {FeatureFlagsService, Features} from "../shared/services/featureFlag/feature-flags.service";
 import {DrawingBoardModes} from "../drawingBoard/service-planning/drawing-board.modes";
 import {RouterTestingModule} from "@angular/router/testing";
 import {of} from "rxjs";
 import {UrlTree} from "@angular/router";
 import each from "jest-each";
 import {ServiceAction} from "../shared/models/serviceInstanceActions";
+import {instance, mock, when} from "ts-mockito";
 
 class MockAppStore<T> {
-
-  getState() {
-    return {
-      global: {
-        flags: {
-          'FLAG_1902_NEW_VIEW_EDIT': true,
-
-        }
-      }
-    }
-  }
-
-  dispatch() {
-
-  }
+  dispatch() {}
 }
+
 describe('Instantiation Status Service', () => {
   let injector;
   let aaiService: AaiService;
   let msoService: MsoService;
   let service: InstantiationStatusComponentService;
+  let mockFeatureFlagsService: FeatureFlagsService = mock(FeatureFlagsService);
 
 
   beforeAll(done => (async () => {
@@ -48,7 +50,9 @@ describe('Instantiation Status Service', () => {
         AaiService,
         MsoService,
         FeatureFlagsService,
-        {provide: NgRedux, useClass: MockAppStore}]
+        {provide: NgRedux, useClass: MockAppStore},
+        {provide: FeatureFlagsService, useValue: instance(mockFeatureFlagsService)}
+      ]
     });
     await TestBed.compileComponents();
 
@@ -146,6 +150,8 @@ describe('Instantiation Status Service', () => {
     'StOpPeD': 'Stopped: Due to previous failure, will not be instantiated.',
     'COMPLETED_WITH_ERRORS': 'Completed with errors: some of the planned actions where successfully committed while other have not.\n Open the service to check it out.',
     'UNEXPECTED_RANDOM_STATUS': 'Unexpected status: "UNEXPECTED_RANDOM_STATUS"',
+    'COMPLETED_AND_PAUSED': 'Pause upon completion. you may resume the instantiation.\n Open the service to check it out.',
+    'FAILED_AND_PAUSED': 'Failed and Paused: you may re-deploy the instantiation.\n Open the service to check it out.',
   })) {
 
     test(`getStatusTooltip should return status popover: status=${status}`, () => {
@@ -172,6 +178,15 @@ describe('Instantiation Status Service', () => {
     expect(service.isRecreateEnabled(serviceInfoModel)).toBe(expected);
   });
 
+  each([
+    [true, true],
+    [false, false],
+  ]).
+  test('isRecreateVisible: should be %s if flag is %s', (expected:boolean, flag:boolean) => {
+    when(mockFeatureFlagsService.getFlagState(Features.FLAG_2004_CREATE_ANOTHER_INSTANCE_FROM_TEMPLATE)).thenReturn(flag);
+    expect(service.isRecreateVisible()).toEqual(expected);
+  });
+
   test('getStatusTooltip should return correct icon per job status', () => {
     let result : ServiceStatus  = service.getStatus('pending');
     expect(result.iconClassName).toEqual(PENDING);
@@ -197,6 +212,12 @@ describe('Instantiation Status Service', () => {
     result = service.getStatus('UNEXPECTED_RANDOM_STATUS');
     expect(result.iconClassName).toEqual(UNKNOWN);
 
+    result = service.getStatus('COMPLETED_AND_PAUSED');
+    expect(result.iconClassName).toEqual(PAUSE_UPON_COMPLETION);
+
+    result = service.getStatus('FAILED_AND_PAUSED');
+    expect(result.iconClassName).toEqual(FAILED_AND_PAUSED);
+
     result = service.getStatus(undefined);
     expect(result.iconClassName).toEqual(UNKNOWN);
   });