diff --git a/src/test/java/com/uniovi/sdi/Sdi2122713SpringApplicationTests.java b/src/test/java/com/uniovi/sdi/Sdi2122713SpringApplicationTests.java index 2293c58..1458b5c 100644 --- a/src/test/java/com/uniovi/sdi/Sdi2122713SpringApplicationTests.java +++ b/src/test/java/com/uniovi/sdi/Sdi2122713SpringApplicationTests.java @@ -1,8 +1,10 @@ package com.uniovi.sdi; import com.uniovi.sdi.pageobjects.*; +import com.uniovi.sdi.util.SeleniumUtils; import org.junit.jupiter.api.*; import org.junit.jupiter.api.Test; +import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; @@ -308,4 +310,118 @@ public void PR11() { Assertions.assertEquals(checkText, result.get(0).getText()); } + + //PR12. Loguearse, comprobar que se visualizan 4 filas de notas y desconectarse usando el rol de estudiante + @Test + @Order(20) + public void PR12() { + //Vamos al formulario de logueo. + PO_HomeView.clickOption(driver, "login", "class", "btn btn-primary"); + //Rellenamos el formulario + PO_LoginView.fillLoginForm(driver, "99999990A", "123456"); + //COmprobamos que entramos en la pagina privada de Alumno + String checkText = "Notas del usuario"; + List result = PO_View.checkElementBy(driver, "text", checkText); + //Contamos el número de filas de notas + List markList = SeleniumUtils.waitLoadElementsBy(driver, "free", "//tbody/tr", + PO_View.getTimeout()); + Assertions.assertEquals(4, markList.size()); + //Ahora nos desconectamos y comprobamos que aparece el menú de registro + String loginText = PO_HomeView.getP().getString("signup.message", PO_Properties.getSPANISH()); + PO_PrivateView.clickOption(driver, "logout", "text", loginText); + + } + + //PR13. Loguearse como estudiante y ver los detalles de la nota con Descripcion = Nota A2. + @Test + @Order(21) + public void PR13() { + //Comprobamos que entramos en la pagina privada de Alumno + PO_HomeView.clickOption(driver, "login", "class", "btn btn-primary"); + PO_LoginView.fillLoginForm(driver, "99999990A", "123456"); + String checkText = "Notas del usuario"; + List result = PO_View.checkElementBy(driver, "text", checkText); + //SeleniumUtils.esperarSegundos(driver, 1); + //Contamos las notas + By enlace = By.xpath("//td[contains(text(), 'Nota A2')]/following-sibling::*[2]"); + driver.findElement(enlace).click(); + //Esperamos por la ventana de detalle + checkText = "Detalles de la nota"; + result = PO_View.checkElementBy(driver, "text", checkText); + Assertions.assertEquals(checkText, result.get(0).getText()); + //Ahora nos desconectamos comprobamas que aparece el menu de registrarse + String loginText = PO_HomeView.getP().getString("signup.message", PO_Properties.getSPANISH()); + PO_PrivateView.clickOption(driver, "logout", "text", loginText); + } + + //P14. Loguearse como profesor y Agregar Nota A2. + //P14. Esta prueba podría encapsularse mejor ... + @Test + @Order(22) + public void PR14() { + //Vamos al formulario de login. + PO_HomeView.clickOption(driver, "login", "class", "btn btn-primary"); + PO_LoginView.fillLoginForm(driver, "99999993D", "123456"); + //Cmmprobamos que entramos en la pagina privada del Profesor + PO_View.checkElementBy(driver, "text", "99999993D"); + //Pinchamos en la opción de menú de Notas: //li[contains(@id, 'marks-menu')]/a + List elements = PO_View.checkElementBy(driver, "free", "//li[contains(@id, 'marks-menu')]/a"); + elements.get(0).click(); + //Esperamos a que aparezca la opción de añadir nota: //a[contains(@href, 'mark/add')] + elements = PO_View.checkElementBy(driver, "free", "//a[contains(@href, 'mark/add')]"); + //Pinchamos en agregar Nota. + elements.get(0).click(); + + //Ahora vamos a rellenar la nota. //option[contains(@value, '4')] + String checkText = "Nota Nueva 1"; + PO_PrivateView.fillFormAddMark(driver, 3, checkText, "8"); + //Esperamos a que se muestren los enlaces de paginación de la lista de notas + elements = PO_View.checkElementBy(driver, "free", "//a[contains(@class, 'page-link')]"); + //Nos vamos a la última página + elements.get(3).click(); + //Comprobamos que aparece la nota en la página + elements = PO_View.checkElementBy(driver, "text", checkText); + Assertions.assertEquals(checkText, elements.get(0).getText()); + //Ahora nos desconectamos y comprobamos que aparece el menú de registrarse + String loginText = PO_HomeView.getP().getString("signup.message", PO_Properties.getSPANISH()); + PO_PrivateView.clickOption(driver, "logout", "text", loginText); + } + + + @Test + @Order(23) + public void PR15() { + //Vamos al formulario de logueo. + PO_HomeView.clickOption(driver, "login", "class", "btn btn-primary"); + PO_LoginView.fillLoginForm(driver, "99999993D", "123456"); + + //Comprobamos que entramos en la pagina privada del Profesor + PO_View.checkElementBy(driver, "text", "99999993D"); + //Pinchamos en la opción de menu de Notas: //li[contains(@id, 'marks-menu')]/a + List elements = PO_View.checkElementBy(driver, "free", "//li[contains(@id, 'marks-menu')]/a"); + elements.get(0).click(); + //Pinchamos en la opción de lista de notas. + elements = PO_View.checkElementBy(driver, "free", "//a[contains(@href, 'mark/list')]"); + elements.get(0).click(); + //Esperamos a que se muestren los enlaces de paginacion la lista de notas + elements = PO_View.checkElementBy(driver, "free", "//a[contains(@class, 'page-link')]"); + //Nos vamos a la última página + elements.get(3).click(); + + //Esperamos a que aparezca la Nueva nota en la ultima pagina + //Y Pinchamos en el enlace de borrado de la Nota "Nota Nueva 1" + elements = PO_View.checkElementBy(driver, "free", "//td[contains(text(), 'Nota Nueva 1')]/following-sibling::*/a[contains(@href, 'mark/delete')]"); + elements.get(0).click(); + //Volvemos a la última pagina + elements = PO_View.checkElementBy(driver, "free", "//a[contains(@class, 'page-link')]"); + elements.get(3).click(); + //Y esperamos a que NO aparezca la ultima "Nueva Nota 1" + SeleniumUtils.waitTextIsNotPresentOnPage(driver, "Nota Nueva 1",PO_View.getTimeout()); + + //Ahora nos desconectamos comprobamas que aparece el menu de registrarse + String loginText = PO_HomeView.getP().getString("signup.message", PO_Properties.getSPANISH()); + PO_PrivateView.clickOption(driver, "logout", "text", loginText); + } + + } diff --git a/src/test/java/com/uniovi/sdi/pageobjects/PO_PrivateView.java b/src/test/java/com/uniovi/sdi/pageobjects/PO_PrivateView.java new file mode 100644 index 0000000..68f0f54 --- /dev/null +++ b/src/test/java/com/uniovi/sdi/pageobjects/PO_PrivateView.java @@ -0,0 +1,27 @@ +package com.uniovi.sdi.pageobjects; + +import com.uniovi.sdi.util.SeleniumUtils; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.ui.Select; + +public class PO_PrivateView extends PO_NavView { + static public void fillFormAddMark(WebDriver driver, int userOrder, String descriptionp, String scorep) + { + //Esperamos 5 segundo a que carge el DOM porque en algunos equipos falla + SeleniumUtils.waitSeconds(driver, 5); + //Seleccionamos el alumnos userOrder + new Select(driver.findElement(By.id("user"))).selectByIndex(userOrder); + //Rellenemos el campo de descripción + WebElement description = driver.findElement(By.name("description")); + description.clear(); + description.sendKeys(descriptionp); + WebElement score = driver.findElement(By.name("score")); + score.click(); + score.clear(); + score.sendKeys(scorep); + By boton = By.className("btn"); + driver.findElement(boton).click(); + } +} \ No newline at end of file