import 'reflect-metadata'; import { PictureFileUploaderComponent, } from './picture-file-uploader.component'; import { ALLOWED_PICTURE_FORMATS, } from './../../models/index'; const initPictureFileUploaderComponent = () => { return new PictureFileUploaderComponent(); }; describe('acceptFormats', () => { test('Returns the expected formats as a comma seperated string', () => { const pictureFileUploaderComponent = initPictureFileUploaderComponent(); const acceptFormats = pictureFileUploaderComponent.acceptFormats; expect(acceptFormats).toBe('image/jpeg,image/png,image/tiff'); }); }); describe('filesSelected', () => { const initFilesSelectedData = () => { const pictureFileUploaderComponent = initPictureFileUploaderComponent(); pictureFileUploaderComponent.onUploadInvalidFile.emit = jest.fn(); pictureFileUploaderComponent.onFilesSelected.emit = jest.fn(); const mockInvalidFile = { type: 'invalid', } as File; const mockValidFile = { type: ALLOWED_PICTURE_FORMATS[0], } as File; const fileList = [mockInvalidFile, mockValidFile] as any; return { fileList, mockInvalidFile, mockValidFile, pictureFileUploaderComponent, }; }; // tslint:disable-next-line test('Emits the invalid files to onUploadInvalidFile if some file is not in the accepted formats', () => { const { fileList, mockInvalidFile, pictureFileUploaderComponent, } = initFilesSelectedData(); pictureFileUploaderComponent.filesSelected(fileList); expect(pictureFileUploaderComponent.onUploadInvalidFile.emit) .toHaveBeenCalledWith([mockInvalidFile]); }); // tslint:disable-next-line test('Emits the valid files to onFilesSelected', () => { const { fileList, mockValidFile, pictureFileUploaderComponent, } = initFilesSelectedData(); pictureFileUploaderComponent.filesSelected(fileList); expect(pictureFileUploaderComponent.onFilesSelected.emit) .toHaveBeenCalledWith([mockValidFile]); }); // tslint:disable-next-line test('Does not emit an event to onUploadInvalidFile if there are no invalid files', () => { const { fileList, pictureFileUploaderComponent, } = initFilesSelectedData(); pictureFileUploaderComponent.filesSelected(fileList.slice(1)); expect(pictureFileUploaderComponent.onUploadInvalidFile.emit) .not.toHaveBeenCalled(); }); // tslint:disable-next-line test('Does not emit an event to onFilesSelected if there are no valid files', () => { const { fileList, pictureFileUploaderComponent, } = initFilesSelectedData(); pictureFileUploaderComponent.filesSelected(fileList.slice(0, 1)); expect(pictureFileUploaderComponent.onFilesSelected.emit) .not.toHaveBeenCalled(); }); });