af3558e15b1cfac604c0f79080db2d8824804ca8
[sdc.git] / catalog-ui / src / app / ng2 / pages / workspace / tosca-artifacts / tosca-artifact-page.spec.ts
1 import {async, ComponentFixture, TestBed} from "@angular/core/testing";
2 import {NO_ERRORS_SCHEMA} from "@angular/core";
3 import {ToscaArtifactPageComponent} from "./tosca-artifact-page.component";
4 import {ConfigureFn, configureTests} from "../../../../../jest/test-config.helper";
5 import {NgxDatatableModule} from "@swimlane/ngx-datatable";
6 import {WorkspaceService} from "../workspace.service";
7 import {SdcUiServices} from "onap-ui-angular";
8 import {TopologyTemplateService} from "../../../services/component-services/topology-template.service";
9 import {Observable} from "rxjs/Observable";
10 import {ComponentMetadata} from "../../../../models/component-metadata";
11 import 'rxjs/add/observable/of';
12 import {NgxsModule, Store} from "@ngxs/store";
13 import {ArtifactsState} from "../../../store/states/artifacts.state";
14 import {toscaArtifactMock} from "../../../../../jest/mocks/artifacts-mock";
15
16 describe('tosca artifacts page', () => {
17
18     let fixture: ComponentFixture<ToscaArtifactPageComponent>;
19     let topologyTemplateServiceMock: Partial<TopologyTemplateService>;
20     let workspaceServiceMock: Partial<WorkspaceService>;
21     let loaderServiceMock: Partial<SdcUiServices.LoaderService>;
22     let store: Store;
23
24
25     beforeEach(
26         async(() => {
27
28             topologyTemplateServiceMock = {
29                 getArtifactsByType: jest.fn().mockImplementation((componentType, id, artifactType) => Observable.of(toscaArtifactMock))
30             };
31             workspaceServiceMock = {metadata: <ComponentMetadata>{uniqueId: 'service_unique_id', componentType: 'SERVICE'}}
32
33             loaderServiceMock = {
34                 activate : jest.fn(),
35                 deactivate: jest.fn()
36             }
37             const configure: ConfigureFn = testBed => {
38                 testBed.configureTestingModule({
39                     declarations: [ToscaArtifactPageComponent],
40                     imports: [NgxDatatableModule, NgxsModule.forRoot([ArtifactsState])],
41                     schemas: [NO_ERRORS_SCHEMA],
42                     providers: [
43                         {provide: WorkspaceService, useValue: workspaceServiceMock},
44                         {provide: TopologyTemplateService, useValue: topologyTemplateServiceMock},
45                         {provide: SdcUiServices.LoaderService, useValue: loaderServiceMock }
46                     ],
47                 });
48             };
49
50             configureTests(configure).then(testBed => {
51                 fixture = testBed.createComponent(ToscaArtifactPageComponent);
52                 store = testBed.get(Store);
53             });
54         })
55     );
56
57     it('should match current snapshot of tosca artifact pages component', () => {
58         expect(fixture).toMatchSnapshot();
59     });
60
61     it('should see exactly 2 tosca artifacts', () => {
62         fixture.componentInstance.ngOnInit();
63         fixture.componentInstance.toscaArtifacts$.subscribe((artifacts)=> {
64             expect(artifacts.length).toEqual(2);
65         })
66         store.selectOnce(state => state.artifacts.toscaArtifacts).subscribe(artifacts => {
67             expect(artifacts.length).toEqual(9);
68         });
69     })
70
71 });