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