Files
thechart/tests/conftest.py
William Valentin d14d19e7d9
Some checks failed
Build and Push Docker Image / build-and-push (push) Has been cancelled
feat: add medicine dose graph plotting and toggle functionality with comprehensive tests
2025-07-30 13:18:25 -07:00

92 lines
2.9 KiB
Python

"""
Fixtures and configuration for pytest tests.
"""
import os
import tempfile
import pytest
import pandas as pd
from unittest.mock import Mock
import logging
@pytest.fixture
def temp_csv_file():
"""Create a temporary CSV file for testing."""
fd, path = tempfile.mkstemp(suffix='.csv')
os.close(fd)
yield path
# Cleanup
if os.path.exists(path):
os.unlink(path)
@pytest.fixture
def sample_data():
"""Sample data for testing."""
return [
["2024-01-01", 3, 2, 4, 3, 1, "", 0, "", 2, "", 1, "", 0, "", "Test note 1"],
["2024-01-02", 2, 3, 3, 4, 1, "", 1, "", 2, "", 0, "", 1, "", "Test note 2"],
["2024-01-03", 4, 1, 5, 2, 0, "", 0, "", 1, "", 1, "", 0, "", ""],
]
@pytest.fixture
def sample_dataframe():
"""Sample DataFrame for testing."""
return pd.DataFrame({
'date': ['2024-01-01', '2024-01-02', '2024-01-03'],
'depression': [3, 2, 4],
'anxiety': [2, 3, 1],
'sleep': [4, 3, 5],
'appetite': [3, 4, 2],
'bupropion': [1, 1, 0],
'bupropion_doses': ['2024-01-01 08:00:00:150mg', '2024-01-02 08:00:00:300mg', ''],
'hydroxyzine': [0, 1, 0],
'hydroxyzine_doses': ['', '2024-01-02 20:00:00:25mg', ''],
'gabapentin': [2, 2, 1],
'gabapentin_doses': ['2024-01-01 12:00:00:100mg|2024-01-01 20:00:00:100mg',
'2024-01-02 12:00:00:100mg|2024-01-02 20:00:00:100mg',
'2024-01-03 12:00:00:100mg'],
'propranolol': [1, 0, 1],
'propranolol_doses': ['2024-01-01 12:00:00:10mg', '', '2024-01-03 12:00:00:20mg'],
'quetiapine': [0, 1, 0],
'quetiapine_doses': ['', '2024-01-02 22:00:00:50mg', ''],
'note': ['Test note 1', 'Test note 2', '']
})
@pytest.fixture
def mock_logger():
"""Mock logger for testing."""
return Mock(spec=logging.Logger)
@pytest.fixture
def temp_log_dir():
"""Create a temporary directory for log files."""
with tempfile.TemporaryDirectory() as temp_dir:
yield temp_dir
@pytest.fixture
def mock_env_vars(monkeypatch):
"""Mock environment variables."""
monkeypatch.setenv("LOG_LEVEL", "DEBUG")
monkeypatch.setenv("LOG_PATH", "/tmp/test_logs")
monkeypatch.setenv("LOG_CLEAR", "False")
@pytest.fixture
def sample_dose_data():
"""Sample dose data for testing dose calculation."""
return {
'standard_format': '2025-07-28 18:59:45:150mg|2025-07-28 19:34:19:75mg', # Should sum to 225
'with_bullets': '• • • • 2025-07-30 07:50:00:300', # Should be 300
'decimal_doses': '2025-07-28 18:59:45:12.5mg|2025-07-28 19:34:19:7.5mg', # Should sum to 20
'no_timestamp': '100mg|50mg', # Should sum to 150
'mixed_format': '• 2025-07-30 22:50:00:10|75mg', # Should sum to 85
'empty_string': '', # Should be 0
'nan_value': 'nan', # Should be 0
'no_units': '2025-07-28 18:59:45:10|2025-07-28 19:34:19:5', # Should sum to 15
}