82 lines
3.1 KiB
Python
82 lines
3.1 KiB
Python
#!/usr/bin/env python3
|
|
from __future__ import annotations
|
|
|
|
import sys
|
|
import unittest
|
|
from pathlib import Path
|
|
from types import SimpleNamespace
|
|
|
|
sys.path.insert(0, str(Path(__file__).resolve().parent))
|
|
sys.modules.setdefault("clickhouse_connect", SimpleNamespace(get_client=lambda **_: None))
|
|
|
|
import load_1c_exports as loader
|
|
|
|
|
|
class Load1CExportsTests(unittest.TestCase):
|
|
def test_business_events_mapping(self) -> None:
|
|
row = {
|
|
"event_time": "2026-05-22T12:00:00Z",
|
|
"event_id": "evt-1",
|
|
"infobase": "ИБ-1",
|
|
"company_entity_key": "baseid:abc",
|
|
"organization": "ООО Тест",
|
|
"department": "Продажи",
|
|
"doc_id": "doc-1",
|
|
"doc_number": "0001",
|
|
"doc_type": "Реализация",
|
|
"registrar": "DOC-1",
|
|
"operation_type": "sale",
|
|
"event_kind": "posting",
|
|
"author": "user1",
|
|
"counterparty": "Контрагент",
|
|
"counterparty_inn": "7700000000",
|
|
"account_dt": "62.01",
|
|
"account_ct": "90.01",
|
|
"amount": "125000.50",
|
|
"line_no": "2",
|
|
"evidence_ref": "reglog:1",
|
|
}
|
|
mapped = loader.map_core_row("business_events", "events.jsonl", row)
|
|
self.assertEqual(mapped[1], "evt-1")
|
|
self.assertEqual(mapped[3], "baseid:abc")
|
|
self.assertEqual(mapped[7], "0001")
|
|
self.assertEqual(mapped[15], "62.01")
|
|
self.assertEqual(mapped[17], 125000.5)
|
|
self.assertEqual(mapped[19], 2)
|
|
self.assertEqual(mapped[21], "events.jsonl")
|
|
|
|
def test_document_changes_mapping(self) -> None:
|
|
row = {
|
|
"change_time": "2026-05-22T12:00:00Z",
|
|
"change_id": "chg-1",
|
|
"infobase": "ИБ-1",
|
|
"company_entity_key": "basepath:c:/1c/base",
|
|
"organization": "ООО Тест",
|
|
"document_id": "doc-2",
|
|
"document_number": "0002",
|
|
"document_type": "Поступление",
|
|
"change_kind": "requisites_change",
|
|
"field_name": "Контрагент",
|
|
"user": "user2",
|
|
"before_value": "Старый",
|
|
"after_value": "Новый",
|
|
"risk_tag": "counterparty_change",
|
|
"evidence_ref": "audit:2",
|
|
}
|
|
mapped = loader.map_core_row("document_changes", "changes.jsonl", row)
|
|
self.assertEqual(mapped[1], "chg-1")
|
|
self.assertEqual(mapped[3], "basepath:c:/1c/base")
|
|
self.assertEqual(mapped[8], "requisites_change")
|
|
self.assertEqual(mapped[12], "Новый")
|
|
self.assertEqual(mapped[15], "changes.jsonl")
|
|
|
|
def test_new_dataset_columns_shape(self) -> None:
|
|
self.assertEqual(loader.RAW_TABLES["business_events"], "raw_1c_business_events")
|
|
self.assertEqual(loader.CORE_TABLES["document_changes"], "document_change_events")
|
|
self.assertEqual(len(loader.core_columns("business_events")), 22)
|
|
self.assertEqual(len(loader.core_columns("document_changes")), 16)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|