diff --git a/src/main/java/dgpena/siexample/persistence/Departments.java b/src/main/java/dgpena/siexample/persistence/Departments.java index 23b757cca05e10181702ba2a47eec50717881fd8..87463e746b4f58571eb982d316d065b10d23a210 100644 --- a/src/main/java/dgpena/siexample/persistence/Departments.java +++ b/src/main/java/dgpena/siexample/persistence/Departments.java @@ -1,5 +1,7 @@ package dgpena.siexample.persistence; +import java.util.List; + import javax.persistence.EntityManager; public class Departments { @@ -11,12 +13,18 @@ public class Departments { } public void addNewDepartment(Department d) { - em.getTransaction().begin(); - em.persist(d); - em.getTransaction().commit(); + em.persist(d); } public Department findById(int id) { return em.find(Department.class, id); } + + public void deleteDepartment(Department d) { + em.remove(d); + } + + public List findAll() { + return em.createQuery("SELECT d FROM Department d").getResultList(); + } } diff --git a/src/test/java/dgpena/siexample/persistence/DepartmentsTest.java b/src/test/java/dgpena/siexample/persistence/DepartmentsTest.java index 9faa3e84fb3119a3d396a1de69b61777bddceee3..e3a680743d81e65bd1aa7d9548b6f9f09d0072f8 100644 --- a/src/test/java/dgpena/siexample/persistence/DepartmentsTest.java +++ b/src/test/java/dgpena/siexample/persistence/DepartmentsTest.java @@ -1,10 +1,15 @@ package dgpena.siexample.persistence; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; @@ -22,6 +27,7 @@ public class DepartmentsTest extends SQLBasedTest { emf = Persistence.createEntityManagerFactory("si-database"); } + @Test public void testAddNewDepartment() throws Exception { @@ -30,7 +36,9 @@ public class DepartmentsTest extends SQLBasedTest { EntityManager em = emf.createEntityManager(); Departments depts = new Departments(em); - depts.addNewDepartment(d); + em.getTransaction().begin(); + depts.addNewDepartment(d); + em.getTransaction().commit(); // check in the DB using JDBC int deptId = d.getId(); @@ -55,4 +63,76 @@ public class DepartmentsTest extends SQLBasedTest { assertEquals("finanzas", d.getName()); } + + @Test + public void testUpdateDepartment() throws SQLException { + // insert a department previously with JDBC + Statement statement = jdbcConnection.createStatement(); + statement.executeUpdate("INSERT INTO Department(name) values('finanzas')", Statement.RETURN_GENERATED_KEYS); + int deptId = getLastInsertedId(statement); + + EntityManager em = emf.createEntityManager(); + Departments depts = new Departments(em); + Department d = depts.findById(deptId); + + em.getTransaction().begin(); + d.setName("contabilidad"); + em.getTransaction().commit(); + + // check in the DB using JDBC + statement = jdbcConnection.createStatement(); + ResultSet rs = statement.executeQuery("SELECT * FROM Department d where d.id = "+deptId); + rs.next(); + assertEquals("contabilidad", rs.getString("name")); + + } + + @Test + public void testDeleteDepartment() throws SQLException { + // insert a department previously with JDBC + Statement statement = jdbcConnection.createStatement(); + statement.executeUpdate("INSERT INTO Department(name) values('finanzas')", Statement.RETURN_GENERATED_KEYS); + int deptId = getLastInsertedId(statement); + + EntityManager em = emf.createEntityManager(); + Departments depts = new Departments(em); + Department d = depts.findById(deptId); + + em.getTransaction().begin(); + depts.deleteDepartment(d); + em.getTransaction().commit(); + + // check in the DB using JDBC + statement = jdbcConnection.createStatement(); + ResultSet rs = statement.executeQuery("SELECT COUNT(*) as total FROM Department d where d.id = "+deptId); + rs.next(); + assertEquals(0, rs.getInt("total")); + } + + @Test + public void testFindAllDepartments() throws SQLException { + // insert a department previously with JDBC + Statement statement = jdbcConnection.createStatement(); + statement.executeUpdate("DELETE FROM Department", Statement.RETURN_GENERATED_KEYS); + + statement = jdbcConnection.createStatement(); + statement.executeUpdate("INSERT INTO Department(name) values('dept-1')", Statement.RETURN_GENERATED_KEYS); + + statement = jdbcConnection.createStatement(); + statement.executeUpdate("INSERT INTO Department(name) values('dept-2')", Statement.RETURN_GENERATED_KEYS); + + EntityManager em = emf.createEntityManager(); + Departments depts = new Departments(em); + List departments = depts.findAll(); + + assertEquals(2, departments.size()); + + Set namesToTest = new HashSet(Arrays.asList("dept-1", "dept-2")); + for (Department d: departments) { + namesToTest.remove(d.getName()); + } + + assertTrue(namesToTest.isEmpty()); + } + }