2024-10-30 17:41:45 +01:00
|
|
|
from typing import Any, Dict
|
2023-11-06 15:58:57 -05:00
|
|
|
|
|
|
|
import pytest
|
|
|
|
|
2024-10-30 17:41:45 +01:00
|
|
|
from datahub.ingestion.source.datahub.datahub_database_reader import VersionOrderer
|
2023-11-06 15:58:57 -05:00
|
|
|
|
|
|
|
|
|
|
|
@pytest.fixture
|
|
|
|
def rows():
|
|
|
|
return [
|
2024-10-30 17:41:45 +01:00
|
|
|
{"createdon": 0, "version": 0, "urn": "one"},
|
|
|
|
{"createdon": 0, "version": 1, "urn": "one"},
|
|
|
|
{"createdon": 0, "version": 0, "urn": "two"},
|
|
|
|
{"createdon": 0, "version": 0, "urn": "three"},
|
|
|
|
{"createdon": 0, "version": 1, "urn": "three"},
|
|
|
|
{"createdon": 0, "version": 2, "urn": "three"},
|
|
|
|
{"createdon": 0, "version": 1, "urn": "two"},
|
|
|
|
{"createdon": 0, "version": 4, "urn": "three"},
|
|
|
|
{"createdon": 0, "version": 5, "urn": "three"},
|
|
|
|
{"createdon": 1, "version": 6, "urn": "three"},
|
|
|
|
{"createdon": 1, "version": 0, "urn": "four"},
|
|
|
|
{"createdon": 2, "version": 0, "urn": "five"},
|
|
|
|
{"createdon": 2, "version": 1, "urn": "six"},
|
|
|
|
{"createdon": 2, "version": 0, "urn": "six"},
|
|
|
|
{"createdon": 3, "version": 0, "urn": "seven"},
|
|
|
|
{"createdon": 3, "version": 0, "urn": "eight"},
|
2023-11-06 15:58:57 -05:00
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
def test_version_orderer(rows):
|
2024-10-30 17:41:45 +01:00
|
|
|
orderer = VersionOrderer[Dict[str, Any]](enabled=True)
|
2023-11-06 15:58:57 -05:00
|
|
|
ordered_rows = list(orderer(rows))
|
|
|
|
assert ordered_rows == sorted(
|
2024-10-30 17:41:45 +01:00
|
|
|
ordered_rows, key=lambda x: (x["createdon"], x["version"] == 0)
|
2023-11-06 15:58:57 -05:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
def test_version_orderer_disabled(rows):
|
2024-10-30 17:41:45 +01:00
|
|
|
orderer = VersionOrderer[Dict[str, Any]](enabled=False)
|
2023-11-06 15:58:57 -05:00
|
|
|
ordered_rows = list(orderer(rows))
|
|
|
|
assert ordered_rows == rows
|