From 46d4e1ce1f2e21ee3972b4b56f243bb2b9469751 Mon Sep 17 00:00:00 2001 From: Chesterkxng Date: Wed, 10 Dec 2025 17:01:26 +0100 Subject: [PATCH] tests: convert audio test cases --- .../audio-converter.service.test.ts | 59 ++++++++++++++----- 1 file changed, 45 insertions(+), 14 deletions(-) diff --git a/src/pages/tools/converters/audio-converter/audio-converter.service.test.ts b/src/pages/tools/converters/audio-converter/audio-converter.service.test.ts index ae4ae6e..9c23299 100644 --- a/src/pages/tools/converters/audio-converter/audio-converter.service.test.ts +++ b/src/pages/tools/converters/audio-converter/audio-converter.service.test.ts @@ -1,4 +1,6 @@ import { expect, describe, it, vi, beforeEach } from 'vitest'; +import { convertAudio } from './service'; +import { InitialValuesType } from './types'; // Mock FFmpeg since it doesn't support Node.js in tests vi.mock('@ffmpeg/ffmpeg', () => ({ @@ -16,8 +18,6 @@ vi.mock('@ffmpeg/util', () => ({ fetchFile: vi.fn().mockResolvedValue(new Uint8Array([10, 20, 30, 40, 50])) })); -import { convertAudio } from './service'; - describe('convertAudio', () => { let mockInputFile: File; @@ -29,17 +29,17 @@ describe('convertAudio', () => { }); it('should convert to MP3 format correctly', async () => { - const outputFormat = 'mp3' as const; - const result = await convertAudio(mockInputFile, outputFormat); + const options: InitialValuesType = { outputFormat: 'mp3' }; + const result = await convertAudio(mockInputFile, options); expect(result).toBeInstanceOf(File); - expect(result.name).toBe('input.mp3'); // base name + outputFormat extension + expect(result.name).toBe('input.mp3'); expect(result.type).toBe('audio/mpeg'); }); it('should convert to AAC format correctly', async () => { - const outputFormat = 'aac' as const; - const result = await convertAudio(mockInputFile, outputFormat); + const options: InitialValuesType = { outputFormat: 'aac' }; + const result = await convertAudio(mockInputFile, options); expect(result).toBeInstanceOf(File); expect(result.name).toBe('input.aac'); @@ -47,18 +47,49 @@ describe('convertAudio', () => { }); it('should convert to WAV format correctly', async () => { - const outputFormat = 'wav' as const; - const result = await convertAudio(mockInputFile, outputFormat); + const options: InitialValuesType = { outputFormat: 'wav' }; + const result = await convertAudio(mockInputFile, options); expect(result).toBeInstanceOf(File); expect(result.name).toBe('input.wav'); expect(result.type).toBe('audio/wav'); }); - it('should throw error for unsupported formats', async () => { - // @ts-expect-error - intentionally passing unsupported format - await expect(convertAudio(mockInputFile, 'flac')).rejects.toThrow( - 'Unsupported output format' - ); + it('should convert to FLAC format correctly', async () => { + const options: InitialValuesType = { outputFormat: 'flac' }; + const result = await convertAudio(mockInputFile, options); + + expect(result).toBeInstanceOf(File); + expect(result.name).toBe('input.flac'); + expect(result.type).toBe('audio/flac'); + }); + + it('should convert to OGG format correctly', async () => { + const options: InitialValuesType = { outputFormat: 'ogg' }; + const result = await convertAudio(mockInputFile, options); + + expect(result).toBeInstanceOf(File); + expect(result.name).toBe('input.ogg'); + expect(result.type).toBe('audio/ogg'); + }); + + it('should return original file if input format matches output format', async () => { + const options: InitialValuesType = { outputFormat: 'aac' }; + const result = await convertAudio(mockInputFile, options); + + expect(result).toBe(mockInputFile); // Same instance + expect(result.name).toBe('input.aac'); + }); + + it('should handle files without extensions', async () => { + const fileNoExt = new File([new Uint8Array([1, 2, 3])], 'audiofile', { + type: 'audio/aac' + }); + const options: InitialValuesType = { outputFormat: 'mp3' }; + const result = await convertAudio(fileNoExt, options); + + expect(result).toBeInstanceOf(File); + expect(result.name).toBe('audiofile.mp3'); + expect(result.type).toBe('audio/mpeg'); }); });