#!/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()