import { fireEvent, render, screen } from '@testing-library/react';
import { type Mock, describe, expect, it, vi } from 'vitest';
import { DepositAmountInput } from './DepositAmountInput';
import { useEarnContext } from './EarnProvider';
vi.mock('./EarnProvider', () => ({
useEarnContext: vi.fn(),
}));
describe('DepositAmountInput', () => {
it('renders the EarnAmountInput with the correct props', () => {
const mocksetDepositAmount = vi.fn();
(useEarnContext as Mock).mockReturnValue({
depositAmount: '100',
setDepositAmount: mocksetDepositAmount,
});
render();
const input = screen.getByPlaceholderText('0.0');
expect(input).toBeInTheDocument();
expect(input).toHaveValue('100');
expect(input).toHaveClass('custom-class');
});
it('updates the value when onChange is called', () => {
const mocksetDepositAmount = vi.fn();
(useEarnContext as Mock).mockReturnValue({
depositAmount: '100',
setDepositAmount: mocksetDepositAmount,
});
render();
const input = screen.getByPlaceholderText('0.0');
fireEvent.change(input, { target: { value: '200' } });
expect(mocksetDepositAmount).toHaveBeenCalledWith('200');
});
});