es.udc.tfg_es.clubtriatlon.test.web.AdminPlanningWebTest.java Source code

Java tutorial

Introduction

Here is the source code for es.udc.tfg_es.clubtriatlon.test.web.AdminPlanningWebTest.java

Source

package es.udc.tfg_es.clubtriatlon.test.web;

/* ClubTriatlon: a web app to management of administrative work of a triathlon club
 Copyright (C) 2015 Alejandro Mikitinskis
    
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation; either version 3 of the License, or
 (at your option) any later version.
    
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
    
 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software Foundation,
 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
    
 Contact here: alejandro.mikitinskis@udc.es */

import static es.udc.tfg_es.clubtriatlon.utils.GlobalNames.SPRING_CONFIG_FILE;
import static es.udc.tfg_es.clubtriatlon.test.util.GlobalNames.SPRING_CONFIG_TEST_FILE;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;

import es.udc.tfg_es.clubtriatlon.test.util.SeleniumMethods;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { SPRING_CONFIG_FILE, SPRING_CONFIG_TEST_FILE })
@Transactional
public class AdminPlanningWebTest {

    @Test
    public void testTrainingsManagementView() {

        WebDriver driver = SeleniumMethods.auntenticateAdmin();
        // Access to Planning Weekly view
        driver.findElement(By.id("menuOptions")).findElement(By.id("planningWeekly")).click();
        driver.getCurrentUrl();
        // Access to Trainings Management view
        WebElement trainingsManagementLink = driver.findElement(By.id("trainingsManagement"));
        assertEquals(trainingsManagementLink.getText(), "Gestin de entrenamientos");
        trainingsManagementLink.click();
        assertEquals(driver.getCurrentUrl(),
                "http://localhost:9090/triatlon/admin/plannings/trainingsmanagement/0");
        assertEquals(driver.findElement(By.id("menuInfo")).findElement(By.id("menuExplanation")).getText(),
                "- Tipos de entrenamiento");

        SeleniumMethods.logout(driver);
        driver.quit();

    }

    @Test
    public void testNewWeeklyPlanningView() {

        WebDriver driver = SeleniumMethods.auntenticateAdmin();
        // Access to planningweekly view
        driver.findElement(By.id("menuOptions")).findElement(By.id("planningWeekly")).click();
        driver.getCurrentUrl();
        // Access to New Weekly Planning view
        WebElement newWeeklyPlanningLink = driver.findElement(By.id("newWeeklyPlanning"));
        assertEquals(newWeeklyPlanningLink.getText(), "+ Nuevo plan semanal");
        newWeeklyPlanningLink.click();
        assertEquals(driver.getCurrentUrl(), "http://localhost:9090/triatlon/admin/plannings/newweeklyplanning");
        //In the page, initially we must see all active trainings with no assigned plannings
        String tableText = driver.findElement(By.cssSelector("table.grid")).getText();
        assertTrue(tableText.contains("training1"));
        assertTrue(tableText.contains("training2"));
        assertTrue(tableText.contains("Triatln base"));
        assertTrue(tableText.contains("Carrera base"));

        SeleniumMethods.logout(driver);
        driver.quit();

    }

    /*   @Test
       public void testCreateNewWeeklyPlanning() {
              
          WebDriver driver = SeleniumMethods.auntenticateAdmin();
          // Access to planningweekly view
          driver.findElement(By.id("menuOptions")).findElement(By.id("planningWeekly")).click();
          driver.getCurrentUrl();
          // Access to New Weekly Planning view
          WebElement newWeeklyPlanningLink = driver.findElement(By.id("newWeeklyPlanning"));
          assertEquals(newWeeklyPlanningLink.getText(), "+ Nuevo plan semanal");
          newWeeklyPlanningLink.click();
          driver.getCurrentUrl();
          //Write name of week
          driver.findElement(By.id("weeklyPlaningName")).sendKeys("9");
          //TODO
           * 1.- Seleccionar un plan en nuestro equipo.
           * 2.- Pulsar 'Publicar plan' en una celda.
           * 3.- Comprobar que 'Fecha de envo' en esa celda es la fecha en la que se hizo la
           *     accin (es decir, la actual en este caso).
           * 4.- Volver a la pgina anterior y ver que se cre el plan semanal con el nombre '2015 - s.09'
              
          driver.findElement(By.id("weeklyPlaningName")).sendKeys("9");
          assertEquals(driver.getCurrentUrl(),
        "http://localhost:9090/triatlon/admin/plannings/newweeklyplanning");
              
          SeleniumMethods.logout(driver);
          driver.quit();
              
       }*/

    @Test
    public void testWeeklyPlanningDetailsView() {

        WebDriver driver = SeleniumMethods.auntenticateAdmin();
        // Access to planningweekly view
        driver.findElement(By.id("menuOptions")).findElement(By.id("planningWeekly")).click();
        driver.getCurrentUrl();
        // Access to Weekly Planning Details view
        driver.findElement(By.id("weeksList")).findElement(By.linkText("2015 - s.7")).click();
        assertEquals(driver.getCurrentUrl(),
                "http://localhost:9090/triatlon/admin/plannings/weeklyplanningdetails/7");
        assertEquals(driver.findElement(By.id("menuInfo")).findElement(By.id("menuExplanation")).getText(),
                "- Detalles del plan");

        SeleniumMethods.logout(driver);
        driver.quit();

    }

    @Test
    public void testWeeklyPlanningDetailsList() {

        WebDriver driver = SeleniumMethods.auntenticateAdmin();
        driver.findElement(By.id("menuOptions")).findElement(By.id("planningWeekly")).click();
        driver.getCurrentUrl();
        driver.findElement(By.id("weeksList")).findElement(By.linkText("2015 - s.7")).click();
        driver.getCurrentUrl();
        String tableText = driver.findElement(By.cssSelector("table.grid")).getText();
        assertTrue(tableText.contains("training1"));
        assertTrue(tableText.contains("training2"));
        assertTrue(tableText.contains("training3"));
        SeleniumMethods.logout(driver);
        driver.quit();

    }

    @Test
    public void testPlanningWeeklyNextPrevLinks() {

        WebDriver driver = SeleniumMethods.auntenticateAdmin();
        driver.findElement(By.id("menuOptions")).findElement(By.id("planningWeekly")).click();
        driver.getCurrentUrl();

        // Click "-->" link
        driver.findElement(By.id("weeksList")).findElement(By.id("nextLink")).click();
        assertNotNull(driver.findElement(By.id("weeksList")).findElement(By.partialLinkText("2015 - s.2")));
        assertNotNull(driver.findElement(By.id("weeksList")).findElement(By.partialLinkText("2015 - s.1")));

        //Selenium no detecta previousLink porque es por ajax?
        //      driver.getCurrentUrl();
        // Click "<--" link
        //      driver.findElement(By.id("weeksList")).
        //            findElement(By.id("previousLink")).click();
        //      assertNotNull(driver.findElement(By.id("weeksList")).findElement(
        //            By.partialLinkText("2015 - s.7")));

        SeleniumMethods.logout(driver);
        driver.quit();

    }

}