mirror of
https://github.com/Sea-Haven-Industries/procurement-ingest.git
synced 2026-09-30 17:43:14 +00:00
Some checks are pending
Deploy / deploy (push) Waiting to run
The repo had no automated tests, so regressions in the email parsing pipeline could only be caught manually. The reusable ci-python-sam workflow already supports a run-tests input at the pinned SHA; enable it and add a first suite covering the pure functions pad_zip and parse_raw_email. tests/conftest.py sets AWS_DEFAULT_REGION and dummy credentials before any handler import because the handlers create boto3 clients at module import time, and loads each handler.py via importlib under a unique module name since the files share a basename. pytest.ini scopes discovery to tests/ so the manual test_local.py script at the repo root is not collected.
29 lines
865 B
Python
29 lines
865 B
Python
"""Tests for pad_zip in the PO email processor."""
|
|
|
|
import pytest
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
("raw", "expected"),
|
|
[
|
|
# Missing values pass through untouched
|
|
(None, None),
|
|
("", ""),
|
|
# Leading zeros restored (Coupa drops them: "MA 2149" -> "02149")
|
|
("2149", "02149"),
|
|
("7001", "07001"),
|
|
("501", "00501"),
|
|
# Already-valid 5-digit zips are unchanged
|
|
("85704", "85704"),
|
|
("02149", "02149"),
|
|
# Zip+4: leading zeros restored on the base, suffix preserved
|
|
("2149-1234", "02149-1234"),
|
|
("85704-1234", "85704-1234"),
|
|
# Surrounding whitespace is handled
|
|
(" 2149 ", "02149"),
|
|
# Non-numeric values are left alone
|
|
("ABC12", "ABC12"),
|
|
],
|
|
)
|
|
def test_pad_zip(po_handler, raw, expected):
|
|
assert po_handler.pad_zip(raw) == expected
|