Files
cobol-java/tests/comparator/test_aligner.py
T

46 lines
1.4 KiB
Python

import sys, os
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..")))
from comparator.aligner import align_records
def test_align_by_key():
cobol = [{"CUST-ID": "C001", "AMT": 100}, {"CUST-ID": "C002", "AMT": 200}]
spark = [{"CUST-ID": "C002", "AMT": 200}, {"CUST-ID": "C001", "AMT": 100}]
result = align_records(cobol, spark, key_field="CUST-ID")
assert len(result) == 2
assert all(s == "MATCHED" for _, _, s in result)
def test_missing_in_spark():
cobol = [{"CUST-ID": "C001"}, {"CUST-ID": "C002"}]
spark = [{"CUST-ID": "C001"}]
result = align_records(cobol, spark, key_field="CUST-ID")
statuses = [s for _, _, s in result]
assert "MISSING_IN_SPARK" in statuses
def test_extra_in_spark():
cobol = [{"CUST-ID": "C001"}]
spark = [{"CUST-ID": "C001"}, {"CUST-ID": "C002"}]
result = align_records(cobol, spark, key_field="CUST-ID")
statuses = [s for _, _, s in result]
assert "EXTRA_IN_SPARK" in statuses
def test_empty_inputs():
assert align_records([], [], "key") == []
def test_duplicate_keys():
cobol = [{"ID": "K1", "V": 1}, {"ID": "K1", "V": 2}]
java = [{"ID": "K1", "V": 1}, {"ID": "K1", "V": 2}]
result = align_records(cobol, java, key_field="ID")
assert len(result) == 2
def test_align_none_key():
cobol = [{"ID": None, "V": 1}]
java = [{"ID": None, "V": 1}]
result = align_records(cobol, java, key_field="ID")
assert len(result) == 1