import 'reflect-metadata'; import { requiredMocks, } from './../../../test-mocks'; requiredMocks(jest); import { ImageCollectorComponent, } from './image-collector.component'; import { ImageCollectorImageInterface, } from './../../models/index'; const initImageCollectorComponent = () => new ImageCollectorComponent(); describe('uploadImageFile', () => { test('Emits to the onImageFileUpload emitter', () => { const mockFileData = [{}] as File[]; const imageCollectorComponent = initImageCollectorComponent(); imageCollectorComponent.onImageFileUpload.emit = jest.fn(); imageCollectorComponent.uploadImageFile(mockFileData); expect(imageCollectorComponent.onImageFileUpload.emit) .toHaveBeenCalledWith(mockFileData); }); }); describe('uploadInvalidFile', () => { test('Emits to the onImageFileUpload emitter', () => { const mockFileData = [{}] as File[]; const imageCollectorComponent = initImageCollectorComponent(); imageCollectorComponent.onUploadInvalidFile.emit = jest.fn(); imageCollectorComponent.uploadInvalidFile(mockFileData); expect(imageCollectorComponent.onUploadInvalidFile.emit) .toHaveBeenCalledWith(mockFileData); }); }); describe('dragImage', () => { test('Emits to the onImageDrag emitter', () => { const mockImageData = {} as ImageCollectorImageInterface; const imageCollectorComponent = initImageCollectorComponent(); imageCollectorComponent.onImageDrag.emit = jest.fn(); imageCollectorComponent.dragImage(mockImageData); expect(imageCollectorComponent.onImageDrag.emit) .toHaveBeenCalledWith(mockImageData); }); }); describe('clickSelectImage', () => { // tslint:disable-next-line test('Does not emit to the onImageClick emitter, if the image is not uploaded', () => { const mockImageData = { isUploadComplete: false, } as ImageCollectorImageInterface; const imageCollectorComponent = initImageCollectorComponent(); imageCollectorComponent.onImageClick.emit = jest.fn(); imageCollectorComponent.clickSelectImage(mockImageData); expect(imageCollectorComponent.onImageClick.emit) .not.toHaveBeenCalled(); }); test('Emits to the onImageClick emitter, if the image is uploaded', () => { const mockImageData = { isUploadComplete: true, } as ImageCollectorImageInterface; const imageCollectorComponent = initImageCollectorComponent(); imageCollectorComponent.onImageClick.emit = jest.fn(); imageCollectorComponent.clickSelectImage(mockImageData); expect(imageCollectorComponent.onImageClick.emit) .toHaveBeenCalledWith(mockImageData); }); }); describe('trackByImageId', () => { test('Returns the id of the image', () => { const imageCollectorComponent = initImageCollectorComponent(); const imageCollectorImage = { id: 'test213', } as ImageCollectorImageInterface; const result = imageCollectorComponent.trackByImageId(imageCollectorImage); expect(result).toBe('test213'); }); }); describe('isSelected', () => { // tslint:disable-next-line test('Returns true if the selectedImage has the same id as the image', () => { const imageCollectorComponent = initImageCollectorComponent(); imageCollectorComponent.selectedImageId = 'testId'; const isSelected = imageCollectorComponent.isSelected({ id: 'testId', } as ImageCollectorImageInterface); expect(isSelected).toBe(true); }); // tslint:disable-next-line test('Returns false if the selectedImage has a different id to the image', () => { const imageCollectorComponent = initImageCollectorComponent(); imageCollectorComponent.selectedImageId = 'testId'; const isSelected = imageCollectorComponent.isSelected({ id: 'otherId', } as ImageCollectorImageInterface); expect(isSelected).toBe(false); }); test('Returns false if the selectedImageId is not defined', () => { const imageCollectorComponent = initImageCollectorComponent(); imageCollectorComponent.selectedImageId = undefined; const isSelected = imageCollectorComponent.isSelected({ id: 'someId', } as ImageCollectorImageInterface); expect(isSelected).toBe(false); }); }); describe('shouldAllowHoverEffect', () => { // tslint:disable-next-line test('Returns true if imageCollectorImage.isUploadComplete is true and the image collector image is not selected', () => { const imageCollectorComponent = initImageCollectorComponent(); imageCollectorComponent.isSelected = jest.fn().mockReturnValue(false); const result = imageCollectorComponent.shouldAllowHoverEffect({ isUploadComplete: true, } as ImageCollectorImageInterface); expect(result).toBe(true); }); // tslint:disable-next-line test('Returns false if imageCollectorImage.isUploadComplete is true but the image collector image is selected', () => { const imageCollectorComponent = initImageCollectorComponent(); imageCollectorComponent.isSelected = jest.fn().mockReturnValue(true); const result = imageCollectorComponent.shouldAllowHoverEffect({ isUploadComplete: true, } as ImageCollectorImageInterface); expect(result).toBe(false); }); // tslint:disable-next-line test('Returns false if imageCollectorImage.isUploadComplete is false', () => { const imageCollectorComponent = initImageCollectorComponent(); imageCollectorComponent.isSelected = jest.fn().mockReturnValue(false); const result = imageCollectorComponent.shouldAllowHoverEffect({ isUploadComplete: false, } as ImageCollectorImageInterface); expect(result).toBe(false); }); // tslint:disable-next-line test('Calls isSelected with the imageCollector sent as an argument', () => { const imageCollectorImage = { isUploadComplete: true, } as ImageCollectorImageInterface; const imageCollectorComponent = initImageCollectorComponent(); imageCollectorComponent.isSelected = jest.fn().mockReturnValue(false); imageCollectorComponent.shouldAllowHoverEffect( imageCollectorImage, ); expect(imageCollectorComponent.isSelected).toHaveBeenCalledWith( imageCollectorImage, ); }); });