import { render, screen, fireEvent } from '@testing-library/react';

import { FeedbackWidget } from './FeedbackWidget';

describe('FeedbackWidget', () => {
  it('renders the floating button initially', () => {
    render(<FeedbackWidget />);
    expect(screen.getByLabelText('Send feedback')).toBeInTheDocument();
  });

  it('opens the form when the button is clicked', () => {
    render(<FeedbackWidget />);
    fireEvent.click(screen.getByLabelText('Send feedback'));
    expect(screen.getByText('Send Feedback')).toBeInTheDocument();
    expect(screen.getByPlaceholderText('Tell us what you think...')).toBeInTheDocument();
  });

  it('closes when close button is clicked', () => {
    render(<FeedbackWidget />);
    fireEvent.click(screen.getByLabelText('Send feedback'));
    expect(screen.getByText('Send Feedback')).toBeInTheDocument();

    fireEvent.click(screen.getByLabelText('Close feedback'));
    expect(screen.queryByText('Send Feedback')).not.toBeInTheDocument();
  });

  it('disables submit when message is empty', () => {
    render(<FeedbackWidget />);
    fireEvent.click(screen.getByLabelText('Send feedback'));
    const submitButton = screen.getByRole('button', { name: 'Send' });
    expect(submitButton).toBeDisabled();
  });
});
