mirror of
https://github.com/allaunthefox/Research-Stack.git
synced 2026-07-31 03:05:21 +00:00
74 lines
2.6 KiB
Python
74 lines
2.6 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
|