Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.coco.core.bpm;
- import com.zaxxer.hikari.HikariDataSource;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import org.junit.*;
- import org.junit.runner.RunWith;
- import org.junit.runners.MethodSorters;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.support.DefaultListableBeanFactory;
- import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
- import org.springframework.boot.test.context.SpringBootTest;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.ConfigurableApplicationContext;
- import org.springframework.context.annotation.AnnotationConfigApplicationContext;
- import org.springframework.core.env.ConfigurableEnvironment;
- import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
- import org.springframework.test.annotation.DirtiesContext;
- import org.springframework.test.context.junit4.SpringRunner;
- import org.springframework.test.web.servlet.MockMvc;
- import javax.sql.DataSource;
- import java.sql.SQLException;
- import static com.coco.core.bpm.Constant.PLAT_TENANT;
- import static com.coco.core.bpm.Constant.TEST_TENANT;
- import static com.coco.core.bpm.DbSetupHelper.asByteArrayResource;
- import static com.coco.core.bpm.DbSetupHelper.loadWithSchema;
- @RunWith(SpringRunner.class)
- @SpringBootTest(
- classes = {Launcher.class, TestConfig.class}
- )
- @AutoConfigureMockMvc
- @FixMethodOrder(MethodSorters.NAME_ASCENDING)
- @DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
- @Slf4j
- public abstract class BaseTest {
- protected static HikariDataSource tenantTestDbSetupDataSource;
- protected static HikariDataSource platTestDbSetupDataSource;
- private static ApplicationContext applicationContext;
- @Autowired
- private DefaultListableBeanFactory beanFactory;
- @Autowired
- protected MockMvc mvc;
- @BeforeClass
- public static void init(){
- applicationContext = new AnnotationConfigApplicationContext(DbTestSetupConfig.class);
- ConfigurableEnvironment env = (ConfigurableEnvironment) applicationContext.getEnvironment();
- env.getSystemProperties().put("coco.file.repo.props", "[{\"repo.root\": \"/files\"}]");
- }
- @Before
- public void setUp() throws Exception {
- tenantTestDbSetupDataSource = applicationContext.getBean("tenantTestDbSetupDataSource", HikariDataSource.class);
- platTestDbSetupDataSource = applicationContext.getBean("platformTestDbSetupDataSource", HikariDataSource.class);
- log.info("Started base setup");
- log.info("Truncating test tables");
- ResourceDatabasePopulator populator = new ResourceDatabasePopulator();
- populator.setSeparator("/");
- populator.addScripts(
- asByteArrayResource(loadWithSchema("db/init/clearTables.sql", TEST_TENANT))
- );
- populator.execute(tenantTestDbSetupDataSource);
- ResourceDatabasePopulator platformPopulator = new ResourceDatabasePopulator();
- platformPopulator.setSeparator("/");
- platformPopulator.addScripts(
- asByteArrayResource(loadWithSchema("db/init/clearTables.sql", PLAT_TENANT))
- );
- platformPopulator.execute(platTestDbSetupDataSource);
- if (StringUtils.isNotEmpty(getInitDataPath()) && StringUtils.isNotEmpty(getInitDataSchemaName())) {
- ResourceDatabasePopulator initData = new ResourceDatabasePopulator();
- initData.addScripts(
- asByteArrayResource(loadWithSchema(getInitDataPath(), getInitDataSchemaName()))
- );
- initData.execute(tenantTestDbSetupDataSource);
- }
- log.info("Finished base setup");
- }
- public abstract String getInitDataPath();
- public abstract String getInitDataSchemaName();
- // @After
- // public void clearConnections() {
- // log.info("clear connections");
- //
- // }
- //
- @AfterClass
- public static void closeContext(){
- try {
- platTestDbSetupDataSource.close();
- tenantTestDbSetupDataSource.close();
- } catch (Exception e) {
- log.error(e.getLocalizedMessage());
- }
- ((ConfigurableApplicationContext)applicationContext).close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement