OmgPaymentAttemptMapperContractTest.java 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package com.ruoyi.system.omgpay.mapper;
  2. import org.junit.jupiter.api.Test;
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.nio.charset.StandardCharsets;
  6. import java.nio.file.Files;
  7. import java.nio.file.Path;
  8. import java.nio.file.Paths;
  9. import java.util.List;
  10. import java.util.Objects;
  11. import static org.junit.jupiter.api.Assertions.assertFalse;
  12. import static org.junit.jupiter.api.Assertions.assertTrue;
  13. class OmgPaymentAttemptMapperContractTest {
  14. @Test
  15. void mapperAndSqlOnlyReferenceNewAttemptStorage() throws IOException {
  16. String xml = loadMapperXml();
  17. String sql = loadSql();
  18. assertTrue(xml.contains("FROM pos_order"));
  19. assertTrue(xml.contains("FOR UPDATE"));
  20. assertTrue(xml.contains("FROM pos_order_omg_attempt"));
  21. assertFalse(xml.contains("pos_order_omg_payment"));
  22. assertFalse(xml.contains("pos_order_omg_refund"));
  23. assertTrue(sql.contains("UNIQUE KEY uk_omg_attempt_trade_no"));
  24. assertTrue(sql.contains("UNIQUE KEY uk_omg_attempt_active_dd"));
  25. assertTrue(sql.contains("IF(attempt_status = 0, dd_id, NULL)"));
  26. }
  27. private String loadMapperXml() throws IOException {
  28. try (InputStream inputStream = getClass().getClassLoader()
  29. .getResourceAsStream("mapper/omgpay/OmgPaymentAttemptMapper.xml")) {
  30. return new String(Objects.requireNonNull(inputStream,
  31. "mapper xml not found").readAllBytes(), StandardCharsets.UTF_8);
  32. }
  33. }
  34. private String loadSql() throws IOException {
  35. for (Path candidate : sqlCandidates()) {
  36. if (Files.exists(candidate)) {
  37. return Files.readString(candidate, StandardCharsets.UTF_8);
  38. }
  39. }
  40. throw new IOException("updatesql/sql.md not found");
  41. }
  42. private List<Path> sqlCandidates() {
  43. return List.of(
  44. Paths.get("updatesql", "sql.md"),
  45. Paths.get("..", "updatesql", "sql.md")
  46. );
  47. }
  48. }