Files
thechart/test_dose_save.py
William Valentin c755f0affc Add comprehensive tests for dose tracking functionality
- Implemented `test_dose_parsing_simple.py` to validate the dose parsing workflow.
- Created `test_dose_save.py` to verify the saving functionality of dose tracking.
- Added `test_dose_save_simple.py` for programmatic testing of dose saving without UI interaction.
- Developed `test_final_workflow.py` to test the complete dose tracking workflow, ensuring doses are preserved during edits.
- Enhanced `conftest.py` with a mock pathology manager for testing.
- Updated `test_data_manager.py` to include pathology manager in DataManager tests and ensure compatibility with new features.
2025-07-31 09:50:45 -07:00

111 lines
2.9 KiB
Python

#!/usr/bin/env python3
"""
Quick test to verify dose tracking save functionality.
"""
import logging
import os
import sys
import tkinter as tk
sys.path.append(os.path.join(os.path.dirname(__file__), "src"))
from medicine_manager import MedicineManager
from pathology_manager import PathologyManager
from ui_manager import UIManager
def test_dose_save():
"""Test that dose data is properly saved."""
# Setup logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger("test")
# Initialize managers
medicine_manager = MedicineManager()
pathology_manager = PathologyManager()
# Create root window
root = tk.Tk()
root.withdraw()
# Initialize UI manager
ui_manager = UIManager(
root=root,
logger=logger,
medicine_manager=medicine_manager,
pathology_manager=pathology_manager,
)
# Create test data
test_values = ["2025-07-31"] # date
# Add pathology values
pathologies = pathology_manager.get_all_pathologies()
for _ in pathologies:
test_values.append(3) # pathology value
# Add medicine values and doses
medicines = medicine_manager.get_all_medicines()
for _ in medicines:
test_values.append(1) # medicine checkbox value
test_values.append(
"2025-07-31 08:00:00:150mg|2025-07-31 14:00:00:25mg"
) # existing doses in storage format
test_values.append("Test note") # note
print(f"Test values: {test_values}")
# Track what gets saved
saved_data = None
def mock_save_callback(*args):
nonlocal saved_data
saved_data = args
print(f"Save callback called with {len(args)} arguments")
print(f"Arguments: {args}")
if len(args) >= 2:
dose_data = args[-1] # Last argument should be dose data
print(f"Dose data type: {type(dose_data)}")
print(f"Dose data: {dose_data}")
if isinstance(dose_data, dict):
for med_key, dose_str in dose_data.items():
print(f" {med_key}: '{dose_str}'")
# Don't destroy window, just close it
root.quit()
def mock_delete_callback(win):
print("Delete callback called")
win.destroy()
root.quit()
callbacks = {"save": mock_save_callback, "delete": mock_delete_callback}
# Create edit window
edit_window = ui_manager.create_edit_window(tuple(test_values), callbacks)
print("Edit window created, please test dose tracking and save...")
# Show the window so user can interact
root.deiconify()
edit_window.lift()
edit_window.focus_force()
# Run main loop
root.mainloop()
if saved_data:
print("✅ Test completed - data was saved")
return True
else:
print("❌ Test failed - no data saved")
return False
if __name__ == "__main__":
test_dose_save()