import { describe, test, it, expect } from 'vitest' import ApiRequestService from '~/services/data/apiRequestService' import ImageManager from '~/services/data/imageManager' import 'blob-polyfill' let apiRequestService: ApiRequestService let imageManager: ImageManager let initConsoleError: any beforeEach(() => { // @ts-ignore apiRequestService = vi.fn() as ApiRequestService imageManager = new ImageManager(apiRequestService) // Important : Restore console error after mocking initConsoleError = console.error }) afterEach(() => { vi.restoreAllMocks() console.error = initConsoleError }) describe('get', () => { test('simple call', async () => { const data = 'azerty' // @ts-ignore apiRequestService.get = vi.fn((url: string) => data) // @ts-ignore imageManager.getCacheKey = vi.fn(() => '123456') // @ts-ignore imageManager.toBase64 = vi.fn((data: string) => 'base64:' + data) const result = await imageManager.get(1) expect(apiRequestService.get).toHaveBeenCalledWith('api/download/1', [ '123456', ]) expect(result).toEqual('base64:azerty') }) test('no id, no default image provided', async () => { expect(await imageManager.get(null)).toEqual(ImageManager.defaultImage) }) test('no id, default image provided', async () => { const defaultImage = 'a_picture.jpg' expect(await imageManager.get(null, defaultImage)).toEqual(defaultImage) }) test('no response, no default image', async () => { // @ts-ignore apiRequestService.get = vi.fn((url: string) => '') // @ts-ignore imageManager.getCacheKey = vi.fn(() => '123456') // @ts-ignore imageManager.toBase64 = vi.fn() console.error = vi.fn() const result = await imageManager.get(1) expect(apiRequestService.get).toHaveBeenCalledWith('api/download/1', [ '123456', ]) expect(console.error).toHaveBeenCalledWith( 'Error: image 1 not found or invalid', ) // @ts-ignore expect(imageManager.toBase64).toHaveBeenCalledTimes(0) expect(result).toEqual(ImageManager.defaultImage) }) test('no response, default image', async () => { // @ts-ignore apiRequestService.get = vi.fn((url: string) => '') // @ts-ignore imageManager.getCacheKey = vi.fn(() => '123456') // @ts-ignore imageManager.toBase64 = vi.fn() console.error = vi.fn() const result = await imageManager.get(1, 'some_default.jpg') expect(apiRequestService.get).toHaveBeenCalledWith('api/download/1', [ '123456', ]) expect(console.error).toHaveBeenCalledWith( 'Error: image 1 not found or invalid', ) // @ts-ignore expect(imageManager.toBase64).toHaveBeenCalledTimes(0) expect(result).toEqual('some_default.jpg') }) }) describe('toBase64', () => { test('simple call', async () => { // @ts-ignore expect(await imageManager.toBase64('some_data')).toEqual( 'data:image/jpeg;base64,c29tZV9kYXRh', ) }) }) describe('getCacheKey', () => { test('simple call', () => { // @ts-ignore expect(imageManager.getCacheKey()).toMatch(/\d{10,}/) }) })