test_excel_export_helpers.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import pytest
  2. from app.utils.excel_export import (
  3. EXPORT_MAX_ROWS,
  4. ExportColumn,
  5. ExportValidationError,
  6. filter_export_columns,
  7. assert_export_row_count,
  8. )
  9. COLS = [
  10. ExportColumn(title="账号", field="userNo"),
  11. ExportColumn(title="姓名", field="nickName"),
  12. ExportColumn(title="状态", field="status", dict_type="sys_status"),
  13. ]
  14. def test_filter_export_columns_keeps_order_and_ignores_unknown():
  15. out = filter_export_columns(COLS, ["status", "unknown", "userNo"])
  16. assert [c.field for c in out] == ["status", "userNo"]
  17. def test_filter_export_columns_none_returns_all():
  18. out = filter_export_columns(COLS, None)
  19. assert [c.field for c in out] == ["userNo", "nickName", "status"]
  20. def test_assert_export_row_count_empty():
  21. with pytest.raises(ExportValidationError) as ei:
  22. assert_export_row_count(0)
  23. assert "没有可导出的数据" in str(ei.value)
  24. def test_assert_export_row_count_over_limit():
  25. with pytest.raises(ExportValidationError) as ei:
  26. assert_export_row_count(EXPORT_MAX_ROWS + 1)
  27. assert "50000" in str(ei.value)
  28. def test_assert_export_row_count_ok():
  29. assert_export_row_count(1)
  30. assert_export_row_count(EXPORT_MAX_ROWS)