- 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.
111 lines
2.9 KiB
Python
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()
|