package org.javaee7.jaxrs.angularjs; import com.example.domain.Note; import com.example.rest.NoteApp; import com.example.rest.NoteResource; import com.example.rest.NoteResourceImpl; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.container.test.api.RunAsClient; import org.jboss.arquillian.drone.api.annotation.Drone; import org.jboss.arquillian.graphene.GrapheneRuntime; import org.jboss.arquillian.junit.Arquillian; import org.jboss.arquillian.junit.InSequence; import org.jboss.arquillian.persistence.Cleanup; import org.jboss.arquillian.persistence.TestExecutionPhase; import org.jboss.arquillian.persistence.UsingDataSet; import org.jboss.arquillian.test.api.ArquillianResource; import org.jboss.shrinkwrap.api.Archive; 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.Test; import org.junit.runner.RunWith; import org.openqa.selenium.WebDriver; import java.io.File; import java.net.URL; import static org.junit.Assert.assertEquals; @Cleanup(phase = TestExecutionPhase.BEFORE) @UsingDataSet @RunWith(Arquillian.class) public class NoteResourceImplTest { @Deployment public static Archive createDeployment() { final GenericArchive webResources = ShrinkWrap.create(GenericArchive.class) .as(ExplodedImporter.class) .importDirectory("src/main/webapp") .as(GenericArchive.class); final File[] seleniumApi = Maven.resolver() .loadPomFromFile("pom.xml") .resolve("org.seleniumhq.selenium:selenium-api:2.35.0") .withTransitivity() .asFile(); return ShrinkWrap.create(WebArchive.class, NoteResourceImplTest.class.getSimpleName() + ".war") .addClasses(Note.class, NoteApp.class, NoteResource.class, NoteResourceImpl.class) .addAsResource("META-INF/persistence.xml") .addAsLibraries(seleniumApi) .merge(webResources); } /** * See https://issues.jboss.org/browse/ARQ-1077 */ @Test @InSequence(1) public void setupDB_ARQ1077_Workaround() { } @Test @InSequence(3) public void setupDB_ARQ1077_Workaround_2() { } @Test @InSequence(5) public void setupDB_ARQ1077_Workaround_3() { } @InSequence(4) @RunAsClient @Test public void addNewNote(@ArquillianResource URL deploymentURL, @Drone WebDriver driver) throws Exception { // Given driver.navigate().to(deploymentURL); final TodoPage page = GrapheneRuntime.getInstance().goTo(TodoPage.class); assertEquals(3, page.getTodos().size()); // When page.addNote(); page.typeTitle("New title"); page.typeSummary("New summary"); page.save(); // Then assertEquals(4, page.getTodos().size()); assertEquals("New title", page.getTodos().get(3).getTitle()); assertEquals("New summary", page.getTodos().get(3).getSummary()); } @InSequence(2) @RunAsClient @Test public void onenterContainsNotesFromDB(@ArquillianResource URL deploymentURL, @Drone WebDriver driver) { // Given // When driver.navigate().to(deploymentURL); final TodoPage page = GrapheneRuntime.getInstance().goTo(TodoPage.class); // Then assertEquals(3, page.getTodos().size()); assertEquals("Note A", page.getTodos().get(0).getTitle()); assertEquals("Note B", page.getTodos().get(1).getTitle()); assertEquals("Note C", page.getTodos().get(2).getTitle()); } @InSequence(6) @RunAsClient @Test public void removeNote(@ArquillianResource URL deploymentURL, @Drone WebDriver driver) throws Exception { // Given driver.navigate().to(deploymentURL); final TodoPage page = GrapheneRuntime.getInstance().goTo(TodoPage.class); assertEquals(3, page.getTodos().size()); // When page.getTodos().get(0).remove(); // Then assertEquals("Note B", page.getTodos().get(0).getTitle()); assertEquals("Note C", page.getTodos().get(1).getTitle()); } }