From c5dc318b2699c61bc2514a93db8cd966f50900e7 Mon Sep 17 00:00:00 2001 From: dgpena Date: Fri, 3 Nov 2017 20:02:45 +0100 Subject: [PATCH] Add Department entity and basic tests --- .gitignore | 5 ++ .../siexample/persistence/Department.java | 28 +++++++++ src/main/resources/META-INF/persistence.xml | 26 ++++++++ .../siexample/persistence/DepartmentTest.java | 63 +++++++++++++++++++ .../siexample/persistence/SQLBasedTest.java | 32 ++++++++++ src/test/resources/META-INF/persistence.xml | 25 ++++++++ 6 files changed, 179 insertions(+) create mode 100644 .gitignore create mode 100644 src/main/java/dgpena/siexample/persistence/Department.java create mode 100644 src/main/resources/META-INF/persistence.xml create mode 100644 src/test/java/dgpena/siexample/persistence/DepartmentTest.java create mode 100644 src/test/java/dgpena/siexample/persistence/SQLBasedTest.java create mode 100644 src/test/resources/META-INF/persistence.xml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b506691 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +/target +.classpath +.project +.settings + diff --git a/src/main/java/dgpena/siexample/persistence/Department.java b/src/main/java/dgpena/siexample/persistence/Department.java new file mode 100644 index 0000000..b688306 --- /dev/null +++ b/src/main/java/dgpena/siexample/persistence/Department.java @@ -0,0 +1,28 @@ +package dgpena.siexample.persistence; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +@Entity +public class Department { + + @Id + @GeneratedValue(strategy=GenerationType.IDENTITY) + private int id; + + private String name; + + public int getId() { + return id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml new file mode 100644 index 0000000..88d3e82 --- /dev/null +++ b/src/main/resources/META-INF/persistence.xml @@ -0,0 +1,26 @@ + + + dgpena.siexample.persistence.Department + + + + + + + + + + + + + + + + + + + diff --git a/src/test/java/dgpena/siexample/persistence/DepartmentTest.java b/src/test/java/dgpena/siexample/persistence/DepartmentTest.java new file mode 100644 index 0000000..85bcf83 --- /dev/null +++ b/src/test/java/dgpena/siexample/persistence/DepartmentTest.java @@ -0,0 +1,63 @@ +package dgpena.siexample.persistence; + +import static org.junit.Assert.assertEquals; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; + +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; + +import org.junit.BeforeClass; +import org.junit.Test; + +public class DepartmentTest extends SQLBasedTest { + + private static EntityManagerFactory emf; + + @BeforeClass + public static void setUpEntityManagerFactory() { + emf = Persistence.createEntityManagerFactory("si-database"); + } + + @Test + public void testCreateDepartment() throws Exception { + EntityManager em = emf.createEntityManager(); + + Department d = new Department(); + d.setName("finanzas"); + + em.getTransaction().begin(); + em.persist(d); + em.getTransaction().commit(); + + // check in the DB using JDBC + int deptId = d.getId(); + + + Statement statement = jdbcConnection.createStatement(); + ResultSet rs = statement.executeQuery("SELECT COUNT(*) as total FROM Department d where d.id = "+deptId); + rs.next(); + + assertEquals(1, rs.getInt("total")); + } + + @Test + public void testFindDepartment() 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(); + + Department d = em.find(Department.class, deptId); + + assertEquals(deptId, d.getId()); + assertEquals("finanzas", d.getName()); + + } +} diff --git a/src/test/java/dgpena/siexample/persistence/SQLBasedTest.java b/src/test/java/dgpena/siexample/persistence/SQLBasedTest.java new file mode 100644 index 0000000..a23b400 --- /dev/null +++ b/src/test/java/dgpena/siexample/persistence/SQLBasedTest.java @@ -0,0 +1,32 @@ +package dgpena.siexample.persistence; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; + +public class SQLBasedTest { + + private static final String DB_URL = "jdbc:mysql://localhost:3306/si"; + private static final String DB_USER = "siuser"; + private static final String DB_PASS = "sipass"; + protected static Connection jdbcConnection = createConnection(); + + private static Connection createConnection() { + try { + Class.forName("com.mysql.jdbc.Driver"); + return DriverManager.getConnection(DB_URL, DB_USER, DB_PASS); + } catch(Exception e) { + throw new RuntimeException(e); + } + + } + + protected int getLastInsertedId(Statement statement) throws SQLException { + ResultSet rs = statement.getGeneratedKeys(); + rs.next(); + + return rs.getInt(1); + } +} diff --git a/src/test/resources/META-INF/persistence.xml b/src/test/resources/META-INF/persistence.xml new file mode 100644 index 0000000..81cb567 --- /dev/null +++ b/src/test/resources/META-INF/persistence.xml @@ -0,0 +1,25 @@ + + + dgpena.siexample.persistence.Department + + + + + + + + + + + + + + + + + + -- 2.18.1