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 init_console_error: any beforeEach(() => { // @ts-ignore apiRequestService = vi.fn() as ApiRequestService imageManager = new ImageManager(apiRequestService) // Important : Restore console error after mocking init_console_error = console.error }) afterEach(() => { vi.restoreAllMocks() console.error = init_console_error }) 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,}/) }) })