autotrain/tests/test_invoice_ticket_count.py
xinxin6623 9eb6778a6f feat: web UI enhancements, device calibration, phone control manual, and skills directory
- web_ui.py: major refactor with improved runner, mode selection, progress tracking
- scripts: add device_runtime, device_calibrate, calibration_trace, record_android_flow
- docs: add phone-control-manual, update device-adaptation and windows-migration
- invoice_tool: enhance H5 automation flow and visual fallback
- calibrate.py: expand calibration capabilities
- add skills/ and tests/ directories
- remove obsolete .opencode/skills/invoice-wrapup

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-12 22:14:56 +08:00

51 lines
1.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from __future__ import annotations
import sys
import tempfile
import unittest
from pathlib import Path
SCRIPTS = Path(__file__).resolve().parents[1] / "scripts"
if str(SCRIPTS) not in sys.path:
sys.path.insert(0, str(SCRIPTS))
import invoice_tool
class InvoiceTicketCountTests(unittest.TestCase):
def test_extract_ticket_count_from_recorded_invoice_page(self) -> None:
self.assertEqual(
invoice_tool.extract_invoice_ticket_count("发票信息\n开票数量\n2张\n提交"),
2,
)
def test_extract_ticket_count_allows_one_ticket(self) -> None:
self.assertEqual(invoice_tool.extract_invoice_ticket_count("开票数量1 张"), 1)
def test_extract_ticket_count_returns_none_when_page_has_no_count(self) -> None:
self.assertIsNone(invoice_tool.extract_invoice_ticket_count("发票信息\n提交"))
def test_extract_ticket_count_rejects_implausible_value(self) -> None:
with self.assertRaisesRegex(RuntimeError, "异常"):
invoice_tool.extract_invoice_ticket_count("开票数量 99张")
def test_old_progress_csv_is_upgraded_without_losing_row_data(self) -> None:
with tempfile.TemporaryDirectory() as directory:
path = Path(directory) / "progress.csv"
path.write_text(
"masked_name,real_name,id_last8,status,reason,updated_at\n"
"张*三,张三,12345678,in_progress,,2026-07-12 21:00:00\n",
encoding="utf-8-sig",
)
rows = invoice_tool.read_progress(path)
rows[0]["ticket_count"] = "2"
invoice_tool.write_progress(rows, path)
upgraded = invoice_tool.read_progress(path)
self.assertEqual(upgraded[0]["real_name"], "张三")
self.assertEqual(upgraded[0]["ticket_count"], "2")
if __name__ == "__main__":
unittest.main()