import { Bucket } from '@google-cloud/storage'; import { compressAndResizeBucketImage } from './resize_image'; import { mockFiles } from '../../__mocks__/@google-cloud/storage'; import { buildFileURI } from './buckets'; jest.mock('@google-cloud/storage'); console.error = jest.fn(); console.log = jest.fn(); describe('compressAndResizeBucketImage', () => { it('does not resize image when path does not contain a toBeResized directory', async () => { const filePath = 'uploads/some-file-not-in-bucket'; const bucket = 'some-bucket'; const callback = jest.fn(); await compressAndResizeBucketImage({ bucket, name: filePath }, null, callback); expect(callback).toHaveBeenCalledWith(null, expect.any(String)); }); it('throws when file is not in bucket', async () => { const filePath = 'some-file-not-in-bucket'; const bucket = 'some-bucket'; try { await compressAndResizeBucketImage({ bucket, name: filePath }, null, () => null); } catch (e) { expect(((e as unknown) as Error).message).toEqual(`File ${filePath} doesn't exist in bucket ${bucket}`); } }); it("throws when file can't be downloaded from bucket", async () => { const filePath = mockFiles.undownloadableFile; const bucket = 'some-bucket'; try { await compressAndResizeBucketImage({ bucket, name: filePath }, null, () => null); } catch (e) { expect(((e as unknown) as Error).message).toEqual( `File ${buildFileURI({ bucket: ({ name: bucket } as unknown) as Bucket, filePath, })} download failed: Error`, ); } }); });