import 'reflect-metadata'; jest.mock('angular2-http-file-upload'); import { FileUploaderComponent, } from './file-uploader.component'; const initFileUploaderComponent = () => { const fileUploaderComponent = new FileUploaderComponent(); fileUploaderComponent.fileInput = { nativeElement: { click: () => { return; }, }, }; return fileUploaderComponent; }; describe('clickedUpload', () => { test('Calls nativeElement.click on fileInput reference', () => { const fileUploaderComponent = initFileUploaderComponent(); jest.spyOn(fileUploaderComponent.fileInput.nativeElement, 'click'); fileUploaderComponent.clickedUpload(); expect(fileUploaderComponent.fileInput.nativeElement.click) .toBeCalled(); expect(fileUploaderComponent.fileInput.nativeElement.click) .toHaveBeenCalledTimes(1); }); }); describe('uploadFiles', () => { test('Returns undefined if fileList.length is 0', () => { const fileUploaderComponent = initFileUploaderComponent(); fileUploaderComponent.fileInput.nativeElement.files = []; expect(fileUploaderComponent.uploadFiles()).toEqual(undefined); }); test('Calls onFilesSelected.emit with the fileList', () => { const fileUploaderComponent = initFileUploaderComponent(); fileUploaderComponent.fileInput.nativeElement.files = [ 1, 2, 3 ]; jest.spyOn(fileUploaderComponent.onFilesSelected, 'emit'); fileUploaderComponent.uploadFiles(); expect(fileUploaderComponent.onFilesSelected.emit) .toHaveBeenCalledWith( fileUploaderComponent.fileInput.nativeElement.files, ); }); // tslint:disable-next-line test('Sets fileInput.nativeElement.value to \'\' if fileList.length > 0', () => { const fileUploaderComponent = initFileUploaderComponent(); fileUploaderComponent.fileInput.nativeElement.files = [ 1 ]; fileUploaderComponent.uploadFiles(); expect(fileUploaderComponent.fileInput.nativeElement.value) .toEqual(''); }); });