import { ComponentFixture , TestBed } from '@angular/core/testing' ; import { AppTestingModule } from '../../testing/app-testing.module' ; import { DetailsComponent } from './details.component' ; import { MetadataTabComponent } from './../info-drawer/metadata-tab/metadata-tab.component' ; import { CommentsTabComponent } from './../info-drawer/comments-tab/comments-tab.component' ; import { ActivatedRoute , Router } from '@angular/router' ; import { of , Subject } from 'rxjs' ; import { NO_ERRORS_SCHEMA } from '@angular/core' ; import { Store } from '@ngrx/store' ; import { ContentManagementService } from '../../services/content-management.service' ; import { AppExtensionService } from '@alfresco/adf-extensions' ; import { ContentApiService } from '@alfresco/aca-shared' ; import { SetSelectedNodesAction } from '@alfresco/aca-shared/store' ; import { NodeEntry } from '@alfresco/js-api' ; describe ( 'DetailsComponent' , ( ) => { let component ; let fixture ; let contentApiService ; let store ; const router = { url : '' , navigate : jasmine . createSpy ( 'navigate' ) } ; const mockStream = new Subject ( ) ; const storeMock = { dispatch : jasmine . createSpy ( 'dispatch' ) , select : ( ) => mockStream } ; beforeEach ( ( ) => { TestBed . configureTestingModule ( { imports : [ AppTestingModule ] , declarations : [ DetailsComponent , CommentsTabComponent , MetadataTabComponent ] , providers : [ ContentManagementService , AppExtensionService , { provide : Router , useValue : router } , { provide : Store , useValue : storeMock } , { provide : ActivatedRoute , useValue : { snapshot : { data : { preferencePrefix : 'prefix' } } , params : of ( { nodeId : 'someId' , activeTab : 'permissions' } ) } } ] , schemas : [ NO_ERRORS_SCHEMA ] } ) ; fixture = TestBed . createComponent ( DetailsComponent ) ; component = fixture . componentInstance ; contentApiService = TestBed . inject ( ContentApiService ) ; store = TestBed . inject ( Store ) ; spyOn ( contentApiService , 'getNode' ) . and . returnValue ( of ( { entry : { id : 'libraryId' } } as NodeEntry ) ) ; } ) ; afterEach ( ( ) => { fixture . destroy ( ) ; } ) ; it ( 'should get node id from router' , ( ) => { fixture . detectChanges ( ) ; expect ( component . nodeId ) . toBe ( 'someId' ) ; } ) ; it ( 'should set active tab from router' , ( ) => { fixture . detectChanges ( ) ; expect ( component . activeTab ) . toBe ( 2 ) ; } ) ; it ( 'should get node info after setting node from router' , ( ) => { fixture . detectChanges ( ) ; expect ( contentApiService . getNode ) . toHaveBeenCalled ( ) ; } ) ; it ( 'should dispatch node selection' , ( ) => { fixture . detectChanges ( ) ; expect ( store . dispatch ) . toHaveBeenCalledWith ( new SetSelectedNodesAction ( [ { entry : { id : 'libraryId' } } as NodeEntry ] ) ) ; } ) ; } ) ;