Initial commit

This commit is contained in:
git
2026-01-03 22:05:49 +07:00
commit 2f8859dbe8
63 changed files with 6708 additions and 0 deletions

186
tests/test_models.py Executable file
View File

@@ -0,0 +1,186 @@
"""
Unit tests for data models
"""
import pytest
from drt.models.enums import Status, CheckType
from drt.models.table import TableInfo, ColumnInfo
from drt.models.results import CheckResult, ComparisonResult
class TestStatus:
"""Test Status enum"""
def test_status_values(self):
"""Test status enum values"""
assert Status.PASS.value == "PASS"
assert Status.FAIL.value == "FAIL"
assert Status.WARNING.value == "WARNING"
assert Status.ERROR.value == "ERROR"
assert Status.INFO.value == "INFO"
assert Status.SKIP.value == "SKIP"
def test_status_severity(self):
"""Test status severity comparison"""
assert Status.FAIL.severity > Status.WARNING.severity
assert Status.WARNING.severity > Status.PASS.severity
assert Status.ERROR.severity > Status.FAIL.severity
class TestCheckType:
"""Test CheckType enum"""
def test_check_type_values(self):
"""Test check type enum values"""
assert CheckType.TABLE_EXISTENCE.value == "TABLE_EXISTENCE"
assert CheckType.ROW_COUNT.value == "ROW_COUNT"
assert CheckType.SCHEMA.value == "SCHEMA"
assert CheckType.AGGREGATE.value == "AGGREGATE"
class TestTableInfo:
"""Test TableInfo model"""
def test_table_info_creation(self):
"""Test creating a TableInfo instance"""
table = TableInfo(
schema="dbo",
name="TestTable",
enabled=True,
expected_in_target=True
)
assert table.schema == "dbo"
assert table.name == "TestTable"
assert table.enabled is True
assert table.expected_in_target is True
assert table.aggregate_columns == []
def test_table_info_with_aggregates(self):
"""Test TableInfo with aggregate columns"""
table = TableInfo(
schema="dbo",
name="FactSales",
enabled=True,
expected_in_target=True,
aggregate_columns=["Amount", "Quantity"]
)
assert len(table.aggregate_columns) == 2
assert "Amount" in table.aggregate_columns
class TestColumnInfo:
"""Test ColumnInfo model"""
def test_column_info_creation(self):
"""Test creating a ColumnInfo instance"""
column = ColumnInfo(
name="CustomerID",
data_type="int",
is_nullable=False,
is_primary_key=True
)
assert column.name == "CustomerID"
assert column.data_type == "int"
assert column.is_nullable is False
assert column.is_primary_key is True
class TestCheckResult:
"""Test CheckResult model"""
def test_check_result_pass(self):
"""Test creating a passing check result"""
result = CheckResult(
check_type=CheckType.ROW_COUNT,
status=Status.PASS,
message="Row counts match",
baseline_value=1000,
target_value=1000
)
assert result.status == Status.PASS
assert result.baseline_value == 1000
assert result.target_value == 1000
def test_check_result_fail(self):
"""Test creating a failing check result"""
result = CheckResult(
check_type=CheckType.ROW_COUNT,
status=Status.FAIL,
message="Row count mismatch",
baseline_value=1000,
target_value=950
)
assert result.status == Status.FAIL
assert result.baseline_value != result.target_value
class TestComparisonResult:
"""Test ComparisonResult model"""
def test_comparison_result_creation(self):
"""Test creating a ComparisonResult instance"""
result = ComparisonResult(
schema="dbo",
table="TestTable"
)
assert result.schema == "dbo"
assert result.table == "TestTable"
assert len(result.checks) == 0
def test_add_check_result(self):
"""Test adding check results"""
comparison = ComparisonResult(
schema="dbo",
table="TestTable"
)
check = CheckResult(
check_type=CheckType.ROW_COUNT,
status=Status.PASS,
message="Row counts match"
)
comparison.checks.append(check)
assert len(comparison.checks) == 1
assert comparison.checks[0].status == Status.PASS
def test_overall_status_all_pass(self):
"""Test overall status when all checks pass"""
comparison = ComparisonResult(
schema="dbo",
table="TestTable"
)
comparison.checks.append(CheckResult(
check_type=CheckType.TABLE_EXISTENCE,
status=Status.PASS,
message="Table exists"
))
comparison.checks.append(CheckResult(
check_type=CheckType.ROW_COUNT,
status=Status.PASS,
message="Row counts match"
))
assert comparison.overall_status == Status.PASS
def test_overall_status_with_failure(self):
"""Test overall status when one check fails"""
comparison = ComparisonResult(
schema="dbo",
table="TestTable"
)
comparison.checks.append(CheckResult(
check_type=CheckType.TABLE_EXISTENCE,
status=Status.PASS,
message="Table exists"
))
comparison.checks.append(CheckResult(
check_type=CheckType.ROW_COUNT,
status=Status.FAIL,
message="Row count mismatch"
))
assert comparison.overall_status == Status.FAIL