co.edu.uniandes.csw.bookstore.selenium.EditorialIT.java Source code

Java tutorial

Introduction

Here is the source code for co.edu.uniandes.csw.bookstore.selenium.EditorialIT.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package co.edu.uniandes.csw.bookstore.selenium;

import co.edu.uniandes.csw.bookstore.adapters.DateAdapter;
import co.edu.uniandes.csw.bookstore.converters.EditorialConverter;
import co.edu.uniandes.csw.bookstore.dtos.EditorialDTO;
import co.edu.uniandes.csw.bookstore.mappers.EJBExceptionMapper;
import co.edu.uniandes.csw.bookstore.providers.CreatedFilter;
import co.edu.uniandes.csw.bookstore.resources.EditorialResource;
import co.edu.uniandes.csw.bookstore.selenium.pages.EditorialPage;
import java.io.File;
import java.net.URL;
import java.util.List;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.drone.api.annotation.Drone;
import static org.jboss.arquillian.graphene.Graphene.waitGui;
import org.jboss.arquillian.graphene.page.InitialPage;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.arquillian.junit.InSequence;
import org.jboss.arquillian.test.api.ArquillianResource;
import org.jboss.shrinkwrap.api.GenericArchive;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.importer.ExplodedImporter;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.jboss.shrinkwrap.resolver.api.maven.Maven;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import uk.co.jemos.podam.api.PodamFactory;
import uk.co.jemos.podam.api.PodamFactoryImpl;

@RunWith(Arquillian.class)
public class EditorialIT {

    @Deployment(testable = false)
    public static WebArchive createDeployment() {
        return ShrinkWrap.create(WebArchive.class)
                // Se agrega la dependencia a la logica con el nombre groupid:artefactid:version (GAV)
                .addAsLibraries(
                        Maven.resolver().resolve("co.edu.uniandes.csw.bookstore:bookstore-logic:1.0-SNAPSHOT")
                                .withTransitivity().asFile())
                // Se agregan los compilados de los paquetes de servicios
                .addPackage(EditorialResource.class.getPackage()).addPackage(EditorialDTO.class.getPackage())
                .addPackage(EditorialConverter.class.getPackage()).addPackage(EJBExceptionMapper.class.getPackage())
                .addPackage(DateAdapter.class.getPackage()).addPackage(CreatedFilter.class.getPackage())
                // El archivo que contiene la configuracion a la base de datos.
                .addAsResource("META-INF/persistence.xml", "META-INF/persistence.xml")
                // El archivo beans.xml es necesario para injeccion de dependencias.
                .addAsWebInfResource(new File("src/main/webapp/WEB-INF/beans.xml"))
                // El archivo web.xml es necesario para el despliegue de los servlets
                .setWebXML(new File("src/main/webapp/WEB-INF/web.xml"))
                .merge(ShrinkWrap.create(GenericArchive.class).as(ExplodedImporter.class)
                        .importDirectory("src/main/webapp").as(GenericArchive.class), "/");
    }

    @Drone
    private WebDriver browser;

    @ArquillianResource
    private URL deploymentURL;

    private static PodamFactory factory = new PodamFactoryImpl();

    @Before
    public void loadPage() throws InterruptedException {
        browser.get(deploymentURL.toExternalForm());
        Thread.sleep(5000);
    }

    @Test
    @InSequence(1)
    public void createEditorial(@InitialPage EditorialPage editorialPage) {
        EditorialDTO editorial = factory.manufacturePojo(EditorialDTO.class);
        editorialPage.createEditorial(editorial);
        WebElement name1 = browser.findElement(By.id("0-name"));
        Assert.assertTrue(name1.isDisplayed());
        Assert.assertEquals(editorial.getName(), name1.getText());
    }

    @Test
    @InSequence(2)
    public void editFirstEditorial(@InitialPage EditorialPage editorialPage) {
        EditorialDTO editorial = factory.manufacturePojo(EditorialDTO.class);
        editorialPage.editFirstEditorial(editorial);
        WebElement name1 = browser.findElement(By.id("0-name"));
        Assert.assertTrue(name1.isDisplayed());
        Assert.assertEquals(editorial.getName(), name1.getText());
    }

    @Test
    @InSequence(3)
    public void deleteFirstEditorial(@InitialPage EditorialPage editorialPage) {
        By rowCssSelector = By.cssSelector("tbody>tr");
        List<WebElement> editorials = browser.findElements(rowCssSelector);
        Assert.assertEquals(1, editorials.size());
        editorialPage.deleteFirstEditorial();
        editorials = browser.findElements(rowCssSelector);

        Assert.assertTrue(editorials.isEmpty());
    }
}