better testsssssss

This commit is contained in:
2025-12-07 01:33:39 +03:00
parent dee328525d
commit 9423034a08
9 changed files with 1035 additions and 610 deletions
+56 -20
View File
@@ -2,27 +2,37 @@ from datetime import date, datetime
import pytest
from argenta.data_bridge import DataBridge
from argenta.command.flag.models import InputFlag
from argenta.command.flag.flags.models import InputFlags
from argenta.command.flag.models import InputFlag
from argenta.data_bridge import DataBridge
from argenta.response.entity import EMPTY_INPUT_FLAGS, Response
from argenta.response.status import ResponseStatus
# ============================================================================
# Fixtures
# ============================================================================
@pytest.fixture
def data_bridge():
def data_bridge() -> DataBridge:
"""Create a new DataBridge instance for each test"""
return DataBridge()
def test_update_data_basic(data_bridge: DataBridge):
# ============================================================================
# Tests for DataBridge - basic data operations
# ============================================================================
def test_databridge_update_stores_basic_data(data_bridge: DataBridge) -> None:
"""Test basic data update functionality"""
test_data = {"key1": "value1", "key2": "value2"}
data_bridge.update(test_data)
assert data_bridge.get_all() == test_data
def test_update_data_with_datetime(data_bridge: DataBridge):
def test_databridge_update_stores_datetime_objects(data_bridge: DataBridge) -> None:
"""Test updating data with datetime objects"""
test_datetime = datetime(2024, 1, 15, 10, 30, 45)
test_data = {"created_at": test_datetime, "name": "test"}
@@ -33,7 +43,7 @@ def test_update_data_with_datetime(data_bridge: DataBridge):
assert result["name"] == "test"
def test_update_data_multiple_calls(data_bridge: DataBridge):
def test_databridge_multiple_updates_merge_data(data_bridge: DataBridge) -> None:
"""Test multiple update calls merge data"""
first_data = {"key1": "value1"}
second_data = {"key2": "value2"}
@@ -42,12 +52,37 @@ def test_update_data_multiple_calls(data_bridge: DataBridge):
assert len(data_bridge.get_all()) == 2
def test_get_data_empty(data_bridge: DataBridge):
# ============================================================================
# Tests for DataBridge - data retrieval
# ============================================================================
def test_databridge_get_all_returns_empty_dict_initially(data_bridge: DataBridge) -> None:
"""Test get_all returns empty dict when no data"""
assert data_bridge.get_all() == {}
def test_clear_data(data_bridge: DataBridge):
def test_databridge_get_by_key_retrieves_correct_values(data_bridge: DataBridge) -> None:
"""Test get_by_key retrieves correct value"""
test_data = {"key1": "value1", "key2": date(2024, 1, 1)}
data_bridge.update(test_data)
assert data_bridge.get_by_key("key1") == "value1"
assert data_bridge.get_by_key("key2") == date(2024, 1, 1)
def test_databridge_get_by_key_returns_none_for_missing_key(data_bridge: DataBridge) -> None:
"""Test get_by_key returns None for nonexistent key"""
test_data = {"key1": "value1"}
data_bridge.update(test_data)
assert data_bridge.get_by_key("nonexistent") is None
# ============================================================================
# Tests for DataBridge - data deletion
# ============================================================================
def test_databridge_clear_all_removes_all_data(data_bridge: DataBridge) -> None:
"""Test clear_all removes all data"""
data_bridge.update({"key": "value"})
assert data_bridge.get_all() != {}
@@ -55,7 +90,7 @@ def test_clear_data(data_bridge: DataBridge):
assert data_bridge.get_all() == {}
def test_delete_from_data(data_bridge: DataBridge):
def test_databridge_delete_by_key_removes_specific_key(data_bridge: DataBridge) -> None:
"""Test delete_by_key removes specific key"""
test_data = {"key1": "value1", "key2": "value2"}
data_bridge.update(test_data)
@@ -65,29 +100,25 @@ def test_delete_from_data(data_bridge: DataBridge):
assert "key2" in result
def test_delete_from_data_nonexistent_key(data_bridge: DataBridge):
def test_databridge_delete_by_key_raises_error_for_missing_key(data_bridge: DataBridge) -> None:
"""Test delete_by_key with nonexistent key raises KeyError"""
with pytest.raises(KeyError):
data_bridge.delete_by_key("nonexistent_key")
def test_get_by_key(data_bridge: DataBridge):
"""Test get_by_key retrieves correct value"""
test_data = {"key1": "value1", "key2": date(2024, 1, 1)}
data_bridge.update(test_data)
assert data_bridge.get_by_key("key1") == "value1"
assert data_bridge.get_by_key("key2") == date(2024, 1, 1)
assert data_bridge.get_by_key("nonexistent") is None
# ============================================================================
# Tests for Response - initialization
# ============================================================================
def test_response_initialization_basic():
def test_response_initializes_with_status_and_empty_flags() -> None:
"""Test basic Response initialization"""
response = Response(ResponseStatus.ALL_FLAGS_VALID)
assert response.status == ResponseStatus.ALL_FLAGS_VALID
assert response.input_flags == EMPTY_INPUT_FLAGS
def test_response_initialization_with_flags():
def test_response_initializes_with_status_and_input_flags() -> None:
"""Test Response initialization with input flags"""
input_flags = InputFlags([InputFlag('test', input_value='value', status=None)])
response = Response(ResponseStatus.INVALID_VALUE_FLAGS, input_flags)
@@ -95,7 +126,12 @@ def test_response_initialization_with_flags():
assert response.input_flags == input_flags
def test_response_status_types():
# ============================================================================
# Tests for Response - status types
# ============================================================================
def test_response_accepts_all_status_types() -> None:
"""Test Response with different status types"""
statuses = [
ResponseStatus.ALL_FLAGS_VALID,