test_market_payment_indexes_sql.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. from pathlib import Path
  2. SQL_PATH = (
  3. Path(__file__).resolve().parents[2]
  4. / 'docs/sql/migrations/2026-10-11-market-payment-indexes.sql'
  5. )
  6. def test_market_payment_index_migration_is_mysql57_idempotent_and_repairs_names():
  7. sql = SQL_PATH.read_text(encoding='utf-8')
  8. assert 'CREATE INDEX IF NOT EXISTS' not in sql.upper()
  9. assert sql.count('information_schema.statistics') >= 2
  10. assert sql.count('GROUP_CONCAT(column_name ORDER BY seq_in_index') >= 2
  11. assert sql.count('PREPARE stmt FROM @ddl') >= 2
  12. assert sql.count('MIN(non_unique)') >= 2
  13. assert sql.count('MAX(non_unique)') >= 2
  14. assert sql.count("SUM(CASE WHEN sub_part IS NOT NULL THEN 1 ELSE 0 END)") >= 2
  15. assert sql.count('COUNT(DISTINCT index_type)') >= 2
  16. assert sql.count('MIN(index_type)') >= 2
  17. assert sql.count("@index_non_unique_min = 1") >= 2
  18. assert sql.count("@index_non_unique_max = 1") >= 2
  19. assert sql.count("@index_prefix_columns = 0") >= 2
  20. assert sql.count("@index_type_count = 1") >= 2
  21. assert sql.count("@index_type = 'BTREE'") >= 2
  22. assert 'DROP INDEX idx_biz_protocol_payment_schedule_market_scope' in sql
  23. assert 'DROP INDEX idx_biz_protocol_payment_transfer_market_scope' in sql
  24. def test_market_payment_index_migration_has_exact_required_column_orders():
  25. sql = SQL_PATH.read_text(encoding='utf-8')
  26. assert "'tenant_no,sample_payment_id,del_flag'" in sql
  27. assert "'tenant_no,schedule_id,del_flag'" in sql
  28. assert (
  29. 'idx_biz_protocol_payment_schedule_market_scope '
  30. '(tenant_no, sample_payment_id, del_flag)'
  31. ) in sql
  32. assert (
  33. 'idx_biz_protocol_payment_transfer_market_scope '
  34. '(tenant_no, schedule_id, del_flag)'
  35. ) in sql