package com.nuevaeps.webapp.test;


import static org.junit.Assert.assertEquals;

import java.util.ArrayList;

import org.junit.Test;

import com.nuevaeps.webapp.bc.LoginBC;
import com.nuevaeps.webapp.ral.LoginRAL;
import com.nuevaeps.webapp.ral.dto.LoginDTO;
import com.nuevaeps.webapp.utils.Configuracion;
import com.nuevaeps.webapp.utils.PATH;

/**
 * <pre>
 * Fecha      Autor     
  * 22-12-2021 Dilan Steven Mejia	
 * </pre>
 * 
 * Ejecuta los casos de prueba del login.
 * 
 * @author Dilan Steven Mejia
 * @version 1.0
 * @category Test
 * **/

public class LoginTest {

	ArrayList<LoginDTO> loginDataPool = new ArrayList<LoginDTO>();

	//Ingresa la configuracion del navegador,la url, y la ruta del archivo de la data
	public void setup(){
		Configuracion.iniciarConfiguracion();
		this.loginDataPool = LoginRAL.obtenerDatosLogin(PATH.DATA_POOL);
	}

	/**
	 * <pre>
	 * Fecha      Autor     
	 * 22-12-2021 Dilan Steven Mejia	
	 * </pre>
	 * 
	 * Ejecuta el caso de prueba con las credenciales de un usuario incorrectas.
	 * 
	 * @author Dilan Steven Mejia
	 * 
	 * **/
	//@Test
	public void realizarLoginUsuarioInvalido() {
		setup();
		/*Enviar cada objeto que contiene el escenario*/
		LoginDTO login = new LoginDTO();
		login.setTipoDocumento("0");
		login.setTipoUsuario("1");
		login.setNumeroDocumento("12345");
		login.setContrasena("123456");
		
		assertEquals(LoginBC.realizarLogin(login).getMensajePantalla(),"Usuario o clave incorrecto");
	}

	/**
	 * <pre>
	 * Fecha      Autor     
	  * 22-12-2021 Dilan Steven Mejia	
	 * </pre>
	 * 
	 * Ejecuta el caso de prueba con un usuario correcto y una contraseña incorrecta.
	 * 
	 * @author Dilan Steven Mejia
	 * 
	 * **/
	//@Test
	public void realizarLoginContrasenaInvalida() {
		/*Enviar cada objeto que contiene el escenario*/
		setup();
		LoginDTO login = new LoginDTO();
		login.setTipoDocumento("0");
		login.setTipoUsuario("1");
		login.setNumeroDocumento("21078447");
		login.setContrasena("0000");
		
		assertEquals(LoginBC.realizarLogin(login).getMensajePantalla(),"Usuario o clave incorrecto");
	}

	/**
	 * <pre>
	 * Fecha      Autor     
	 * 22-12-2021 Dilan Steven Mejia	
	 * </pre>
	 * 
	 * Ejecuta el caso de prueba con un usuario correcto y  contraseña correcta.
	 * 
	 * @author Dilan Steven Mejia
	 * 
	 * **/
	@Test
	public void realizarLoginUsuarioValido() {
		setup();		
		for (LoginDTO login : loginDataPool) {
		/*Enviar cada objeto que contiene el escenario*/
		assertEquals(LoginBC.realizarLogin(login).getMensajePantalla(),"En qué podemos ayudarte!!");
		}
	}

	//Se cierran las sesiones del driver.

	public static void stopAllDrivers() {
		Configuracion.driver.quit();
	}

}
