115 lines
3 KiB
TypeScript
115 lines
3 KiB
TypeScript
/**
|
||
* 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: '⚠️',
|
||
});
|
||
});
|
||
});
|
||
});
|