diff --git a/README.md b/README.md
index f90c5a3d342b21b223f815f3c3ed3678244bb18b..0c4d25e27291ec802a8fb0e0818257ea765d28aa 100644
--- a/README.md
+++ b/README.md
@@ -60,6 +60,9 @@ La aplicación se servirá en local:
Para detener la ejecución podemos utilizar `Ctrl+C`.
+*Nota*: si accedes a la URL del backend también verás la aplicación de frontend,
+pero no se redesplegará automáticamente con los cambios.
+
### Construcción con tests de unidad e integración
En esta construcción se ejecutarán todos los tests relacionados con el backend:
@@ -73,16 +76,3 @@ memoria.
El comando para lanzar esta construcción es:
`mvn install`
-
-### Construcción con tests de unidad, integración y aceptación
-
-Esta construcción es similar a la previa, añadiendo las **pruebas de
-aceptación**, que comprueban que las fucionalidades de la aplicación están
-correctamente implementadas.
-
-En estas pruebas se descarga y arranca el un servidor Tomcat 8 en el que se
-despliega la aplicación configurada para utilizar una base de datos HSQL. Las
-pruebas se hacen sobre la interfaz web con Selenium, que iniciará un Firefox
-local de forma automática.
-
-`mvn -Pacceptance-tests-cargo install`
diff --git a/pom.xml b/pom.xml
index 0d297dac3cbfa2ead6ee56770e21a627737312b2..dc9a9074708aa28e67826533041107e6fe552393 100644
--- a/pom.xml
+++ b/pom.xml
@@ -45,7 +45,6 @@
1.3.0
2.3.3
5.1.45
- v0.26.0
2.4.2
@@ -419,185 +418,6 @@
-
- acceptance-tests-cargo
-
- false
-
-
-
-
-
- org.apache.maven.plugins
- maven-failsafe-plugin
- ${maven-failsafe-plugin.version}
-
-
- **/IntegrationTestSuite.java
- **/AcceptanceTestSuite.java
-
-
- ${geckodriver.uncompressed.path}
-
-
-
-
- default-integration-tests
-
- integration-test
- verify
-
-
-
-
-
-
- org.jacoco
- jacoco-maven-plugin
- ${jacoco-maven-plugin.version}
-
- ${jacoco.port}
-
-
-
- jacoco-agent
- pre-integration-test
-
- prepare-agent
-
-
- jacoco.agent.itArgLine
-
-
-
- jacoco-report
- post-integration-test
-
- dump
- report
-
-
- ${project.reporting.outputDirectory}/jacoco-it
-
-
-
-
-
-
-
- fr.avianey.mojo
- hsqldb-maven-plugin
- ${hsqldb-maven-plugin.version}
-
-
-
- org.hsqldb.jdbc.JDBCDriver
- mem:daatestdb
- localhost
- daatestdb
- sa
-
-
-
-
-
-
- start-hsqldb
- pre-integration-test
-
- start
-
-
-
- stop-hsqldb
- post-integration-test
-
- stop
-
-
-
-
-
-
- org.codehaus.cargo
- cargo-maven2-plugin
- ${cargo-maven2-plugin.version}
-
-
- tomcat8x
-
- https://repo1.maven.org/maven2/org/apache/tomcat/tomcat/${tomcat.version}/tomcat-${tomcat.version}.zip
- ${project.servers.directory}/downloads
- ${project.servers.directory}/extracts
-
-
-
- org.hsqldb
- hsqldb
-
-
-
-
-
- ${project.build.directory}/catalina-base
-
-
- tomcat/server.hsqldb.xml
- conf/server.xml
-
-
-
- ${jacoco.agent.itArgLine},output=tcpserver,port=${jacoco.port}
- -Drunmode=TEST
- 9080
-
- cargo.datasource.jndi=jdbc/daaexample|
- cargo.datasource.driver=org.hsqldb.jdbc.JDBCDriver|
- cargo.datasource.url=jdbc:hsqldb:hsql://localhost/daatestdb|
- cargo.datasource.username=sa|
- cargo.datasource.password=|
- cargo.datasource.maxActive=8|
- cargo.datasource.maxIdle=4|
- cargo.datasource.maxWait=10000
-
-
-
-
-
-
- start-tomcat
- pre-integration-test
-
- start
-
-
- ${cargo.tomcat.start.skip}
-
-
-
- run-tomcat
- pre-integration-test
-
- run
-
-
- ${cargo.tomcat.run.skip}
-
-
-
- stop-tomcat
- post-integration-test
-
- stop
-
-
-
-
-
-
-
-
run
@@ -789,190 +609,5 @@
-
-
- geckodriver-download-unix
-
-
- unix
-
-
-
- https://github.com/mozilla/geckodriver/releases/download/${geckodriver.version}/geckodriver-${geckodriver.version}-${geckodriver.suffix}.tar.gz
- ${settings.localRepository}${file.separator}geckodriver${file.separator}${os.name}${file.separator}${os.arch}${file.separator}${project.build.directory}${file.separator}
- ${geckodriver.basepath}${file.separator}geckodriver-${geckodriver.version}-${geckodriver.suffix}.tar.gz
- ${geckodriver.basepath}${file.separator}geckodriver
-
-
-
-
- org.apache.maven.plugins
- maven-antrun-plugin
- ${maven-antrun-plugin.version}
-
-
- download-geckodriver
- process-test-resources
-
-
-
-
-
-
-
-
-
- run
-
-
-
-
-
-
-
-
-
- geckodriver-download-windows
-
-
- windows
-
-
-
- https://github.com/mozilla/geckodriver/releases/download/${geckodriver.version}/geckodriver-${geckodriver.version}-${geckodriver.suffix}.zip
- ${settings.localRepository}${file.separator}geckodriver${file.separator}${os.name}${file.separator}${os.arch}
- ${geckodriver.basepath}${file.separator}geckodriver-${geckodriver.version}-${geckodriver.suffix}.zip
- ${geckodriver.basepath}${file.separator}geckodriver.exe
-
-
-
-
- org.apache.maven.plugins
- maven-antrun-plugin
- ${maven-antrun-plugin.version}
-
-
- download-geckodriver
- process-test-resources
-
-
-
-
-
-
-
-
-
- run
-
-
-
-
-
-
-
-
-
- geckodriver-properties-unix-amd64
-
-
- unix
- amd64
-
-
-
- linux64
-
-
-
-
- geckodriver-properties-unix-x86
-
-
- unix
- x86
-
-
-
- linux86
-
-
-
-
- geckodriver-properties-windows-amd64
-
-
- windows
- amd64
-
-
-
- win64
-
-
-
-
- geckodriver-properties-windows-x86
-
-
- windows
- x86
-
-
-
- win32
-
-
-
-
- geckodriver-properties-and-download-mac
-
-
- mac
-
-
-
- macos
- https://github.com/mozilla/geckodriver/releases/download/${geckodriver.version}/geckodriver-${geckodriver.version}-${geckodriver.suffix}.tar.gz
- ${settings.localRepository}${file.separator}geckodriver${file.separator}${os.name}${file.separator}${os.arch}
- ${geckodriver.basepath}${file.separator}geckodriver-${geckodriver.version}-${geckodriver.suffix}.tar.gz
- ${geckodriver.basepath}${file.separator}geckodriver
-
-
-
-
- org.apache.maven.plugins
- maven-antrun-plugin
- ${maven-antrun-plugin.version}
-
-
- download-geckodriver
- process-test-resources
-
-
-
-
-
-
-
-
-
- run
-
-
-
-
-
-
-
diff --git a/src/main/angular/package-lock.json b/src/main/angular/package-lock.json
index e726c6390be7d9583463fa5756c95830fe5fd7ae..1a7a6245432fdf94f5610ddc49d6240f24d99b7c 100644
--- a/src/main/angular/package-lock.json
+++ b/src/main/angular/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "daa-example",
- "version": "0.2.0-alpha.8",
+ "version": "0.2.0-alpha.9",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
diff --git a/src/main/angular/package.json b/src/main/angular/package.json
index 720c9638f61ded38f3032c15b4ce2f3e073494ee..d66544476b02deeeedfd7538ace36f32e7e76dbe 100644
--- a/src/main/angular/package.json
+++ b/src/main/angular/package.json
@@ -1,6 +1,6 @@
{
"name": "daa-example",
- "version": "0.2.0-alpha.8",
+ "version": "0.2.0-alpha.9",
"scripts": {
"ng": "./node_modules/.bin/ng",
"start": "./node_modules/.bin/ng serve",
diff --git a/src/test/java/es/uvigo/esei/daa/dao/PeopleDAOTest.java b/src/test/java/es/uvigo/esei/daa/dao/PeopleDAOTest.java
deleted file mode 100644
index 68d93675fe9e7004aa2f7a29d50fa33d51da1a3e..0000000000000000000000000000000000000000
--- a/src/test/java/es/uvigo/esei/daa/dao/PeopleDAOTest.java
+++ /dev/null
@@ -1,136 +0,0 @@
-package es.uvigo.esei.daa.dao;
-
-import static es.uvigo.esei.daa.dataset.PeopleDataset.existentId;
-import static es.uvigo.esei.daa.dataset.PeopleDataset.existentPerson;
-import static es.uvigo.esei.daa.dataset.PeopleDataset.newName;
-import static es.uvigo.esei.daa.dataset.PeopleDataset.newPerson;
-import static es.uvigo.esei.daa.dataset.PeopleDataset.newSurname;
-import static es.uvigo.esei.daa.dataset.PeopleDataset.nonExistentId;
-import static es.uvigo.esei.daa.dataset.PeopleDataset.nonExistentPerson;
-import static es.uvigo.esei.daa.dataset.PeopleDataset.people;
-import static es.uvigo.esei.daa.dataset.PeopleDataset.peopleWithout;
-import static es.uvigo.esei.daa.matchers.IsEqualToPerson.containsPeopleInAnyOrder;
-import static es.uvigo.esei.daa.matchers.IsEqualToPerson.equalsToPerson;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-import javax.sql.DataSource;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.TestExecutionListeners;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import com.github.springtestdbunit.DbUnitTestExecutionListener;
-import com.github.springtestdbunit.annotation.DatabaseSetup;
-import com.github.springtestdbunit.annotation.ExpectedDatabase;
-
-import es.uvigo.esei.daa.entities.Person;
-import es.uvigo.esei.daa.listeners.ApplicationContextBinding;
-import es.uvigo.esei.daa.listeners.ApplicationContextJndiBindingTestExecutionListener;
-import es.uvigo.esei.daa.listeners.DbManagement;
-import es.uvigo.esei.daa.listeners.DbManagementTestExecutionListener;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration("classpath:contexts/mem-context.xml")
-@TestExecutionListeners({
- DbUnitTestExecutionListener.class,
- DbManagementTestExecutionListener.class,
- ApplicationContextJndiBindingTestExecutionListener.class
-})
-@ApplicationContextBinding(
- jndiUrl = "java:/comp/env/jdbc/daaexample",
- type = DataSource.class
-)
-@DbManagement(
- create = "classpath:db/hsqldb.sql",
- drop = "classpath:db/hsqldb-drop.sql"
-)
-@DatabaseSetup("/datasets/dataset.xml")
-@ExpectedDatabase("/datasets/dataset.xml")
-public class PeopleDAOTest {
- private PeopleDAO dao;
-
- @Before
- public void setUp() throws Exception {
- this.dao = new PeopleDAO();
- }
-
- @Test
- public void testList() throws DAOException {
- assertThat(this.dao.list(), containsPeopleInAnyOrder(people()));
- }
-
- @Test
- public void testGet() throws DAOException {
- final Person person = this.dao.get(existentId());
-
- assertThat(person, is(equalsToPerson(existentPerson())));
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testGetNonExistentId() throws DAOException {
- this.dao.get(nonExistentId());
- }
-
- @Test
- @ExpectedDatabase("/datasets/dataset-delete.xml")
- public void testDelete() throws DAOException {
- this.dao.delete(existentId());
-
- assertThat(this.dao.list(), containsPeopleInAnyOrder(peopleWithout(existentId())));
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testDeleteNonExistentId() throws DAOException {
- this.dao.delete(nonExistentId());
- }
-
- @Test
- @ExpectedDatabase("/datasets/dataset-modify.xml")
- public void testModify() throws DAOException {
- final Person person = existentPerson();
- person.setName(newName());
- person.setSurname(newSurname());
-
- this.dao.modify(person);
-
- final Person persistentPerson = this.dao.get(person.getId());
-
- assertThat(persistentPerson, is(equalsToPerson(person)));
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testModifyNonExistentId() throws DAOException {
- this.dao.modify(nonExistentPerson());
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testModifyNullPerson() throws DAOException {
- this.dao.modify(null);
- }
-
- @Test
- @ExpectedDatabase("/datasets/dataset-add.xml")
- public void testAdd() throws DAOException {
- final Person person = this.dao.add(newName(), newSurname());
-
- assertThat(person, is(equalsToPerson(newPerson())));
-
- final Person persistentPerson = this.dao.get(person.getId());
-
- assertThat(persistentPerson, is(equalsToPerson(newPerson())));
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testAddNullName() throws DAOException {
- this.dao.add(null, newSurname());
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testAddNullSurname() throws DAOException {
- this.dao.add(newName(), null);
- }
-}
diff --git a/src/test/java/es/uvigo/esei/daa/dao/PeopleDAOUnitTest.java b/src/test/java/es/uvigo/esei/daa/dao/PeopleDAOUnitTest.java
deleted file mode 100644
index 94ac74b92a0cf20ef651f4f7e4cdd7b908f0ee50..0000000000000000000000000000000000000000
--- a/src/test/java/es/uvigo/esei/daa/dao/PeopleDAOUnitTest.java
+++ /dev/null
@@ -1,259 +0,0 @@
-package es.uvigo.esei.daa.dao;
-
-import static es.uvigo.esei.daa.dataset.PeopleDataset.existentId;
-import static es.uvigo.esei.daa.dataset.PeopleDataset.existentPerson;
-import static es.uvigo.esei.daa.dataset.PeopleDataset.newName;
-import static es.uvigo.esei.daa.dataset.PeopleDataset.newPerson;
-import static es.uvigo.esei.daa.dataset.PeopleDataset.newSurname;
-import static es.uvigo.esei.daa.dataset.PeopleDataset.people;
-import static es.uvigo.esei.daa.matchers.IsEqualToPerson.containsPeopleInAnyOrder;
-import static es.uvigo.esei.daa.matchers.IsEqualToPerson.equalsToPerson;
-import static org.easymock.EasyMock.anyString;
-import static org.easymock.EasyMock.eq;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.reset;
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-import java.sql.SQLException;
-
-import org.junit.Test;
-
-import com.mysql.jdbc.Statement;
-
-import es.uvigo.esei.daa.entities.Person;
-import es.uvigo.esei.daa.util.DatabaseQueryUnitTest;
-
-public class PeopleDAOUnitTest extends DatabaseQueryUnitTest {
- @Test
- public void testList() throws Exception {
- final Person[] people = people();
-
- for (Person person : people) {
- expectPersonRow(person);
- }
- expect(result.next()).andReturn(false);
- result.close();
-
- replayAll();
- final PeopleDAO peopleDAO = new PeopleDAO();
-
- assertThat(peopleDAO.list(), containsPeopleInAnyOrder(people));
- }
-
- @Test(expected = DAOException.class)
- public void testListUnexpectedException() throws Exception {
- expect(result.next()).andThrow(new SQLException());
- result.close();
-
- replayAll();
-
- final PeopleDAO peopleDAO = new PeopleDAO();
- peopleDAO.list();
- }
-
- @Test
- public void testGet() throws Exception {
- final Person existentPerson = existentPerson();
-
- expectPersonRow(existentPerson);
- result.close();
-
- replayAll();
-
- final PeopleDAO peopleDAO = new PeopleDAO();
-
- assertThat(peopleDAO.get(existentId()), is(equalTo(existentPerson)));
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testGetMissing() throws Exception {
- expect(result.next()).andReturn(false);
- result.close();
-
- replayAll();
-
- final PeopleDAO peopleDAO = new PeopleDAO();
- peopleDAO.get(existentId());
- }
-
- @Test(expected = DAOException.class)
- public void testGetUnexpectedException() throws Exception {
- expect(result.next()).andThrow(new SQLException());
- result.close();
-
- replayAll();
-
- final PeopleDAO peopleDAO = new PeopleDAO();
- peopleDAO.get(existentId());
- }
-
- @Test
- public void testAdd() throws Exception {
- final Person person = newPerson();
- reset(connection);
- expect(connection.prepareStatement(anyString(), eq(Statement.RETURN_GENERATED_KEYS)))
- .andReturn(statement);
- expect(statement.executeUpdate()).andReturn(1);
- expect(statement.getGeneratedKeys()).andReturn(result);
-
- // Key retrieval
- expect(result.next()).andReturn(true);
- expect(result.getInt(1)).andReturn(person.getId());
- connection.close();
- result.close();
-
- replayAll();
-
- final PeopleDAO peopleDAO = new PeopleDAO();
- final Person newPerson = peopleDAO.add(person.getName(), person.getSurname());
-
- assertThat(newPerson, is(equalsToPerson(person)));
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testAddNullName() throws Exception {
- replayAll();
-
- final PeopleDAO peopleDAO = new PeopleDAO();
-
- resetAll(); // No expectations
-
- peopleDAO.add(null, newSurname());
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testAddNullSurname() throws Exception {
- replayAll();
-
- final PeopleDAO peopleDAO = new PeopleDAO();
-
- resetAll(); // No expectations
-
- peopleDAO.add(newName(), null);
- }
-
- @Test(expected = DAOException.class)
- public void testAddZeroUpdatedRows() throws Exception {
- reset(connection);
- expect(connection.prepareStatement(anyString(), eq(1)))
- .andReturn(statement);
- expect(statement.executeUpdate()).andReturn(0);
- connection.close();
-
- replayAll();
-
- final PeopleDAO peopleDAO = new PeopleDAO();
- peopleDAO.add(newName(), newSurname());
- }
-
- @Test(expected = DAOException.class)
- public void testAddNoGeneratedKey() throws Exception {
- reset(connection);
- expect(connection.prepareStatement(anyString(), eq(1)))
- .andReturn(statement);
- expect(statement.executeUpdate()).andReturn(1);
- expect(statement.getGeneratedKeys()).andReturn(result);
- expect(result.next()).andReturn(false);
- result.close();
- connection.close();
-
- replayAll();
-
- final PeopleDAO peopleDAO = new PeopleDAO();
- peopleDAO.add(newName(), newSurname());
- }
-
- @Test(expected = DAOException.class)
- public void testAddUnexpectedException() throws Exception {
- reset(connection);
- expect(connection.prepareStatement(anyString(), eq(1)))
- .andReturn(statement);
- expect(statement.executeUpdate()).andThrow(new SQLException());
- connection.close();
-
- replayAll();
-
- final PeopleDAO peopleDAO = new PeopleDAO();
- peopleDAO.add(newName(), newSurname());
- }
-
- @Test
- public void testDelete() throws Exception {
- expect(statement.executeUpdate()).andReturn(1);
-
- replayAll();
-
- final PeopleDAO peopleDAO = new PeopleDAO();
- peopleDAO.delete(existentId());
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testDeleteInvalidId() throws Exception {
- expect(statement.executeUpdate()).andReturn(0);
-
- replayAll();
-
- final PeopleDAO peopleDAO = new PeopleDAO();
- peopleDAO.delete(existentId());
- }
-
- @Test(expected = DAOException.class)
- public void testDeleteUnexpectedException() throws Exception {
- expect(statement.executeUpdate()).andThrow(new SQLException());
-
- replayAll();
-
- final PeopleDAO peopleDAO = new PeopleDAO();
- peopleDAO.delete(existentId());
- }
-
- @Test
- public void testModify() throws Exception {
- expect(statement.executeUpdate()).andReturn(1);
-
- replayAll();
-
- final PeopleDAO peopleDAO = new PeopleDAO();
- peopleDAO.modify(existentPerson());
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testModifyNullPerson() throws Exception {
- replayAll();
-
- final PeopleDAO peopleDAO = new PeopleDAO();
-
- resetAll(); // No expectations
-
- peopleDAO.modify(null);
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testModifyZeroUpdatedRows() throws Exception {
- expect(statement.executeUpdate()).andReturn(0);
-
- replayAll();
-
- final PeopleDAO peopleDAO = new PeopleDAO();
- peopleDAO.modify(existentPerson());
- }
-
- @Test(expected = DAOException.class)
- public void testModifyUnexpectedException() throws Exception {
- expect(statement.executeUpdate()).andThrow(new SQLException());
-
- replayAll();
-
- final PeopleDAO peopleDAO = new PeopleDAO();
- peopleDAO.modify(existentPerson());
- }
-
- private void expectPersonRow(Person person) throws SQLException {
- expect(result.next()).andReturn(true);
- expect(result.getInt("id")).andReturn(person.getId());
- expect(result.getString("name")).andReturn(person.getName());
- expect(result.getString("surname")).andReturn(person.getSurname());
- }
-}
diff --git a/src/test/java/es/uvigo/esei/daa/rest/PeopleResourceUnitTest.java b/src/test/java/es/uvigo/esei/daa/rest/PeopleResourceUnitTest.java
deleted file mode 100644
index 5cb75654a8eca50305099a1cf3959f052e8f1e38..0000000000000000000000000000000000000000
--- a/src/test/java/es/uvigo/esei/daa/rest/PeopleResourceUnitTest.java
+++ /dev/null
@@ -1,242 +0,0 @@
-package es.uvigo.esei.daa.rest;
-
-import static es.uvigo.esei.daa.dataset.PeopleDataset.existentId;
-import static es.uvigo.esei.daa.dataset.PeopleDataset.existentPerson;
-import static es.uvigo.esei.daa.dataset.PeopleDataset.newName;
-import static es.uvigo.esei.daa.dataset.PeopleDataset.newPerson;
-import static es.uvigo.esei.daa.dataset.PeopleDataset.newSurname;
-import static es.uvigo.esei.daa.dataset.PeopleDataset.people;
-import static es.uvigo.esei.daa.matchers.HasHttpStatus.hasBadRequestStatus;
-import static es.uvigo.esei.daa.matchers.HasHttpStatus.hasInternalServerErrorStatus;
-import static es.uvigo.esei.daa.matchers.HasHttpStatus.hasOkStatus;
-import static es.uvigo.esei.daa.matchers.IsEqualToPerson.containsPeopleInAnyOrder;
-import static es.uvigo.esei.daa.matchers.IsEqualToPerson.equalsToPerson;
-import static java.util.Arrays.asList;
-import static org.easymock.EasyMock.anyInt;
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.anyString;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.expectLastCall;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
-
-import java.util.List;
-
-import javax.ws.rs.core.Response;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import es.uvigo.esei.daa.dao.DAOException;
-import es.uvigo.esei.daa.dao.PeopleDAO;
-import es.uvigo.esei.daa.entities.Person;
-
-public class PeopleResourceUnitTest {
- private PeopleDAO daoMock;
- private PeopleResource resource;
-
- @Before
- public void setUp() throws Exception {
- daoMock = createMock(PeopleDAO.class);
- resource = new PeopleResource(daoMock);
- }
-
- @After
- public void tearDown() throws Exception {
- try {
- verify(daoMock);
- } finally {
- daoMock = null;
- resource = null;
- }
- }
-
- @Test
- @SuppressWarnings("unchecked")
- public void testList() throws Exception {
- final List people = asList(people());
-
- expect(daoMock.list()).andReturn(people);
-
- replay(daoMock);
-
- final Response response = resource.list();
-
- assertThat(response, hasOkStatus());
- assertThat((List) response.getEntity(), containsPeopleInAnyOrder(people()));
- }
-
- @Test
- public void testListDAOException() throws Exception {
- expect(daoMock.list()).andThrow(new DAOException());
-
- replay(daoMock);
-
- final Response response = resource.list();
-
- assertThat(response, hasInternalServerErrorStatus());
- }
-
- @Test
- public void testGet() throws Exception {
- final Person person = existentPerson();
-
- expect(daoMock.get(person.getId())).andReturn(person);
-
- replay(daoMock);
-
- final Response response = resource.get(person.getId());
-
- assertThat(response, hasOkStatus());
- assertThat((Person) response.getEntity(), is(equalsToPerson(person)));
- }
-
- @Test
- public void testGetDAOException() throws Exception {
- expect(daoMock.get(anyInt())).andThrow(new DAOException());
-
- replay(daoMock);
-
- final Response response = resource.get(existentId());
-
- assertThat(response, hasInternalServerErrorStatus());
- }
-
- @Test
- public void testGetIllegalArgumentException() throws Exception {
- expect(daoMock.get(anyInt())).andThrow(new IllegalArgumentException());
-
- replay(daoMock);
-
- final Response response = resource.get(existentId());
-
- assertThat(response, hasBadRequestStatus());
- }
-
- @Test
- public void testDelete() throws Exception {
- daoMock.delete(anyInt());
-
- replay(daoMock);
-
- final Response response = resource.delete(1);
-
- assertThat(response, hasOkStatus());
- }
-
- @Test
- public void testDeleteDAOException() throws Exception {
- daoMock.delete(anyInt());
- expectLastCall().andThrow(new DAOException());
-
- replay(daoMock);
-
- final Response response = resource.delete(1);
-
- assertThat(response, hasInternalServerErrorStatus());
- }
-
- @Test
- public void testDeleteIllegalArgumentException() throws Exception {
- daoMock.delete(anyInt());
- expectLastCall().andThrow(new IllegalArgumentException());
- replay(daoMock);
-
- final Response response = resource.delete(1);
-
- assertThat(response, hasBadRequestStatus());
- }
-
- @Test
- public void testModify() throws Exception {
- final Person person = existentPerson();
- person.setName(newName());
- person.setSurname(newSurname());
-
- daoMock.modify(person);
-
- replay(daoMock);
-
- final Response response = resource.modify(
- person.getId(), person.getName(), person.getSurname());
-
- assertThat(response, hasOkStatus());
- assertEquals(person, response.getEntity());
- }
-
- @Test
- public void testModifyDAOException() throws Exception {
- daoMock.modify(anyObject());
- expectLastCall().andThrow(new DAOException());
-
- replay(daoMock);
-
- final Response response = resource.modify(existentId(), newName(), newSurname());
-
- assertThat(response, hasInternalServerErrorStatus());
- }
-
- @Test
- public void testModifyIllegalArgumentException() throws Exception {
- daoMock.modify(anyObject());
- expectLastCall().andThrow(new IllegalArgumentException());
-
- replay(daoMock);
-
- final Response response = resource.modify(existentId(), newName(), newSurname());
-
- assertThat(response, hasBadRequestStatus());
- }
-
- @Test
- public void testModifyNullPointerException() throws Exception {
- daoMock.modify(anyObject());
- expectLastCall().andThrow(new NullPointerException());
-
- replay(daoMock);
-
- final Response response = resource.modify(existentId(), newName(), newSurname());
-
- assertThat(response, hasBadRequestStatus());
- }
-
- @Test
- public void testAdd() throws Exception {
- expect(daoMock.add(newName(), newSurname()))
- .andReturn(newPerson());
- replay(daoMock);
-
-
- final Response response = resource.add(newName(), newSurname());
-
- assertThat(response, hasOkStatus());
- assertThat((Person) response.getEntity(), is(equalsToPerson(newPerson())));
- }
-
- @Test
- public void testAddDAOException() throws Exception {
- expect(daoMock.add(anyString(), anyString()))
- .andThrow(new DAOException());
- replay(daoMock);
-
- final Response response = resource.add(newName(), newSurname());
-
- assertThat(response, hasInternalServerErrorStatus());
- }
-
- @Test
- public void testAddIllegalArgumentException() throws Exception {
- expect(daoMock.add(anyString(), anyString()))
- .andThrow(new IllegalArgumentException());
- replay(daoMock);
-
- final Response response = resource.add(newName(), newSurname());
-
- assertThat(response, hasBadRequestStatus());
- }
-}
diff --git a/src/test/java/es/uvigo/esei/daa/suites/AcceptanceTestSuite.java b/src/test/java/es/uvigo/esei/daa/suites/AcceptanceTestSuite.java
deleted file mode 100644
index 9e7fcdae98a373f1c05365a54f4c40f3166f0ba4..0000000000000000000000000000000000000000
--- a/src/test/java/es/uvigo/esei/daa/suites/AcceptanceTestSuite.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package es.uvigo.esei.daa.suites;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-import org.junit.runners.Suite.SuiteClasses;
-
-import es.uvigo.esei.daa.web.PeopleWebTest;
-
-@SuiteClasses({
- PeopleWebTest.class
-})
-@RunWith(Suite.class)
-public class AcceptanceTestSuite {
-
-}
diff --git a/src/test/java/es/uvigo/esei/daa/suites/IntegrationTestSuite.java b/src/test/java/es/uvigo/esei/daa/suites/IntegrationTestSuite.java
index 822c83f44b63c0c998e6b17c1ab25bddbd750a63..3f0c667c53d5328167d72f6d3b183451637862e3 100644
--- a/src/test/java/es/uvigo/esei/daa/suites/IntegrationTestSuite.java
+++ b/src/test/java/es/uvigo/esei/daa/suites/IntegrationTestSuite.java
@@ -4,12 +4,10 @@ import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
-import es.uvigo.esei.daa.dao.PeopleDAOTest;
import es.uvigo.esei.daa.rest.PeopleResourceTest;
import es.uvigo.esei.daa.rest.UsersResourceTest;
@SuiteClasses({
- PeopleDAOTest.class,
PeopleResourceTest.class,
UsersResourceTest.class
})
diff --git a/src/test/java/es/uvigo/esei/daa/suites/UnitTestSuite.java b/src/test/java/es/uvigo/esei/daa/suites/UnitTestSuite.java
index a21ca3663b624f6cf2ea326a347de55ae8f96ca9..a08e9656929697d95a0416f42d04f70d257d6843 100644
--- a/src/test/java/es/uvigo/esei/daa/suites/UnitTestSuite.java
+++ b/src/test/java/es/uvigo/esei/daa/suites/UnitTestSuite.java
@@ -4,14 +4,10 @@ import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
-import es.uvigo.esei.daa.dao.PeopleDAOUnitTest;
import es.uvigo.esei.daa.entities.PersonUnitTest;
-import es.uvigo.esei.daa.rest.PeopleResourceUnitTest;
@SuiteClasses({
- PersonUnitTest.class,
- PeopleDAOUnitTest.class,
- PeopleResourceUnitTest.class
+ PersonUnitTest.class
})
@RunWith(Suite.class)
public class UnitTestSuite {
diff --git a/src/test/java/es/uvigo/esei/daa/web/PeopleWebTest.java b/src/test/java/es/uvigo/esei/daa/web/PeopleWebTest.java
deleted file mode 100644
index ff4371b223497e1c55aba0719769a2e569b5352f..0000000000000000000000000000000000000000
--- a/src/test/java/es/uvigo/esei/daa/web/PeopleWebTest.java
+++ /dev/null
@@ -1,134 +0,0 @@
-package es.uvigo.esei.daa.web;
-
-import static es.uvigo.esei.daa.dataset.PeopleDataset.existentId;
-import static es.uvigo.esei.daa.dataset.PeopleDataset.existentPerson;
-import static es.uvigo.esei.daa.dataset.PeopleDataset.newName;
-import static es.uvigo.esei.daa.dataset.PeopleDataset.newPerson;
-import static es.uvigo.esei.daa.dataset.PeopleDataset.newSurname;
-import static es.uvigo.esei.daa.dataset.PeopleDataset.people;
-import static es.uvigo.esei.daa.matchers.IsEqualToPerson.containsPeopleInAnyOrder;
-import static es.uvigo.esei.daa.matchers.IsEqualToPerson.equalsToPerson;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertThat;
-
-import java.util.concurrent.TimeUnit;
-
-import javax.sql.DataSource;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.openqa.selenium.WebDriver;
-import org.openqa.selenium.firefox.FirefoxDriver;
-import org.openqa.selenium.firefox.FirefoxOptions;
-import org.openqa.selenium.firefox.FirefoxProfile;
-import org.openqa.selenium.html5.LocalStorage;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.TestExecutionListeners;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import com.github.springtestdbunit.DbUnitTestExecutionListener;
-import com.github.springtestdbunit.annotation.DatabaseSetup;
-import com.github.springtestdbunit.annotation.ExpectedDatabase;
-
-import es.uvigo.esei.daa.entities.Person;
-import es.uvigo.esei.daa.listeners.ApplicationContextBinding;
-import es.uvigo.esei.daa.listeners.ApplicationContextJndiBindingTestExecutionListener;
-import es.uvigo.esei.daa.listeners.DbManagement;
-import es.uvigo.esei.daa.listeners.DbManagementTestExecutionListener;
-import es.uvigo.esei.daa.web.pages.MainPage;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration("classpath:contexts/hsql-context.xml")
-@TestExecutionListeners({
- DbUnitTestExecutionListener.class,
- DbManagementTestExecutionListener.class,
- ApplicationContextJndiBindingTestExecutionListener.class
-})
-@ApplicationContextBinding(
- jndiUrl = "java:/comp/env/jdbc/daaexample",
- type = DataSource.class
-)
-@DbManagement(
- create = "classpath:db/hsqldb.sql",
- drop = "classpath:db/hsqldb-drop.sql"
-)
-@DatabaseSetup("/datasets/dataset.xml")
-@ExpectedDatabase("/datasets/dataset.xml")
-public class PeopleWebTest {
- private static final int DEFAULT_WAIT_TIME = 1;
-
- private WebDriver driver;
- private MainPage mainPage;
-
- @Before
- public void setUp() throws Exception {
- final String baseUrl = "http://localhost:9080/DAAExample/";
-
- final FirefoxProfile profile = new FirefoxProfile();
- profile.setPreference("browser.privatebrowsing.autostart", true);
-
- final FirefoxOptions options = new FirefoxOptions();
- options.setProfile(profile);
-
- final FirefoxDriver firefoxDriver;
- driver = firefoxDriver = new FirefoxDriver();
- driver.get(baseUrl);
-
- // Driver will wait DEFAULT_WAIT_TIME if it doesn't find and element.
- driver.manage().timeouts().implicitlyWait(DEFAULT_WAIT_TIME, TimeUnit.SECONDS);
- driver.manage().window().maximize();
-
- // Login as "admin:adminpass"
- final LocalStorage localStorage = firefoxDriver.getLocalStorage();
- // YWRtaW46YWRtaW5wYXNz
- localStorage.setItem("user", "{\"login\":\"admin\",\"password\":\"adminpass\"}");
-
- mainPage = new MainPage(driver, baseUrl);
- mainPage.navigateTo();
- }
-
- @After
- public void tearDown() throws Exception {
- driver.quit();
- driver = null;
- mainPage = null;
- }
-
- @Test
- public void testList() throws Exception {
- assertThat(mainPage.listPeople(), containsPeopleInAnyOrder(people()));
- }
-
- @Test
- @ExpectedDatabase("/datasets/dataset-add.xml")
- public void testAdd() throws Exception {
- final Person newPerson = mainPage.addPerson(newName(), newSurname());
-
- assertThat(newPerson, is(equalsToPerson(newPerson())));
- }
-
- @Test
- @ExpectedDatabase("/datasets/dataset-modify.xml")
- public void testEdit() throws Exception {
- final Person person = existentPerson();
- person.setName(newName());
- person.setSurname(newSurname());
-
- mainPage.editPerson(person);
-
- final Person webPerson = mainPage.getPerson(person.getId());
-
- assertThat(webPerson, is(equalsToPerson(person)));
- }
-
- @Test
- @ExpectedDatabase("/datasets/dataset-delete.xml")
- public void testDelete() throws Exception {
- mainPage.deletePerson(existentId());
-
- assertFalse(mainPage.hasPerson(existentId()));
- }
-}
diff --git a/src/test/java/es/uvigo/esei/daa/web/pages/MainPage.java b/src/test/java/es/uvigo/esei/daa/web/pages/MainPage.java
deleted file mode 100644
index 4170948fc97778693185646e526569587a054380..0000000000000000000000000000000000000000
--- a/src/test/java/es/uvigo/esei/daa/web/pages/MainPage.java
+++ /dev/null
@@ -1,242 +0,0 @@
-package es.uvigo.esei.daa.web.pages;
-
-import static java.util.stream.Collectors.toList;
-import static org.openqa.selenium.support.ui.ExpectedConditions.presenceOfElementLocated;
-import static org.openqa.selenium.support.ui.ExpectedConditions.textToBePresentInElement;
-
-import java.util.List;
-
-import org.openqa.selenium.By;
-import org.openqa.selenium.NoSuchElementException;
-import org.openqa.selenium.WebDriver;
-import org.openqa.selenium.WebElement;
-import org.openqa.selenium.support.ui.WebDriverWait;
-
-import es.uvigo.esei.daa.entities.Person;
-import es.uvigo.esei.daa.util.JSWaiter;
-
-public class MainPage {
- private static final String TABLE_ID = "people-list";
- private static final String FORM_ID = "people-form";
-
- private static final String ID_PREFIX = "person-";
-
- private final WebDriver driver;
-
- private final WebDriverWait wait;
-
- private final String baseUrl;
-
- public MainPage(WebDriver driver, String baseUrl) {
- this.driver = driver;
- this.baseUrl = baseUrl;
-
- this.wait = new WebDriverWait(driver, 1);
- }
-
- public void navigateTo() {
- this.driver.get(this.baseUrl + "#/people");
-
- this.wait.until(presenceOfElementLocated(By.id(TABLE_ID)));
- }
-
- public int countPeople() {
- return new PeopleTable(this.driver).countPeople();
- }
-
- public List listPeople() {
- return new PeopleTable(this.driver).listPeople();
- }
-
- public Person getLastPerson() {
- return new PeopleTable(this.driver).getPersonInLastRow();
- }
-
- public Person getPerson(int id) {
- return new PeopleTable(this.driver).getPersonById(id);
- }
-
- public boolean hasPerson(int id) {
- return new PeopleTable(this.driver).hasPerson(id);
- }
-
- public Person addPerson(String name, String surname) {
- final PersonForm form = new PersonForm(this.driver);
-
- form.clear();
- form.setName(name);
- form.setSurname(surname);
- form.submit();
-
- final PeopleTable table = new PeopleTable(driver);
- return table.getPerson(name, surname);
- }
-
- public void editPerson(Person person) {
- final PeopleTable table = new PeopleTable(this.driver);
- table.editPerson(person.getId());
-
- final PersonForm form = new PersonForm(this.driver);
- form.setName(person.getName());
- form.setSurname(person.getSurname());
- form.submit();
- }
-
- public void deletePerson(int id) {
- final PeopleTable table = new PeopleTable(this.driver);
-
- table.deletePerson(id);
-
- JSWaiter.wait(driver).untilAngular5Ready();
- }
-
- private final static class PeopleTable {
- private final WebDriver driver;
-
- private final WebElement table;
-
- public PeopleTable(WebDriver driver) {
- this.driver = driver;
-
- this.table = this.driver.findElement(By.id(TABLE_ID));
- }
-
- public boolean hasPerson(int id) {
- try {
- return this.getPersonRow(id) != null;
- } catch (NoSuchElementException nsee) {
- return false;
- }
- }
-
- public void editPerson(int id) {
- final WebElement personRow = this.getPersonRow(id);
-
- personRow.findElement(By.className("edit")).click();
- }
-
- public void deletePerson(int id) {
- final WebElement personRow = this.getPersonRow(id);
-
- personRow.findElement(By.className("delete")).click();
-
- this.acceptDialog();
- }
-
- public Person getPersonById(int id) {
- return rowToPerson(getPersonRow(id));
- }
-
- public Person getPerson(String name, String surname) {
- return rowToPerson(getPersonRow(name, surname));
- }
-
- public Person getPersonInLastRow() {
- final WebElement row = this.table.findElement(By.cssSelector("tbody > tr:last-child"));
-
- return rowToPerson(row);
- }
-
- private WebElement getPersonRow(int id) {
- return this.table.findElement(By.id(ID_PREFIX + id));
- }
-
- public WebElement getPersonRow(String name, String surname) {
- final List rows = table.findElements(By.cssSelector("tbody > tr"));
-
- for (WebElement row : rows) {
- final String rowName = row.findElement(By.className("name")).getText();
- final String rowSurname = row.findElement(By.className("surname")).getText();
-
- if (rowName.equals(name) && rowSurname.equals(surname)) {
- return row;
- }
- }
-
- throw new IllegalArgumentException(String.format("No row found with name '%s' and surname '%s'", name, surname));
- }
-
- public int countPeople() {
- return getRows().size();
- }
-
- public List listPeople() {
- return getRows().stream()
- .map(this::rowToPerson)
- .collect(toList());
- }
-
- private List getRows() {
- final String xpathQuery = "//tbody/tr[starts-with(@id, '" + ID_PREFIX + "')]";
-
- return this.table.findElements(By.xpath(xpathQuery));
- }
-
- private Person rowToPerson(WebElement row) {
- return new Person(
- Integer.parseInt(row.getAttribute("id").substring(ID_PREFIX.length())),
- row.findElement(By.className("name")).getText(),
- row.findElement(By.className("surname")).getText()
- );
- }
-
- private void acceptDialog() {
- driver.switchTo().alert().accept();
- }
- }
-
- public final static class PersonForm {
- private final WebDriverWait wait;
-
- private final WebElement fieldName;
- private final WebElement fieldSurname;
- private final WebElement buttonClear;
- private final WebElement buttonSubmit;
-
- public PersonForm(WebDriver driver) {
- this.wait = new WebDriverWait(driver, 1);
-
- final WebElement form = driver.findElement(By.id(FORM_ID));
-
- this.fieldName = form.findElement(By.name("name"));
- this.fieldSurname = form.findElement(By.name("surname"));
- this.buttonClear = form.findElement(By.id("btnClear"));
- this.buttonSubmit = form.findElement(By.id("btnSubmit"));
- }
-
- public void submit() {
- this.buttonSubmit.click();
-
- this.waitForCleanFields();
- }
-
- public void clear() {
- this.buttonClear.click();
-
- this.waitForCleanFields();
- }
-
- public void setName(String name) {
- this.fieldName.clear();
- this.fieldName.sendKeys(name);
- }
-
- public void setSurname(String surname) {
- this.fieldSurname.clear();
- this.fieldSurname.sendKeys(surname);
- }
-
- public String getName() {
- return this.fieldName.getText();
- }
-
- public String getSurname() {
- return this.fieldSurname.getText();
- }
-
- private void waitForCleanFields() {
- wait.until(textToBePresentInElement(fieldName, ""));
- wait.until(textToBePresentInElement(fieldSurname, ""));
- }
- }
-}