Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.30 KB | None | 0 0
  1. package com.coco.core.bpm;
  2.  
  3. import com.zaxxer.hikari.HikariDataSource;
  4. import lombok.extern.slf4j.Slf4j;
  5. import org.apache.commons.lang3.StringUtils;
  6. import org.junit.*;
  7. import org.junit.runner.RunWith;
  8. import org.junit.runners.MethodSorters;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.beans.factory.support.DefaultListableBeanFactory;
  11. import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
  12. import org.springframework.boot.test.context.SpringBootTest;
  13. import org.springframework.context.ApplicationContext;
  14. import org.springframework.context.ConfigurableApplicationContext;
  15. import org.springframework.context.annotation.AnnotationConfigApplicationContext;
  16. import org.springframework.core.env.ConfigurableEnvironment;
  17. import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
  18. import org.springframework.test.annotation.DirtiesContext;
  19. import org.springframework.test.context.junit4.SpringRunner;
  20. import org.springframework.test.web.servlet.MockMvc;
  21.  
  22. import javax.sql.DataSource;
  23.  
  24. import java.sql.SQLException;
  25.  
  26. import static com.coco.core.bpm.Constant.PLAT_TENANT;
  27. import static com.coco.core.bpm.Constant.TEST_TENANT;
  28. import static com.coco.core.bpm.DbSetupHelper.asByteArrayResource;
  29. import static com.coco.core.bpm.DbSetupHelper.loadWithSchema;
  30.  
  31.  
  32. @RunWith(SpringRunner.class)
  33. @SpringBootTest(
  34. classes = {Launcher.class, TestConfig.class}
  35. )
  36. @AutoConfigureMockMvc
  37. @FixMethodOrder(MethodSorters.NAME_ASCENDING)
  38. @DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
  39. @Slf4j
  40. public abstract class BaseTest {
  41.  
  42. protected static HikariDataSource tenantTestDbSetupDataSource;
  43. protected static HikariDataSource platTestDbSetupDataSource;
  44. private static ApplicationContext applicationContext;
  45. @Autowired
  46. private DefaultListableBeanFactory beanFactory;
  47. @Autowired
  48. protected MockMvc mvc;
  49.  
  50. @BeforeClass
  51. public static void init(){
  52. applicationContext = new AnnotationConfigApplicationContext(DbTestSetupConfig.class);
  53. ConfigurableEnvironment env = (ConfigurableEnvironment) applicationContext.getEnvironment();
  54. env.getSystemProperties().put("coco.file.repo.props", "[{\"repo.root\": \"/files\"}]");
  55. }
  56.  
  57. @Before
  58. public void setUp() throws Exception {
  59.  
  60. tenantTestDbSetupDataSource = applicationContext.getBean("tenantTestDbSetupDataSource", HikariDataSource.class);
  61. platTestDbSetupDataSource = applicationContext.getBean("platformTestDbSetupDataSource", HikariDataSource.class);
  62.  
  63. log.info("Started base setup");
  64. log.info("Truncating test tables");
  65.  
  66. ResourceDatabasePopulator populator = new ResourceDatabasePopulator();
  67. populator.setSeparator("/");
  68. populator.addScripts(
  69. asByteArrayResource(loadWithSchema("db/init/clearTables.sql", TEST_TENANT))
  70.  
  71. );
  72. populator.execute(tenantTestDbSetupDataSource);
  73.  
  74. ResourceDatabasePopulator platformPopulator = new ResourceDatabasePopulator();
  75. platformPopulator.setSeparator("/");
  76. platformPopulator.addScripts(
  77. asByteArrayResource(loadWithSchema("db/init/clearTables.sql", PLAT_TENANT))
  78.  
  79. );
  80. platformPopulator.execute(platTestDbSetupDataSource);
  81.  
  82. if (StringUtils.isNotEmpty(getInitDataPath()) && StringUtils.isNotEmpty(getInitDataSchemaName())) {
  83. ResourceDatabasePopulator initData = new ResourceDatabasePopulator();
  84. initData.addScripts(
  85. asByteArrayResource(loadWithSchema(getInitDataPath(), getInitDataSchemaName()))
  86. );
  87. initData.execute(tenantTestDbSetupDataSource);
  88. }
  89. log.info("Finished base setup");
  90. }
  91.  
  92. public abstract String getInitDataPath();
  93.  
  94. public abstract String getInitDataSchemaName();
  95.  
  96. // @After
  97. // public void clearConnections() {
  98. // log.info("clear connections");
  99. //
  100. // }
  101. //
  102. @AfterClass
  103. public static void closeContext(){
  104. try {
  105. platTestDbSetupDataSource.close();
  106. tenantTestDbSetupDataSource.close();
  107. } catch (Exception e) {
  108. log.error(e.getLocalizedMessage());
  109. }
  110. ((ConfigurableApplicationContext)applicationContext).close();
  111. }
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement