Experimental Tests

master
Markus Kreth 7 years ago
parent 0e5e93bb8c
commit 76c3754931
  1. 56
      src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/ClubEventDaoTest.java
  2. 110
      src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/ClubEventDataTest.java
  3. 60
      src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/dao/DatabaseTestBean.java

@ -0,0 +1,56 @@
package de.kreth.vaadin.clubhelper.vaadinclubhelper.dao;
import static org.junit.Assert.assertEquals;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.List;
import org.hibernate.query.Query;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
import org.springframework.test.context.junit4.SpringRunner;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubEvent;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubEventBuilder;
@RunWith(SpringRunner.class)
@DataJpaTest
@EnableAutoConfiguration
@Ignore
public class ClubEventDaoTest extends AbstractDatabaseTest {
@Autowired
private ClubEventDao dao;
@Autowired
private TestEntityManager entityManager;
@Test
public void storeEvent() {
dao.save(creteEvent());
Query<ClubEvent> query = session.createNamedQuery("ClubEvent.findAll",
ClubEvent.class);
List<ClubEvent> result = query.list();
assertEquals(1, result.size());
}
private ClubEvent creteEvent() {
ClubEvent ev = ClubEventBuilder.builder().withId("id").withAllDay(true)
.withCaption("caption").withDescription("description")
.withStart(ZonedDateTime.of(2018, 8, 13, 0, 0, 0, 0,
ZoneId.systemDefault()))
.withEnd(ZonedDateTime.of(2018, 8, 13, 0, 0, 0, 0,
ZoneId.systemDefault()))
.withiCalUID("iCalUID")
.withOrganizerDisplayName("organizerDisplayName").build();
return ev;
}
}

@ -1,24 +1,37 @@
package de.kreth.vaadin.clubhelper.vaadinclubhelper.dao; package de.kreth.vaadin.clubhelper.vaadinclubhelper.dao;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.ZonedDateTime; import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
import org.hibernate.IdentifierLoadAccess;
import org.hibernate.Transaction; import org.hibernate.Transaction;
import org.hibernate.jdbc.Work;
import org.hibernate.query.Query; import org.hibernate.query.Query;
import org.junit.Test; import org.junit.Test;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubEvent; import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubEvent;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubEventBuilder; import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubEventBuilder;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubeventHasPerson;
import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person; import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person;
public class ClubEventDaoImplTest extends AbstractDatabaseTest { public class ClubEventDataTest extends AbstractDatabaseTest {
@Test public Person testInsertPerson() {
public void testInsertPerson() {
Person p = new Person(); Person p = new Person();
p.setPrename("prename"); p.setPrename("prename");
p.setSurname("surname"); p.setSurname("surname");
@ -26,6 +39,7 @@ public class ClubEventDaoImplTest extends AbstractDatabaseTest {
Transaction tx = session.beginTransaction(); Transaction tx = session.beginTransaction();
session.save(p); session.save(p);
tx.commit(); tx.commit();
return p;
} }
@Test @Test
@ -51,6 +65,96 @@ public class ClubEventDaoImplTest extends AbstractDatabaseTest {
assertEquals(1, result.size()); assertEquals(1, result.size());
} }
@Test
public void testEventWithPerson() {
ClubEvent ev = creteEvent();
Person person = testInsertPerson();
Set<Person> persons = ev.getPersons();
if (persons == null) {
persons = new HashSet<>();
ev.setPersons(persons);
}
persons.add(person);
Transaction tx = session.beginTransaction();
session.save(ev);
tx.commit();
List<ClubeventHasPerson> loadEventPersons = loadEventPersons();
assertFalse(loadEventPersons.isEmpty());
ClubeventHasPerson link = loadEventPersons.get(0);
assertEquals(person.getId(), link.getPersonId());
assertEquals(ev.getId(), link.getClubEventId());
}
private List<ClubeventHasPerson> loadEventPersons() {
final AtomicBoolean finishedWork = new AtomicBoolean(false);
List<ClubeventHasPerson> link = new ArrayList<>();
session.doWork(new Work() {
@Override
public void execute(Connection connection) throws SQLException {
Statement stm = connection.createStatement();
ResultSet rs = stm.executeQuery("select * from clubevent_has_person");
while (rs.next()) {
ClubeventHasPerson ep = new ClubeventHasPerson();
ep.setClubEventId(rs.getString("clubevent_id"));
ep.setPersonId(rs.getInt("person_id"));
link.add(ep);
}
finishedWork.set(true);
}
});
assertTrue(finishedWork.get());
return link;
}
@Test
public void changeEventsPersons() {
ClubEvent ev = creteEvent();
Transaction tx = session.beginTransaction();
session.save(ev);
tx.commit();
Person person = testInsertPerson();
Person person2 = new Person();
person2.setId(person.getId() + 1);
person2.setPrename(person.getPrename() + "_2");
person2.setSurname(person.getSurname() + "_2");
person2.setBirth(new Date());
tx = session.beginTransaction();
session.save(person2);
tx.commit();
IdentifierLoadAccess<ClubEvent> idLoadAccess = session.byId(ClubEvent.class);
ClubEvent loaded = idLoadAccess.load(ev.getId());
assertNotNull(loaded);
if (loaded.getPersons() == null) {
loaded.setPersons(new HashSet<>());
}
loaded.getPersons().add(person);
tx = session.beginTransaction();
session.update(ev);
tx.commit();
loaded.getPersons().add(person2);
tx = session.beginTransaction();
session.update(ev);
tx.commit();
List<ClubeventHasPerson> entries = loadEventPersons();
assertEquals(2, entries.size());
}
private ClubEvent creteEvent() { private ClubEvent creteEvent() {
ClubEvent ev = ClubEventBuilder.builder().withId("id").withAllDay(true) ClubEvent ev = ClubEventBuilder.builder().withId("id").withAllDay(true)
.withCaption("caption").withDescription("description") .withCaption("caption").withDescription("description")

@ -0,0 +1,60 @@
package de.kreth.vaadin.clubhelper.vaadinclubhelper.dao;
import java.io.IOException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
import org.springframework.context.annotation.Bean;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.core.io.support.ResourcePatternUtils;
import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
@SpringBootConfiguration
@EnableAutoConfiguration
public class DatabaseTestBean {
@Autowired
private ResourceLoader rl;
@Bean
public LocalSessionFactoryBean sessionFactory() throws Exception {
MyTestDatabase tdb = new MyTestDatabase();
Configuration config = tdb.createConfig();
LocalSessionFactoryBean sessionFactoryBean = new LocalSessionFactoryBean();
sessionFactoryBean.setHibernateProperties(config.getProperties());
// Class<?>[] dataClasses = {Adress.class, Attendance.class, Contact.class, DeletedEntry.class, GroupDef.class, Person.class, Persongroup.class, Relative.class, Startpaesse.class, StartpassStartrechte.class, Version.class};
// sessionFactoryBean.setMappingLocations(loadResources());
// sessionFactoryBean.setAnnotatedClasses(dataClasses);
return sessionFactoryBean;
}
public Resource[] loadResources() {
Resource[] resources = null;
try {
resources = ResourcePatternUtils.getResourcePatternResolver(rl)
.getResources("classpath:/schema/*.hbm.xml");
} catch (IOException e) {
throw new RuntimeException(e);
}
return resources;
}
class MyTestDatabase extends AbstractDatabaseTest {
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public Session getSession() {
return session;
}
}
}
Loading…
Cancel
Save