package de.superx.spring.jdbc.repositories; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.io.File; import java.sql.SQLException; import org.junit.Before; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.FileSystemResource; import org.springframework.jdbc.datasource.init.ScriptException; import org.springframework.jdbc.datasource.init.ScriptUtils; import org.springframework.test.context.ContextConfiguration; import org.springframework.transaction.annotation.Transactional; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.json.JsonMapper; import de.superx.BaseDbTest; import de.superx.TestApplicationConfigPg; import de.superx.jdbc.entity.kennx.Lieferfreigabe; import de.superx.jdbc.entity.kennx.LieferfreigabeStichtagsart; import de.superx.jdbc.repository.kennx.LieferfreigabeRepository; /** * Obsolet durch kennConfigApiTest. * Bei Wartungsaufwand können die Tests rausgenommen werden und es muss nur noch kennConfigApi gepflegt werden. * */ @Transactional //@ContextConfiguration(classes = { TestApplicationConfigPg.class }) public class LieferfreigabeTest extends BaseDbTest { static String RW_TEST_PATH = String.join(File.separator, new String[] {"test", "resources", "db", "fixtures", "kennx" }); @Autowired private LieferfreigabeRepository repo; private static String kennx_tables = String.join(File.separator, new String[] {"test", "resources", "db", "fixtures", "kennx", "create_kennx_tables.sql" }); @Before public void createSchema() throws ScriptException, SQLException { ScriptUtils.executeSqlScript(dataSource.getConnection(), new FileSystemResource(new File(kennx_tables))); } @Test public void testCreateLieferfreigabe() { Lieferfreigabe l = new Lieferfreigabe(); l = repo.save(l); Integer id = l.tid; assertNotNull("id is generated", id); } @Test public void testCreateLieferfreigabeHochschulerfolgsbericht() { String file = "lieferfreigabeHochschulerfolgsbericht"; Lieferfreigabe lieferfreigabe = readStoredReportFromJson(file); int numberOfStichtagsarten = lieferfreigabe.lieferfreigabeStichtagsart.size(); lieferfreigabe = repo.save(lieferfreigabe); Integer id = lieferfreigabe.tid; int n = repo.countHsForLieferfreigabe(lieferfreigabe.tid.intValue()); assertNotNull("id is generated", id); assertEquals("Count hs", 1, n); n = repo.countForStichtagsarten(lieferfreigabe.tid.intValue()); assertEquals("Count Stichtagsarten", numberOfStichtagsarten, n); for(LieferfreigabeStichtagsart stichtagsart : lieferfreigabe.lieferfreigabeStichtagsart) { n = repo.countForBezugszeiten(stichtagsart.tid.intValue()); assertTrue("", n >= 1); assertTrue("", n <= 4); } } @Test public void testDeleteLieferfreigabe() { String file = "lieferfreigabeHochschulerfolgsbericht"; Lieferfreigabe lieferfreigabe = readStoredReportFromJson(file); lieferfreigabe = repo.save(lieferfreigabe); Integer id = lieferfreigabe.tid; repo.deleteById(id); int n = repo.countHsForLieferfreigabe(id.intValue()); assertEquals("Count hs", 0, n); n = repo.countForStichtagsarten(id.intValue()); assertEquals("Count Stichtagsarten", 0, n); for(LieferfreigabeStichtagsart stichtagsart : lieferfreigabe.lieferfreigabeStichtagsart) { n = repo.countForBezugszeiten(stichtagsart.tid.intValue()); assertEquals("Count Bezugszeiten", 0, n); } } public static Lieferfreigabe readStoredReportFromJson(String name) { String path = String.join(File.separator, new String[] {RW_TEST_PATH, "req", name + ".json"}); ObjectMapper mapper = JsonMapper.builder().findAndAddModules().build(); Lieferfreigabe lieferfreigabe = null; File test = new File (path); try { lieferfreigabe = mapper.readValue(test, Lieferfreigabe.class); } catch (Exception e) { e.printStackTrace(); } return lieferfreigabe; } }