import { async, ComponentFixture, TestBed } from '@angular/core/testing';\r
\r
import { DetailsComponent } from './details.component';\r
+import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\r
+import { RouterTestingModule } from '@angular/router/testing';\r
+import { MatTableModule } from '@angular/material';\r
+import { inject } from '@angular/core/testing';\r
+import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';\r
+import { HttpClientModule } from '@angular/common/http';\r
+import { HttpClient } from '@angular/common/http';\r
+import { RouterModule } from '@angular/router';\r
+import { APP_BASE_HREF } from '@angular/common';\r
+import { ToastrNotificationService } from '../toastr-notification-service.service';\r
+import { DataService } from '../data.service';\r
+import { Observable, of } from 'rxjs';\r
+import { ACTINST } from '../model/activityInstance.model';\r
+import { PDI } from '../model/processDefinition.model';\r
+import { PII } from '../model/processInstance.model';\r
+import { VarInstance } from '../model/variableInstance.model';\r
\r
-describe('DetailsComponent', () => {\r
- let component: DetailsComponent;\r
- let fixture: ComponentFixture<DetailsComponent>;\r
+// Generate stub for toastr popup notifications\r
+class StubbedToastrNotificationService extends ToastrNotificationService {\r
+ toastrSettings() {\r
+ }\r
+}\r
+\r
+// Create SPY Object for Jasmine tests to mock DataService\r
+let spyDataService: jasmine.SpyObj<DataService>;\r
\r
+describe('DetailsComponent', () => {\r
beforeEach(async(() => {\r
+ spyDataService = jasmine.createSpyObj('DataService', ['getActivityInstance', 'getVariableInstance']);\r
+\r
TestBed.configureTestingModule({\r
- declarations: [DetailsComponent]\r
+ providers: [DetailsComponent, HttpClient, HttpTestingController,\r
+ { provide: APP_BASE_HREF, useValue: '/' },\r
+ { provide: ToastrNotificationService, useClass: StubbedToastrNotificationService },\r
+ { provide: DataService, useValue: spyDataService }],\r
+ imports: [RouterTestingModule, MatTableModule, HttpClientModule, RouterModule.forRoot([])],\r
+ schemas: [\r
+ CUSTOM_ELEMENTS_SCHEMA\r
+ ]\r
})\r
.compileComponents();\r
}));\r
\r
- beforeEach(() => {\r
- fixture = TestBed.createComponent(DetailsComponent);\r
- component = fixture.componentInstance;\r
- fixture.detectChanges();\r
- });\r
+ // Ensure creation of DetailsComponent component\r
+ it('component should be created', inject([DetailsComponent],\r
+ (detailsComponent: DetailsComponent) => {\r
+ expect(detailsComponent).toBeTruthy();\r
+ }));\r
+\r
+\r
+ // Mock an activityInstance and ensure array is populated\r
+ it('activityInstance should be defined if data service returns activities', inject([DetailsComponent],\r
+ (detailsComponent: DetailsComponent) => {\r
+ const activity: ACTINST = {\r
+ activityId: "",\r
+ processInstanceId: "",\r
+ calledProcessInstanceId: "",\r
+ activityName: "",\r
+ activityType: "",\r
+ durationInMillis: "1",\r
+ endTime: "",\r
+ startTime: ""\r
+ };\r
+ spyDataService.getActivityInstance.and.returnValue(of([activity]));\r
+ detailsComponent.getActInst("");\r
+ expect(detailsComponent.activityInstance.length).toEqual(1);\r
+ }));\r
+\r
+\r
+ // Create a processDefinition and ensure it is defined\r
+ it('processDefinition should be defined if PDI populated', inject([DetailsComponent],\r
+ (detailsComponent: DetailsComponent) => {\r
+ const activity: PDI = {\r
+ processDefinitionId: "1",\r
+ processDefinitionXml: ""\r
+ };\r
+ detailsComponent.getProcessDefinition("");\r
+ detailsComponent.processDefinition = activity;\r
+ expect(detailsComponent.processDefinition).toBeDefined();\r
+ }));\r
+\r
+\r
+ // Create a processInstance and ensure it is defined\r
+ it('processInstance should be defined if PII populated', inject([DetailsComponent],\r
+ (detailsComponent: DetailsComponent) => {\r
+ const testVals: PII = {\r
+ processInstancId: "1",\r
+ processDefinitionId: "1",\r
+ processDefinitionName: "test",\r
+ superProcessInstanceId: "1"\r
+ };\r
+ detailsComponent.getProcInstance("");\r
+ detailsComponent.processInstance = testVals;\r
+ expect(detailsComponent.processInstance).toBeDefined();\r
+ }));\r
+\r
+\r
+ // displayCamundaflow test\r
+ // TODO\r
\r
- it('should create', () => {\r
- expect(component).toBeTruthy();\r
- });\r
+ // Mock an variableInstance and ensure array is populated\r
+ it('variableInstance should be defined if data service returns activities', inject([DetailsComponent],\r
+ (detailsComponent: DetailsComponent) => {\r
+ const activity2: VarInstance = {\r
+ name: "a",\r
+ type: "a",\r
+ value: "1"\r
+ };\r
+ spyDataService.getVariableInstance.and.returnValue(of([activity2]));\r
+ detailsComponent.getVarInst("");\r
+ expect(detailsComponent.variableInstance.length).toEqual(1);\r
+ }));\r
});\r