import React from 'react';
import '@testing-library/jest-dom/extend-expect';
import renderWithProviders from '../utlities/renderWithProviders';
import Login from '../components/login';
import { getByTestId, getByAltText } from '@testing-library/react';

// These tests ensure all elements are rendering on login

describe('login screen and registration screens', () => {
  test('renders the title on login', () => {
    const { getByText } = renderWithProviders(<Login />);
    const title = getByText(/LogIn to your Store/i);
    expect(title).toBeVisible();
  });
  test('renders logo', () => {
    const { getByTestId } = renderWithProviders(<Login />);
    expect(getByTestId('loginLogo')).toBeVisible();
  });
  test('renders phone number input', () => {
    const { getByTestId } = renderWithProviders(<Login />);
    expect(getByTestId('phoneNumberInput')).toBeVisible();
  });
  test('renders password input', () => {
    const { getByTestId } = renderWithProviders(<Login />);
    expect(getByTestId('loginPasswordInput')).toBeVisible();
  });
  test('renders forgot password link', () => {
    const { getByText } = renderWithProviders(<Login />);
    expect(getByText(/forgot password/i)).toBeVisible();
  });
  test('renders login button', () => {
    const { getByTestId } = renderWithProviders(<Login />);
    expect(getByTestId('loginButton')).toBeVisible();
  });
  test('renders create store button', () => {
    const { getByTestId } = renderWithProviders(<Login />);
    expect(getByTestId('createStoreButton')).toBeVisible();
  });
  test('renders main login image', () => {
    const { getByAltText } = renderWithProviders(<Login />);
    expect(getByAltText(/login/i)).toBeVisible();
  });
  test('renders colorful image background', () => {
    const { getByTestId } = renderWithProviders(<Login />);
    expect(getByTestId('imageBackground')).toBeVisible();
  });
  test('renders phone / password background div', () => {
    const { getByTestId } = renderWithProviders(<Login />);
    expect(getByTestId('loginFormWrapper')).toBeVisible();
  });
  
});