import { PassFromBase64ToImage, Base64ToImage } from './base-64-to-image' const makeSut = (): Base64ToImage => { return new PassFromBase64ToImage() } const makeBase64 = (): string => { return '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' } const makeBase64WithHeader = (): string => { return String('data:image/png;base64,').concat(makeBase64()) } describe('Base64ToImage', () => { test('Should throws if a string is not a base64', async () => { const sut = makeSut() const promise = sut.toImage('', { path: './', fileExtension: 'jpg', fileName: 'any_name' }) await expect(promise).rejects.toThrow() }) test('Should save image with header in base64', async () => { const sut = makeSut() const promise = sut.toImage(makeBase64WithHeader(), { path: './', fileExtension: 'jpg' }) await expect(promise).toBeTruthy() }) test('Should save image without header in base64', async () => { const sut = makeSut() const promise = sut.toImage(makeBase64(), { path: './', fileExtension: 'jpg' }) await expect(promise).toBeTruthy() }) test('Should save image with a random name if a name is not provided', async () => { const sut = makeSut() const promise = sut.toImage(makeBase64(), { path: './', fileExtension: 'jpg' }) await expect(promise).toBeTruthy() }) test('Should save image with a name provided', async () => { const sut = makeSut() const promise = sut.toImage(makeBase64(), { path: './', fileExtension: 'jpg', fileName: 'any_name' }) await expect(promise).toBeTruthy() }) test('Should save image with a extension provided', async () => { const sut = makeSut() const promise = sut.toImage(makeBase64(), { path: './', fileExtension: 'jpeg', fileName: 'any_name_with_extension' }) await expect(promise).toBeTruthy() }) test('Should save image with a default extension if is not provided', async () => { const sut = makeSut() const promise = sut.toImage(makeBase64(), { path: './', fileName: 'any_name_without_extension' }) await expect(promise).toBeTruthy() }) test('Should save image with a default extension if is not provided', async () => { const sut = makeSut() const promise = sut.toImage('asdjkasdjhajd', { path: './', fileName: 'not_a_base64' }) await expect(promise).toBeTruthy() }) })