chore: establish project baseline
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import importlib.util
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).parents[1]
|
||||
spec = importlib.util.spec_from_file_location("sgv_capabilities", ROOT / "scripts" / "sgv_capabilities.py")
|
||||
cap = importlib.util.module_from_spec(spec); sys.modules[spec.name] = cap; spec.loader.exec_module(cap)
|
||||
|
||||
|
||||
def columns(**over):
|
||||
base = {f: 37 for f in cap.WRITE_TARGETS}
|
||||
base.update({"ALIQUOTA": 16, "IPI": 27, cap.ORIGIN_FIELD: 8})
|
||||
base.update(over)
|
||||
return base
|
||||
|
||||
|
||||
def test_capabilities_are_column_driven_not_version_driven():
|
||||
caps = cap.detect_capabilities(columns())
|
||||
assert all(caps.values()) and len(caps) == 15
|
||||
missing = {k: v for k, v in columns().items() if k not in ("CEST", "COD_ORIGEM_MERCADORIA")}
|
||||
caps = cap.detect_capabilities(missing)
|
||||
assert caps["supports_cest"] is False and caps["supports_origin"] is False and caps["supports_ncm"] is True
|
||||
|
||||
|
||||
def test_type_incompatibility_disables_capability():
|
||||
assert cap.detect_capabilities(columns(IPI=37))["supports_ipi"] is False # text column cannot hold a numeric IPI rate
|
||||
assert cap.detect_capabilities(columns(CST_ENTRADA=8))["supports_cst_entry"] is True # SMALLINT/INTEGER codes accepted
|
||||
|
||||
|
||||
def test_schema_classification():
|
||||
ok = cap.field_compatibility(columns())
|
||||
assert cap.classify_schema(True, True, "abc", "abc", ok) == "REFERENCE_SCHEMA_MATCH"
|
||||
assert cap.classify_schema(True, True, "xyz", "abc", ok) == "COMPATIBLE_WITH_VARIATIONS" # different hash is not a failure
|
||||
assert cap.classify_schema(False, True, "abc", "abc", ok) == "INCOMPATIBLE"
|
||||
bad = cap.field_compatibility({k: v for k, v in columns().items() if k != "CFOP"})
|
||||
assert cap.classify_schema(True, True, "xyz", "abc", bad) == "INCOMPATIBLE"
|
||||
no_origin = cap.field_compatibility({k: v for k, v in columns().items() if k != cap.ORIGIN_FIELD})
|
||||
assert cap.classify_schema(True, True, "xyz", "abc", no_origin) == "COMPATIBLE_WITH_VARIATIONS" # origin is optional (only PROBABLE)
|
||||
|
||||
|
||||
def test_segment_from_evidence_not_filename():
|
||||
seg, _, ev = cap.infer_segment({"restaurant_tables_rows": 700, "kitchen_products": 200, "recipes": 0, "service_orders": 0, "vehicle_products": 0, "grade_items": 0, "nfce_items": 0}, "")
|
||||
assert seg == "RESTAURANT" and ev
|
||||
assert cap.infer_segment({}, "MM MODAS")[0] == "APPAREL"
|
||||
assert cap.infer_segment({}, "")[0] == "UNKNOWN"
|
||||
Reference in New Issue
Block a user