import pytest
try:
from arrow_zerobus_sdk_wrapper import (
TransmissionResult,
)
except ImportError:
pytestmark = pytest.mark.skip("arrow_zerobus_sdk_wrapper not available")
def test_transmission_result_new_fields_exist():
result = TransmissionResult(
success=True,
message="Test message",
failed_rows=[
(0, "ConversionError: test error"),
(2, "TransmissionError: network error"),
],
successful_rows=[1, 3],
total_rows=4,
successful_count=2,
failed_count=2,
)
assert hasattr(result, "failed_rows")
assert hasattr(result, "successful_rows")
assert hasattr(result, "total_rows")
assert hasattr(result, "successful_count")
assert hasattr(result, "failed_count")
assert result.failed_rows == [
(0, "Conversion error: test error"),
(2, "Transmission error: network error"),
]
assert result.successful_rows == [1, 3]
assert result.total_rows == 4
assert result.successful_count == 2
assert result.failed_count == 2
def test_transmission_result_all_success():
result = TransmissionResult(
success=True,
message="All rows succeeded",
failed_rows=None,
successful_rows=[0, 1, 2],
total_rows=3,
successful_count=3,
failed_count=0,
)
assert result.success is True
assert result.failed_rows is None or result.failed_rows == []
assert result.successful_rows == [0, 1, 2]
assert result.total_rows == 3
assert result.successful_count == 3
assert result.failed_count == 0
def test_transmission_result_all_failed():
result = TransmissionResult(
success=False,
message="All rows failed",
failed_rows=[
(0, "ConversionError: row 0 error"),
(1, "ConversionError: row 1 error"),
(2, "ConversionError: row 2 error"),
],
successful_rows=None,
total_rows=3,
successful_count=0,
failed_count=3,
)
assert result.success is False
assert len(result.failed_rows) == 3
assert result.successful_rows is None or result.successful_rows == []
assert result.total_rows == 3
assert result.successful_count == 0
assert result.failed_count == 3
def test_transmission_result_partial_success():
result = TransmissionResult(
success=True, message="Partial success",
failed_rows=[(1, "ConversionError: row 1 failed")],
successful_rows=[0, 2],
total_rows=3,
successful_count=2,
failed_count=1,
)
assert result.success is True
assert len(result.failed_rows) == 1
assert result.failed_rows[0] == (1, "Conversion error: row 1 failed")
assert result.successful_rows == [0, 2]
assert result.total_rows == 3
assert result.successful_count == 2
assert result.failed_count == 1
def test_transmission_result_empty_batch():
result = TransmissionResult(
success=True,
message="Empty batch",
failed_rows=None,
successful_rows=None,
total_rows=0,
successful_count=0,
failed_count=0,
)
assert result.success is True
assert result.failed_rows is None or result.failed_rows == []
assert result.successful_rows is None or result.successful_rows == []
assert result.total_rows == 0
assert result.successful_count == 0
assert result.failed_count == 0
def test_transmission_result_consistency():
result1 = TransmissionResult(
success=True,
message="Test",
failed_rows=[(0, "Error")],
successful_rows=[1, 2],
total_rows=3,
successful_count=2,
failed_count=1,
)
assert result1.total_rows == result1.successful_count + result1.failed_count
if result1.successful_rows:
assert len(result1.successful_rows) == result1.successful_count
if result1.failed_rows:
assert len(result1.failed_rows) == result1.failed_count
def test_transmission_result_failed_rows_format():
result = TransmissionResult(
success=False,
message="Test",
failed_rows=[
(0, "ConversionError: error 1"),
(1, "TransmissionError: error 2"),
],
successful_rows=None,
total_rows=2,
successful_count=0,
failed_count=2,
)
assert isinstance(result.failed_rows, list)
for failed_row in result.failed_rows:
assert isinstance(failed_row, tuple)
assert len(failed_row) == 2
assert isinstance(failed_row[0], int) assert isinstance(failed_row[1], str)
def test_transmission_result_successful_rows_format():
result = TransmissionResult(
success=True,
message="Test",
failed_rows=None,
successful_rows=[0, 1, 2, 5, 10],
total_rows=11,
successful_count=5,
failed_count=6,
)
assert isinstance(result.successful_rows, list)
for row_idx in result.successful_rows:
assert isinstance(row_idx, int)
assert row_idx >= 0
def test_transmission_result_backward_compatibility():
result = TransmissionResult(
success=True,
message="Test message",
failed_rows=None,
successful_rows=None,
total_rows=0,
successful_count=0,
failed_count=0,
)
assert result.success is True
assert result.failed_rows is None or result.failed_rows == []
assert result.successful_rows is None or result.successful_rows == []
assert result.total_rows == 0
assert result.successful_count == 0
assert result.failed_count == 0