/** * Tests for API Toast Helper Utility * FE-TEST-004: Test API toast helper utility functions */ import { describe, it, expect, vi, beforeEach } from 'vitest'; import { InternalAxiosRequestConfig } from 'axios'; import { withSuccessToast, withoutErrorToast, showSuccessToast, showErrorToast, showInfoToast, showWarningToast, } from './apiToastHelper'; // Mock react-hot-toast vi.mock('react-hot-toast', () => ({ default: { success: vi.fn(), error: vi.fn(), loading: vi.fn(), }, })); import toast from 'react-hot-toast'; describe('apiToastHelper utilities', () => { beforeEach(() => { vi.clearAllMocks(); }); describe('withSuccessToast', () => { it('should add success toast flag to config', () => { const config: InternalAxiosRequestConfig = { url: '/api/test', method: 'get', }; const result = withSuccessToast(config); expect((result as any)._showSuccessToast).toBe(true); }); it('should add custom success message', () => { const config: InternalAxiosRequestConfig = { url: '/api/test', method: 'get', }; const result = withSuccessToast(config, 'Custom success'); expect((result as any)._successMessage).toBe('Custom success'); }); }); describe('withoutErrorToast', () => { it('should add disable toast flag to config', () => { const config: InternalAxiosRequestConfig = { url: '/api/test', method: 'get', }; const result = withoutErrorToast(config); expect((result as any)._disableToast).toBe(true); }); }); describe('showSuccessToast', () => { it('should call toast.success', () => { showSuccessToast('Success message'); expect(toast.success).toHaveBeenCalledWith('Success message', { duration: undefined, }); }); it('should call toast.success with duration', () => { showSuccessToast('Success message', 5000); expect(toast.success).toHaveBeenCalledWith('Success message', { duration: 5000, }); }); }); describe('showErrorToast', () => { it('should call toast.error', () => { showErrorToast('Error message'); expect(toast.error).toHaveBeenCalledWith('Error message', { duration: undefined, }); }); it('should call toast.error with duration', () => { showErrorToast('Error message', 5000); expect(toast.error).toHaveBeenCalledWith('Error message', { duration: 5000, }); }); }); describe('showInfoToast', () => { it('should call toast with info icon', () => { showInfoToast('Info message'); expect(toast).toHaveBeenCalledWith('Info message', { duration: undefined, icon: 'ℹ️', }); }); }); describe('showWarningToast', () => { it('should call toast with warning icon', () => { showWarningToast('Warning message'); expect(toast).toHaveBeenCalledWith('Warning message', { duration: undefined, icon: '⚠️', }); }); }); });