Research-Stack/5-Applications/nodupe/tests/database/test_serialization_coverage.py
2026-05-05 21:15:26 -05:00

74 lines
2.5 KiB
Python

# SPDX-License-Identifier: Apache-2.0
# Copyright (c) 2025 Allaun
"""Tests for DatabaseSerialization to achieve 100% coverage."""
from unittest.mock import MagicMock
import pytest
from nodupe.tools.databases.serialization import DatabaseSerialization
class TestDatabaseSerializationCoverage:
"""Test cases to achieve full coverage of DatabaseSerialization."""
def test_serialize_dict(self):
"""Test serializing a dictionary."""
mock_conn = MagicMock()
serialization = DatabaseSerialization(mock_conn)
result = serialization.serialize({"key": "value"})
assert result == '{"key": "value"}'
def test_serialize_list(self):
"""Test serializing a list."""
mock_conn = MagicMock()
serialization = DatabaseSerialization(mock_conn)
result = serialization.serialize([1, 2, 3])
assert result == "[1, 2, 3]"
def test_serialize_unserializable(self):
"""Test serializing unserializable data raises ValueError."""
mock_conn = MagicMock()
serialization = DatabaseSerialization(mock_conn)
# datetime objects are not JSON serializable by default
from datetime import datetime
with pytest.raises(ValueError):
serialization.serialize({"date": datetime.now()})
def test_deserialize_valid(self):
"""Test deserializing valid JSON."""
mock_conn = MagicMock()
serialization = DatabaseSerialization(mock_conn)
result = serialization.deserialize('{"key": "value"}')
assert result == {"key": "value"}
def test_deserialize_invalid(self):
"""Test deserializing invalid JSON raises ValueError."""
mock_conn = MagicMock()
serialization = DatabaseSerialization(mock_conn)
with pytest.raises(ValueError):
serialization.deserialize("not valid json")
def test_serialize_safe_with_invalid(self):
"""Test serialize_safe returns empty dict on failure."""
mock_conn = MagicMock()
serialization = DatabaseSerialization(mock_conn)
from datetime import datetime
result = serialization.serialize_safe({"date": datetime.now()})
assert result == '{}'
def test_deserialize_safe_with_invalid(self):
"""Test deserialize_safe returns original on failure."""
mock_conn = MagicMock()
serialization = DatabaseSerialization(mock_conn)
original = "not valid json"
result = serialization.deserialize_safe(original)
assert result == original