/
Paff
/
declarant
Обзор
Документация
Войти
/
Paff
/
declarant
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
tests/test_cert_parser_metadata.py
111 строк
4 KB
1pash1985-gif
fix: Task 1 review — AWB no-space, ETHAM multi-word variety, precompiled regexes
03 авг 2026, 10:11
03 авг 2026, 10:11
1de6d7b
Код
Авторство
О чём код?
import sys from pathlib import Path from unittest.mock import MagicMock sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) from cert_parser import _extract_page_meta, _normalize_awb, _KE_ETHAM_TABLE_LINE def test_normalize_awb(): assert _normalize_awb('176-2825 7471') == '176-2825-7471' assert _normalize_awb('157 5629 3742') == '157-5629-3742' assert _normalize_awb('157-5629-3742') == '157-5629-3742' # No-space AWB format: "006-45396912" → "006-4539-6912" assert _normalize_awb('006-45396912') == '006-4539-6912' assert _normalize_awb('no awb') == '' def test_extract_page_meta_awb(): page = MagicMock() page.extract_text.return_value = 'AWB NUMBER: 176-2825 7471\nsome text' meta = _extract_page_meta(page, 0, {}) assert meta.awb == '176-2825-7471' assert '176-2825-7471' in meta.awb_candidates def test_extract_page_meta_eur1(): page = MagicMock() page.extract_text.return_value = 'EUR1-B1059064\nMOVEMENT CERTIFICATE' meta = _extract_page_meta(page, 2, {}) assert 'B1059064' in meta.eur1_numbers def test_extract_page_meta_etham(): page = MagicMock() page.extract_text.return_value = ( 'EFE-980\n' 'INVOICE NO. 1234\n' 'FARM BOXES VARIETY STEMS\n' 'BARAKA 3 roses 1260\n' ) meta = _extract_page_meta(page, 1, {}) assert meta.etham_invoice == 'EFE-980' assert meta.has_etham_table is True assert 'EFE-980' in meta.invoice_numbers def test_extract_page_meta_etham_multi_word_variety(): """ETHAM table line with two-word variety name like 'RED NAOMI'.""" m = _KE_ETHAM_TABLE_LINE.match('BARAKA 3 RED NAOMI 1260') assert m is not None, "ETHAM table line should match multi-word variety" assert m.group('farm') == 'BARAKA' assert m.group('boxes') == '3' assert m.group('flower') == 'RED NAOMI' assert m.group('stems') == '1260' # Also verify via _extract_page_meta page = MagicMock() page.extract_text.return_value = ( 'FARM BOXES VARIETY STEMS\n' 'BARAKA 3 RED NAOMI 1260\n' ) meta = _extract_page_meta(page, 0, {}) assert meta.has_etham_table is True def test_extract_page_meta_phyto(): page = MagicMock() page.extract_text.return_value = '526829\nMILELE FLOWERS LIMITED\nsome content' meta = _extract_page_meta(page, 0, {}) assert meta.phyto_cert_number == '526829' def test_extract_page_meta_proforma(): page = MagicMock() page.extract_text.return_value = 'PROFORMA IFC-123456\nBOGOTA' meta = _extract_page_meta(page, 0, {}) assert 'IFC-123456' in meta.proforma_numbers def test_extract_page_meta_empty(): """Page with empty text returns a default CertPageMeta.""" page = MagicMock() page.extract_text.return_value = '' meta = _extract_page_meta(page, 0, {}) assert meta.awb == '' assert meta.awb_candidates == [] assert meta.eur1_numbers == [] assert meta.dian_numbers == [] assert meta.phyto_cert_number == '' assert meta.invoice_numbers == [] assert meta.proforma_numbers == [] assert meta.etham_invoice == '' assert meta.has_etham_table is False assert meta.has_milele_table is False def test_extract_page_meta_multiple_awb_candidates(): """Page with two AWB numbers returns both in awb_candidates.""" page = MagicMock() page.extract_text.return_value = ( 'AWB NUMBER: 176-2825-7471\n' 'some text\n' 'AWB: 157-5629-3742\n' ) meta = _extract_page_meta(page, 0, {}) # Both AWBs should appear as candidates assert '176-2825-7471' in meta.awb_candidates assert '157-5629-3742' in meta.awb_candidates # The explicit-labeled one should be the primary awb assert meta.awb in ('176-2825-7471', '157-5629-3742')