| import { FormsModule } from '@angular/forms'; |
| import { async, fakeAsync, ComponentFixture, TestBed, tick, inject } from '@angular/core/testing'; |
| import { By } from '@angular/platform-browser'; |
| import { Injectable, DebugElement } from '@angular/core'; |
| import { click, newEvent } from '../../testing'; |
| import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing'; |
| import { Observable } from 'rxjs/Observable'; |
| import { AbstractMockObservableService } from '../../common/abstract-mock-observable.service'; |
| import { MockComponent } from '../../testing/mock.component'; |
| import { MdDialogRef } from '@angular/material'; |
| import { Globals } from '../../common/globals'; |
| import { StringToDatePipe } from '../../common-components/pipes/string-to-date.pipe'; |
| import { FormattedTimestampPipe } from '../../common-components/pipes/formatted-timestamp.pipe'; |
| import { SessionContext } from '../../common/session-context'; |
| import { AbstractListComponent } from '../../lists/abstract-list/abstract-list.component'; |
| import { SortingComponent } from '../../lists/sorting/sorting.component'; |
| import { FileImportComponent } from './file-import.component'; |
| import { ImportService } from '../../services/import.service'; |
| |
| import { IMPORT_NOTIFICATION_FILES } from '../../test-data/import-notification-files'; |
| |
| describe('FileImportComponent', () => { |
| let component: FileImportComponent; |
| let fixture: ComponentFixture<FileImportComponent>; |
| let sessionContext: SessionContext; |
| let mockImportService; |
| |
| class MockDialogRef extends AbstractMockObservableService { |
| close() { } |
| } |
| |
| class MockImportService extends AbstractMockObservableService { |
| |
| getImportFiles() { |
| this.content = IMPORT_NOTIFICATION_FILES; |
| |
| return this; |
| }; |
| importFile() { |
| this.content = IMPORT_NOTIFICATION_FILES; |
| |
| return this; |
| }; |
| } |
| |
| |
| beforeEach(async(() => { |
| sessionContext = new SessionContext(); |
| mockImportService = new MockImportService(); |
| |
| TestBed.configureTestingModule({ |
| imports: [FormsModule], |
| declarations: [ |
| FileImportComponent, |
| StringToDatePipe, |
| FormattedTimestampPipe, |
| MockComponent({ selector: 'input', inputs: ['options'] }), |
| MockComponent({ selector: 'app-sorting', inputs: ['columnName', 'initColumnName', 'isDesc', 'defaultState'] }) |
| ], |
| providers: [ |
| { provide: MdDialogRef, useClass: MockDialogRef }, |
| { provide: ImportService, useValue: mockImportService }, |
| { provide: SessionContext, useClass: SessionContext } |
| ]}) |
| .overrideModule(BrowserDynamicTestingModule, { |
| set: { |
| entryComponents: [FileImportComponent] |
| } |
| |
| }) |
| .compileComponents(); |
| })); |
| |
| beforeEach(() => { |
| fixture = TestBed.createComponent(FileImportComponent); |
| component = fixture.componentInstance; |
| fixture.detectChanges(); |
| }); |
| |
| it('should be created', () => { |
| expect(component).toBeTruthy(); |
| }); |
| |
| it('should show files initially', async(() => { |
| |
| fixture.detectChanges(); |
| |
| fixture.whenStable().then(() => { |
| fixture.detectChanges(); |
| expect(component.fileModels.length).toBe(2); |
| expect(component.isImportFileSelected).toBe(false); |
| }); |
| })); |
| |
| xit('should call import file after import button click', async(() => { |
| spyOn(component, 'importThisFile').and.callThrough(); |
| spyOn(component, 'deleteFile').and.callThrough(); |
| |
| fixture.detectChanges(); |
| |
| fixture.whenStable().then(() => { |
| fixture.detectChanges(); |
| const des = fixture.debugElement.queryAll(By.css('td > .btn-sm')); |
| click(des[0]); |
| expect(component.importThisFile).toHaveBeenCalledWith(IMPORT_NOTIFICATION_FILES[0]); |
| expect(component.isImportFileSelected).toBe(true); |
| expect(component.deleteFile).toHaveBeenCalledWith(IMPORT_NOTIFICATION_FILES[0].fileName); |
| }); |
| })); |
| |
| |
| }); |