diff --git a/.classpath b/.classpath
index 1cbc804..3c31b96 100644
--- a/.classpath
+++ b/.classpath
@@ -32,7 +32,6 @@
-
diff --git a/pom.xml b/pom.xml
index 6164711..af1487e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,5 +1,7 @@
-
+
4.0.0
de.kreth.vaadin.clubhelper
@@ -263,6 +265,13 @@
pom
import
+
+ org.junit
+ junit-bom
+ 5.5.0-M1
+ pom
+ import
+
@@ -359,5 +368,5 @@
https://github.com/markuskreth/vaadin-clubhelper.git
scm:git:git@github.com:markuskreth/vaadin-clubhelper.git
scm:git:git@github.com:markuskreth/vaadin-clubhelper.git
-
+
diff --git a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/AbstractDaoImpl.java b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/AbstractDaoImpl.java
index 0fb4a22..2b210c2 100644
--- a/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/AbstractDaoImpl.java
+++ b/src/main/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/AbstractDaoImpl.java
@@ -20,7 +20,8 @@ public abstract class AbstractDaoImpl implements IDao<
protected final Logger log = LoggerFactory.getLogger(getClass());
@Autowired
- protected EntityManager entityManager;
+ protected transient EntityManager entityManager;
+
private final Class entityClass;
public AbstractDaoImpl(Class entityClass) {
@@ -35,7 +36,8 @@ public abstract class AbstractDaoImpl implements IDao<
obj.setChanged(now);
if (entityManager.contains(obj) || obj.hasValidId()) {
entityManager.merge(obj);
- } else {
+ }
+ else {
obj.setCreated(now);
entityManager.persist(obj);
}
diff --git a/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/business/EventBusinessSpringTest.java b/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/business/EventBusinessSpringTest.java
index d024cea..7c219c3 100644
--- a/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/business/EventBusinessSpringTest.java
+++ b/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/business/EventBusinessSpringTest.java
@@ -1,5 +1,6 @@
package de.kreth.vaadin.clubhelper.vaadinclubhelper.business;
+import static de.kreth.vaadin.clubhelper.vaadinclubhelper.dao.TestDatabaseHelper.afterCommit;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
@@ -11,15 +12,13 @@ import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
+import org.springframework.transaction.annotation.Transactional;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.ClubhelperException;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.dao.TestDatabaseHelper;
@@ -48,77 +47,85 @@ class EventBusinessSpringTest {
private TypedQuery all;
- @BeforeEach
void setUp() throws Exception {
- testDatabaseHelper.cleanDatabase();
insertTestData();
eventBusiness.setSelected(event);
all = entityManager.createQuery("from ClubeventHasPerson", ClubeventHasPerson.class);
}
- @AfterEach
- void shutdown() {
- entityManager.clear();
- testDatabaseHelper.cleanDatabase();
- }
-
private void insertTestData() {
persons = new ArrayList<>();
- testDatabaseHelper.transactional(() -> {
- for (int i = 0; i < 3; i++) {
-
- Person p = new Person();
- p.setPrename("prename_" + i);
- p.setSurname("surname_" + i);
- p.setBirth(LocalDate.now());
- entityManager.persist(p);
- persons.add(p);
- }
- event = testDatabaseHelper.creteEvent();
- assertNull(event.getPersons());
- entityManager.persist(event);
- });
+ for (int i = 0; i < 3; i++) {
+
+ Person p = new Person();
+ p.setPrename("prename_" + i);
+ p.setSurname("surname_" + i);
+ p.setBirth(LocalDate.now());
+ entityManager.persist(p);
+ persons.add(p);
+ }
+ event = testDatabaseHelper.creteEvent();
+ assertNull(event.getPersons());
+ entityManager.persist(event);
}
@Test
- void testDataCorrectlyCreated() {
+ @Transactional
+ void testDataCorrectlyCreated() throws Exception {
+
+ setUp();
- assertEquals(0, all.getResultList().size());
+ afterCommit(() -> {
- List stored = entityManager.createNamedQuery(Person.QUERY_FINDALL, Person.class).getResultList();
- assertEquals(3, stored.size());
+ assertEquals(0, all.getResultList().size());
- List events = eventBusiness.loadEvents();
- assertEquals(1, events.size());
+ List stored = entityManager.createNamedQuery(Person.QUERY_FINDALL, Person.class).getResultList();
+ assertEquals(3, stored.size());
+
+ List events = eventBusiness.loadEvents();
+ assertEquals(1, events.size());
+ });
}
@Test
- @Disabled
- void testAddPersonsToEvent() {
- assertEquals(0, all.getResultList().size());
- try {
- transactional(() -> eventBusiness.changePersons(new HashSet<>(persons.subList(0, 1))));
- transactional(() -> eventBusiness.changePersons(new HashSet<>(persons.subList(0, 2))));
- }
- catch (Exception e) {
+ @Transactional
+ void testAddPersonsToEvent() throws Exception {
+ setUp();
- }
+ afterCommit(() -> {
+ assertEquals(0, all.getResultList().size());
+ });
- List result = all.getResultList();
- assertEquals(2, result.size());
- }
+ afterCommit(() -> {
+ try {
+ eventBusiness.changePersons(new HashSet<>(persons.subList(0, 1)));
+ }
+ catch (ClubhelperException e) {
+ throw new RuntimeException(e);
+ }
+ });
- private void transactional(ThrowingRunnable object) {
- testDatabaseHelper.transactional(() -> {
+ afterCommit(() -> {
+ List result = all.getResultList();
+ assertEquals(1, result.size());
+ });
+
+ afterCommit(() -> {
try {
- object.run();
+ eventBusiness.changePersons(new HashSet<>(persons.subList(0, 2)));
}
catch (ClubhelperException e) {
throw new RuntimeException(e);
}
});
+
+ afterCommit(() -> {
+ List result = all.getResultList();
+ assertEquals(2, result.size());
+ });
+
}
}
diff --git a/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/ClubEventDataTest.java b/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/ClubEventDataTest.java
index e5d9ab6..3b5353a 100644
--- a/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/ClubEventDataTest.java
+++ b/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/ClubEventDataTest.java
@@ -1,5 +1,6 @@
package de.kreth.vaadin.clubhelper.vaadinclubhelper.dao;
+import static de.kreth.vaadin.clubhelper.vaadinclubhelper.dao.TestDatabaseHelper.afterCommit;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
@@ -11,12 +12,12 @@ import java.util.Set;
import javax.persistence.EntityManager;
-import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ContextConfiguration;
+import org.springframework.transaction.annotation.Transactional;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubEvent;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubeventHasPerson;
@@ -35,42 +36,43 @@ public class ClubEventDataTest {
@Autowired
TestDatabaseHelper testDatabaseHelper;
- @AfterEach
- public void cleanDatabase() {
- testDatabaseHelper.cleanDatabase();
- }
-
@Test
+ @Transactional
public void testEventAddon() {
ClubEvent ev = testDatabaseHelper.creteEvent();
ev.setType(Type.EINZEL);
- testDatabaseHelper.transactional(() -> {
- entityManager.persist(ev);
-// entityManager.persist(ev.getCompetitionType());
+ entityManager.persist(ev);
+ afterCommit(() -> {
+ List allClubEvent = testDatabaseHelper.allClubEvent();
+ assertEquals(1, allClubEvent.size());
+ assertEquals(Type.EINZEL, allClubEvent.get(0).getType());
});
- List allClubEvent = testDatabaseHelper.allClubEvent();
- assertEquals(1, allClubEvent.size());
- assertEquals(Type.EINZEL, allClubEvent.get(0).getType());
ev.setType(Type.DOPPELMINI);
- testDatabaseHelper.transactional(() -> entityManager.merge(ev));
- allClubEvent = testDatabaseHelper.allClubEvent();
- assertEquals(1, allClubEvent.size());
- assertEquals(Type.DOPPELMINI, allClubEvent.get(0).getType());
+ entityManager.merge(ev);
+
+ afterCommit(() -> {
+ List allClubEvent = testDatabaseHelper.allClubEvent();
+ assertEquals(1, allClubEvent.size());
+ assertEquals(Type.DOPPELMINI, allClubEvent.get(0).getType());
+ });
}
@Test
+ @Transactional
public void testSaveAndSelectEvent() {
ClubEvent ev = testDatabaseHelper.creteEvent();
-
- testDatabaseHelper.transactional(() -> entityManager.persist(ev));
- List result = testDatabaseHelper.allClubEvent();
- assertEquals(1, result.size());
+ entityManager.persist(ev);
+ afterCommit(() -> {
+ List result = testDatabaseHelper.allClubEvent();
+ assertEquals(1, result.size());
+ });
}
@Test
+ @Transactional
public void testEventWithPerson() {
ClubEvent ev = testDatabaseHelper.creteEvent();
@@ -82,22 +84,23 @@ public class ClubEventDataTest {
ev.setPersons(persons);
}
persons.add(person);
+ entityManager.persist(ev);
- testDatabaseHelper.transactional(() -> entityManager.persist(ev));
-
- List loadEventPersons = testDatabaseHelper.loadEventPersons();
- assertFalse(loadEventPersons.isEmpty());
- ClubeventHasPerson link = loadEventPersons.get(0);
- assertEquals(person.getId(), link.getPersonId());
- assertEquals(ev.getId(), link.getClubEventId());
+ afterCommit(() -> {
+ List loadEventPersons = testDatabaseHelper.loadEventPersons();
+ assertFalse(loadEventPersons.isEmpty());
+ ClubeventHasPerson link = loadEventPersons.get(0);
+ assertEquals(person.getId(), link.getPersonId());
+ assertEquals(ev.getId(), link.getClubEventId());
+ });
}
@Test
+ @Transactional
public void changeEventsPersons() {
ClubEvent ev = testDatabaseHelper.creteEvent();
-
- testDatabaseHelper.transactional(() -> entityManager.persist(ev));
+ entityManager.persist(ev);
Person person = testDatabaseHelper.testInsertPerson();
@@ -106,7 +109,7 @@ public class ClubEventDataTest {
person2.setSurname(person.getSurname() + "_2");
person2.setBirth(LocalDate.now());
- testDatabaseHelper.transactional(() -> entityManager.persist(person2));
+ entityManager.persist(person2);
ClubEvent loaded = entityManager.find(ClubEvent.class, ev.getId());
assertNotNull(loaded);
@@ -115,41 +118,47 @@ public class ClubEventDataTest {
}
loaded.add(person);
- testDatabaseHelper.transactional(() -> entityManager.merge(ev));
+ entityManager.merge(ev);
loaded.add(person2);
- testDatabaseHelper.transactional(() -> entityManager.merge(ev));
+ entityManager.merge(ev);
- List entries = testDatabaseHelper.loadEventPersons();
- assertEquals(2, entries.size());
+ afterCommit(() -> {
+ List entries = testDatabaseHelper.loadEventPersons();
+ assertEquals(2, entries.size());
+ });
}
@Test
+ @Transactional
public void testChangeEventParticipantsRapidly() {
final ClubEvent created = testDatabaseHelper.creteEvent();
- testDatabaseHelper.transactional(() -> {
- entityManager.persist(created);
- });
+ entityManager.persist(created);
- final ClubEvent ev = entityManager.find(ClubEvent.class, created.getId());
- List persons = testDatabaseHelper.insertPersons(6);
- for (Person p : persons) {
- ev.add(p);
- testDatabaseHelper.transactional(() -> entityManager.merge(ev));
- }
- ev.remove(persons.get(2));
- testDatabaseHelper.transactional(() -> entityManager.merge(ev));
+ afterCommit(() -> {
+ final ClubEvent ev = entityManager.find(ClubEvent.class, created.getId());
+ List persons = testDatabaseHelper.insertPersons(6);
+ for (Person p : persons) {
+ ev.add(p);
+ entityManager.merge(ev);
+ }
+ ev.remove(persons.get(2));
+ entityManager.merge(ev);
- ev.remove(persons.get(4));
- testDatabaseHelper.transactional(() -> entityManager.merge(ev));
+ ev.remove(persons.get(4));
+ entityManager.merge(ev);
- ev.getPersons().add(persons.get(2));
- ev.getPersons().add(persons.get(4));
- testDatabaseHelper.transactional(() -> entityManager.merge(ev));
+ ev.getPersons().add(persons.get(2));
+ ev.getPersons().add(persons.get(4));
+ entityManager.merge(ev);
- List result = testDatabaseHelper.loadEventPersons();
- assertEquals(6, result.size());
+ });
+ afterCommit(() -> {
+
+ List result = testDatabaseHelper.loadEventPersons();
+ assertEquals(6, result.size());
+ });
}
}
diff --git a/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/PersonDaoRelativeTest.java b/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/PersonDaoRelativeTest.java
index e645559..26c5450 100644
--- a/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/PersonDaoRelativeTest.java
+++ b/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/PersonDaoRelativeTest.java
@@ -1,10 +1,7 @@
package de.kreth.vaadin.clubhelper.vaadinclubhelper.dao;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
-import java.io.IOException;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.List;
@@ -13,22 +10,22 @@ import javax.persistence.EntityManager;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
-import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
+import org.springframework.transaction.annotation.Transactional;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.tests.TestConfiguration;
+import de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.tests.TestPersonGenerator;
@SpringBootTest
@ContextConfiguration(classes = TestConfiguration.class)
@Tag("spring")
-@Disabled
public class PersonDaoRelativeTest {
@Autowired
@@ -37,51 +34,56 @@ public class PersonDaoRelativeTest {
@Autowired
private EntityManager entityManager;
- @Autowired
- private TestDatabaseHelper testDatabaseHelper;
-
@Autowired
private SessionFactory sessionFactory;
- private Person person1;
-
- private Person person2;
+ private List persons;
@BeforeEach
+ @Transactional
+ @Rollback(false)
public void setUp() throws Exception {
-// testDatabaseHelper.cleanDatabase();
-// List persons = TestPersonGenerator.generatePersonen(2);
-// person1 = persons.get(0);
-// person2 = persons.get(1);
- List resultList = entityManager.createNamedQuery(Person.QUERY_FINDALL, Person.class).getResultList();
- assertFalse(resultList.isEmpty());
- }
+ persons = TestPersonGenerator.generatePersonen(2);
+ for (Person p : persons) {
+ p.setId(0);
+ }
- @AfterEach
- public void clearDatabase() throws IOException {
-// testDatabaseHelper.cleanDatabase();
}
@Test
+ @Transactional
void testLoadPersonById() {
- person1 = entityManager.find(Person.class, Integer.valueOf(1));
- assertNotNull(person1);
- assertEquals(1, person1.getId());
+ for (Person p : persons) {
+ personDao.save(p);
+ }
+ TestDatabaseHelper.afterCommit(() -> {
+ Person person1 = entityManager.find(Person.class, 1);
+ assertNotNull(person1);
+ });
}
@Test
+ @Transactional
void testStorePersonChildRelationship() {
- Session session = sessionFactory.openSession();
- session.doWork(conn -> {
- try (Statement stm = conn.createStatement()) {
- ResultSet rs = stm.executeQuery(
- "SELECT id, person1, person2, TO_PERSON1_RELATION, TO_PERSON2_RELATION, changed, created, deleted FROM relative where person1=1 OR person2=1 and deleted is null");
- while (rs.next()) {
- System.out.println("id=" + rs.getInt("id") + ", person1=" + rs.getInt("person1") + ", person2="
- + rs.getInt("person2") + ", TO_PERSON1_RELATION=" + rs.getString("TO_PERSON1_RELATION"));
+ for (Person p : persons) {
+ personDao.save(p);
+ }
+ TestDatabaseHelper.afterCommit(() -> {
+ Session session = sessionFactory.openSession();
+ session.doWork(conn -> {
+ try (Statement stm = conn.createStatement()) {
+ ResultSet rs = stm.executeQuery(
+ "SELECT id, person1, person2, TO_PERSON1_RELATION, TO_PERSON2_RELATION, changed, created, deleted FROM relative where person1=1 OR person2=1 and deleted is null");
+ while (rs.next()) {
+ System.out.println(
+ "id=" + rs.getInt("id") + ", person1=" + rs.getInt("person1") + ", person2="
+ + rs.getInt("person2") + ", TO_PERSON1_RELATION="
+ + rs.getString("TO_PERSON1_RELATION"));
+ }
}
- }
+ });
});
}
+
}
diff --git a/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/PersonDaoTest.java b/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/PersonDaoTest.java
index c2ad74b..55cd19d 100644
--- a/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/PersonDaoTest.java
+++ b/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/PersonDaoTest.java
@@ -1,22 +1,21 @@
package de.kreth.vaadin.clubhelper.vaadinclubhelper.dao;
+import static de.kreth.vaadin.clubhelper.vaadinclubhelper.dao.TestDatabaseHelper.afterCommit;
import static org.junit.Assert.assertTrue;
import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import java.io.IOException;
import java.time.LocalDate;
import java.util.List;
import javax.persistence.EntityManager;
-import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ContextConfiguration;
+import org.springframework.transaction.annotation.Transactional;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Gender;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person;
@@ -33,14 +32,10 @@ public class PersonDaoTest {
@Autowired
private EntityManager entityManager;
- @Autowired
- private TestDatabaseHelper testDatabaseHelper;
-
private Person person;
@BeforeEach
public void setUp() throws Exception {
- testDatabaseHelper.cleanDatabase();
person = new Person();
person.setPrename("prename");
person.setSurname("surname");
@@ -50,54 +45,58 @@ public class PersonDaoTest {
assertTrue(entityManager.createNamedQuery(Person.QUERY_FINDALL, Person.class).getResultList().isEmpty());
}
- @AfterEach
- public void clearDatabase() throws IOException {
- testDatabaseHelper.cleanDatabase();
- }
-
@Test
+ @Transactional
public void testSave() {
- testDatabaseHelper.transactional(() -> personDao.save(person));
-
- List stored = entityManager.createNamedQuery(Person.QUERY_FINDALL, Person.class).getResultList();
- assertEquals(1, stored.size());
- assertEquals(person, stored.get(0));
- assertEquals(person, personDao.get(person.getId()));
+ personDao.save(person);
+ afterCommit(() -> {
+ List stored = entityManager.createNamedQuery(Person.QUERY_FINDALL, Person.class).getResultList();
+ assertEquals(1, stored.size());
+ assertEquals(person, stored.get(0));
+ assertEquals(person, personDao.get(person.getId()));
+ });
}
@Test
+ @Transactional
public void testUpdate() {
- testDatabaseHelper.transactional(() -> personDao.save(person));
- person.setSurname("surname2");
- person.setPrename("prename2");
+ personDao.save(person);
+ afterCommit(() -> {
+
+ person.setSurname("surname2");
+ person.setPrename("prename2");
- testDatabaseHelper.transactional(() -> personDao.save(person));
+ personDao.save(person);
- List stored = entityManager.createNamedQuery(Person.QUERY_FINDALL, Person.class).getResultList();
- assertEquals(1, stored.size());
- assertEquals(person, stored.get(0));
+ });
+ afterCommit(() -> {
+ List stored = entityManager.createNamedQuery(Person.QUERY_FINDALL, Person.class).getResultList();
+ assertEquals(1, stored.size());
+ assertEquals(person, stored.get(0));
+ });
}
@Test
+ @Transactional
public void testListAll() {
- testDatabaseHelper.transactional(() -> personDao.save(person));
+
+ personDao.save(person);
person = new Person();
person.setSurname("surname2");
person.setPrename("prename2");
person.setBirth(LocalDate.of(2018, 11, 8));
person.setPassword("password");
+ personDao.save(person);
- testDatabaseHelper.transactional(() -> personDao.save(person));
- List stored = personDao.listAll();
- assertEquals(2, stored.size());
+ afterCommit(() -> {
- }
+ List stored = personDao.listAll();
+ assertEquals(2, stored.size());
+ });
- @Test
- public void testPersonGroup() {
- assertNotNull(new GroupDaoImpl());
}
+
}
diff --git a/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/TestDatabaseHelper.java b/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/TestDatabaseHelper.java
index a02027a..377ddab 100644
--- a/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/TestDatabaseHelper.java
+++ b/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/TestDatabaseHelper.java
@@ -1,9 +1,9 @@
package de.kreth.vaadin.clubhelper.vaadinclubhelper.dao;
import java.util.List;
-import java.util.function.Consumer;
-import org.hibernate.Session;
+import org.springframework.transaction.support.TransactionSynchronizationAdapter;
+import org.springframework.transaction.support.TransactionSynchronizationManager;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubEvent;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubeventHasPerson;
@@ -11,15 +11,6 @@ import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person;
public interface TestDatabaseHelper {
- /**
- * executes the given runnable within a jpa Transaction.
- *
- * @param r
- */
- void transactional(Runnable r);
-
- void transactional(Consumer r);
-
List insertPersons(int count);
List createPersons(int count);
@@ -32,5 +23,18 @@ public interface TestDatabaseHelper {
Person testInsertPerson();
- void cleanDatabase();
-}
\ No newline at end of file
+ public static void afterCommit(final Runnable r) {
+
+ TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
+ @Override
+ public void afterCommit() {
+ r.run();
+ }
+ });
+ }
+
+ public static void waitForCommit() {
+ afterCommit(() -> {
+ });
+ }
+}
diff --git a/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/TestDatabaseHelperImpl.java b/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/TestDatabaseHelperImpl.java
index ecf2f3d..b258484 100644
--- a/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/TestDatabaseHelperImpl.java
+++ b/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/TestDatabaseHelperImpl.java
@@ -14,10 +14,8 @@ import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
-import java.util.function.Consumer;
import javax.persistence.EntityManager;
-import javax.persistence.EntityTransaction;
import org.hibernate.Session;
import org.springframework.beans.factory.annotation.Autowired;
@@ -36,28 +34,6 @@ public class TestDatabaseHelperImpl implements TestDatabaseHelper {
@Autowired
protected EntityManager entityManager;
- @Override
- public void cleanDatabase() {
-
- Session session = (Session) entityManager;
- session.doWork(conn -> {
-
- List tableNames = loadTables(conn);
- try (Statement stm = conn.createStatement()) {
-
- stm.addBatch("SET FOREIGN_KEY_CHECKS=0");
- for (String table : tableNames) {
- stm.addBatch("TRUNCATE TABLE " + table);
- }
- stm.addBatch("SET FOREIGN_KEY_CHECKS=1");
- stm.executeBatch();
- }
- if (conn.getAutoCommit() == false) {
- conn.commit();
- }
- });
- }
-
public List loadTables(Connection conn) throws SQLException {
List tableNames = new ArrayList<>();
@@ -71,30 +47,24 @@ public class TestDatabaseHelperImpl implements TestDatabaseHelper {
return tableNames;
}
- /**
- * executes the given runnable within a jpa Transaction.
- *
- * @param r
- */
- @Override
- public void transactional(Runnable r) {
- transactional(session -> r.run());
- }
-
- @Override
- public void transactional(Consumer r) {
-
- Session session = (Session) entityManager;
- EntityTransaction tx = session.getTransaction();
- tx.begin();
- try {
- r.accept(session);
- tx.commit();
- } catch (Exception e) {
- tx.rollback();
- throw e;
- }
- }
+// private void transactional(Runnable r) {
+// transactional(session -> r.run());
+// }
+//
+// private void transactional(Consumer r) {
+//
+// Session session = (Session) entityManager;
+// EntityTransaction tx = session.getTransaction();
+// tx.begin();
+// try {
+// r.accept(session);
+// tx.commit();
+// }
+// catch (Exception e) {
+// tx.rollback();
+// throw e;
+// }
+// }
@Override
public Person testInsertPerson() {
@@ -103,7 +73,7 @@ public class TestDatabaseHelperImpl implements TestDatabaseHelper {
p.setSurname("surname");
p.setBirth(LocalDate.now());
- transactional(() -> entityManager.persist(p));
+ entityManager.persist(p);
return p;
}
@@ -112,11 +82,9 @@ public class TestDatabaseHelperImpl implements TestDatabaseHelper {
final List inserted = createPersons(count);
- transactional(() -> {
- for (Person p : inserted) {
- entityManager.persist(p);
- }
- });
+ for (Person p : inserted) {
+ entityManager.persist(p);
+ }
for (Person p : inserted) {
assertTrue(p.getId() > 0, "not saved: " + p);
}
diff --git a/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/SmokeUITest.java b/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/SmokeUITest.java
new file mode 100644
index 0000000..ed8452a
--- /dev/null
+++ b/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/SmokeUITest.java
@@ -0,0 +1,132 @@
+package de.kreth.vaadin.clubhelper.vaadinclubhelper.ui;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.Mockito.mock;
+
+import java.lang.reflect.Field;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.reactive.AutoConfigureWebTestClient;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.web.reactive.server.EntityExchangeResult;
+import org.springframework.test.web.reactive.server.WebTestClient;
+import org.springframework.test.web.reactive.server.WebTestClient.BodyContentSpec;
+import org.springframework.test.web.reactive.server.WebTestClient.ResponseSpec;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.vaadin.server.VaadinSession;
+
+import de.kreth.googleconnectors.calendar.CalendarAdapter;
+import de.kreth.vaadin.clubhelper.vaadinclubhelper.business.EventBusiness;
+import de.kreth.vaadin.clubhelper.vaadinclubhelper.dao.GroupDao;
+import de.kreth.vaadin.clubhelper.vaadinclubhelper.dao.PersonDao;
+import de.kreth.vaadin.clubhelper.vaadinclubhelper.dao.PflichtenDao;
+import de.kreth.vaadin.clubhelper.vaadinclubhelper.dao.TestDatabaseHelper;
+import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.GroupDef;
+import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person;
+import de.kreth.vaadin.clubhelper.vaadinclubhelper.security.SecurityVerifier;
+import de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.navigation.ClubhelperNavigation;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) // , properties =
+ // "spring.main.web-application-type=reactive"
+@AutoConfigureWebTestClient
+@Tag("spring")
+public class SmokeUITest {
+
+ @Autowired
+ WebTestClient webClient;
+
+ @Autowired
+ PersonDao personDao;
+
+ @Autowired
+ GroupDao groupDao;
+
+ @Autowired
+ EventBusiness eventBusiness;
+
+ @Autowired
+ PflichtenDao pflichtenDao;
+
+ @Autowired
+ SecurityVerifier securityGroupVerifier;
+
+ @Autowired
+ CalendarAdapter calendarAdapter;
+
+ @Autowired
+ ClubhelperNavigation clubhelperNavigation;
+
+ @Test
+ public void autowiredComponentsArePresent() {
+ List autowiredFields = Arrays.asList(getClass().getDeclaredFields()).stream()
+ .filter(f -> f.getAnnotation(Autowired.class) != null)
+ .collect(Collectors.toList());
+
+ for (Field field : autowiredFields) {
+ try {
+ Object object = field.get(this);
+ assertNotNull(object, "Null object in field: " + field);
+ }
+ catch (IllegalArgumentException | IllegalAccessException e) {
+ throw new RuntimeException("Error accessing object in Field " + field, e);
+ }
+ }
+ }
+
+ @Test
+ void databaseIsEmpty() {
+ List allPersons = personDao.listAll();
+ assertEquals(0, allPersons.size());
+ }
+
+ @Test
+ @Transactional
+ void useDatabase() {
+ GroupDef group = new GroupDef();
+ group.setName("admin");
+
+ this.groupDao.save(group);
+ TestDatabaseHelper.afterCommit(() -> {
+ assertEquals(1, groupDao.listAll().size());
+ });
+ }
+
+ @Test
+ void securityGroupVerifierIsLoggedin() {
+ VaadinSession session = mock(VaadinSession.class);
+ VaadinSession.setCurrent(session);
+ assertFalse(securityGroupVerifier.isLoggedin());
+ Person person = new Person();
+ Set groups = new HashSet();
+ groups.add(new GroupDef());
+ person.setGroups(groups);
+ securityGroupVerifier.setLoggedinPerson(person); // must be set and have at least one Group defined.
+ assertTrue(securityGroupVerifier.isLoggedin());
+ }
+
+ @Test
+ void webClientAccess() {
+ ResponseSpec responseSpec = this.webClient.get().uri("/").exchange();
+ responseSpec.expectStatus().isOk();
+ BodyContentSpec body = responseSpec.expectBody();
+ EntityExchangeResult result = body.returnResult();
+ String content = new String(result.getResponseBody());
+ assertFalse(content.isBlank());
+ assertTrue(content.toLowerCase().contains("vaadin"));
+ }
+}
diff --git a/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/tests/TestPersonGenerator.java b/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/tests/TestPersonGenerator.java
index fc64142..c38d2c1 100644
--- a/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/tests/TestPersonGenerator.java
+++ b/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/tests/TestPersonGenerator.java
@@ -10,7 +10,7 @@ public class TestPersonGenerator {
public static List generatePersonen(int count) {
List personen = new ArrayList<>();
- for (int i = 0; i < count; i++) {
+ for (int i = 1; i <= count; i++) {
Person p = new Person();
p.setId(i);
p.setPrename("prename_" + i);