Implement offline merge and review core

This commit is contained in:
2026-09-03 12:11:45 -04:00
parent ec2a02d581
commit 2cebb0db2e
11 changed files with 395 additions and 3 deletions
+42
View File
@@ -0,0 +1,42 @@
"""Core tests; run only in an approved disposable development environment."""
import json
from pathlib import Path
from dataloom.core.merge import merge_records
from dataloom.core.models import Record
from dataloom.core.normalize import normalize_url
from dataloom.core.parsers import load_file
FIXTURES = Path(__file__).parent / "fixtures"
def test_url_normalization_equates_www_and_trailing_slash():
assert normalize_url("https://example.com") == normalize_url("https://www.example.com/")
def test_fixture_import_and_exact_merge():
_, left = load_file(FIXTURES / "bitwarden-a.json")
_, right = load_file(FIXTURES / "bitwarden-b.json")
result = merge_records(left + right)
assert len(result.included) == 1
assert len(result.removed_exact) == 1
def test_exact_login_match_ignores_name_and_revision():
left = {"id": "a", "type": 1, "name": "Old name", "revisionDate": "2026-01-01T00:00:00Z",
"login": {"username": "U", "password": "P", "uris": [{"uri": "https://example.com"}]}}
right = {"id": "b", "type": 1, "name": "New name", "revisionDate": "2026-02-01T00:00:00Z",
"login": {"username": "u", "password": "P", "uris": [{"uri": "https://www.example.com/"}]}}
result = merge_records([Record(left, "a.json", 1), Record(right, "b.json", 1)])
assert len(result.included) == 1
assert len(result.removed_exact) == 1
def test_conflicting_passwords_are_retained_for_review():
base = {"type": 1, "name": "X", "login": {"username": "u", "password": "a", "uris": [{"uri": "https://x.test"}]}}
other = json.loads(json.dumps(base)); other["login"]["password"] = "b"
result = merge_records([Record(base, "a.json", 1), Record(other, "b.json", 1)])
assert len(result.included) == 2
assert any(group.classification == "likely" for group in result.review_groups)