Some checks failed
Build and Push Docker Image / build-and-push (push) Has been cancelled
112 lines
3.3 KiB
Python
112 lines
3.3 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Test script for dose tracking UI in edit window.
|
|
Tests the specific issue where adding new doses replaces existing ones.
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
import tkinter as tk
|
|
from datetime import datetime
|
|
|
|
# Add the src directory to Python path
|
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "src"))
|
|
|
|
from init import logger
|
|
from medicine_manager import MedicineManager
|
|
from pathology_manager import PathologyManager
|
|
from theme_manager import ThemeManager
|
|
from ui_manager import UIManager
|
|
|
|
|
|
def test_dose_tracking():
|
|
"""Test the dose tracking functionality."""
|
|
|
|
# Create test window
|
|
root = tk.Tk()
|
|
root.title("Dose Tracking Test")
|
|
root.geometry("800x600")
|
|
|
|
# Initialize managers
|
|
medicine_manager = MedicineManager(logger=logger)
|
|
pathology_manager = PathologyManager(logger=logger)
|
|
theme_manager = ThemeManager(root, logger)
|
|
|
|
ui_manager = UIManager(
|
|
root, logger, medicine_manager, pathology_manager, theme_manager
|
|
)
|
|
|
|
# Add a test medicine if none exist
|
|
medicines = medicine_manager.get_all_medicines()
|
|
if not medicines:
|
|
from medicine_manager import Medicine
|
|
|
|
test_medicine = Medicine(
|
|
key="bupropion",
|
|
display_name="Bupropion",
|
|
dosage="150mg",
|
|
color="#4CAF50",
|
|
quick_doses=["150", "300"],
|
|
is_default=True,
|
|
)
|
|
medicine_manager.add_medicine(test_medicine)
|
|
print("Added test medicine: Bupropion")
|
|
|
|
# Test data - simulate existing doses for today
|
|
test_date = datetime.now().strftime("%Y-%m-%d")
|
|
existing_doses = {"bupropion": "• 08:00 AM - 150mg\n• 12:00 PM - 150mg"}
|
|
|
|
# Create test callbacks
|
|
def test_save_callback(edit_win, *args):
|
|
print(f"Save callback called with {len(args)} arguments")
|
|
print(f"Arguments: {args}")
|
|
# Don't actually save, just print for testing
|
|
|
|
def test_delete_callback(edit_win):
|
|
print("Delete callback called")
|
|
edit_win.destroy()
|
|
|
|
callbacks = {"save": test_save_callback, "delete": test_delete_callback}
|
|
|
|
# Test values to populate the edit window
|
|
test_values = (
|
|
test_date, # date
|
|
0, # pathology score (if any)
|
|
1, # medicine taken (bupropion)
|
|
existing_doses["bupropion"], # existing doses
|
|
"Test note", # note
|
|
)
|
|
|
|
print(f"Creating edit window with test values: {test_values}")
|
|
|
|
# Create the edit window
|
|
_ = ui_manager.create_edit_window(test_values, callbacks)
|
|
|
|
# Add instructions label
|
|
instructions = tk.Label(
|
|
root,
|
|
text="Instructions:\n"
|
|
"1. The edit window should show existing doses: 08:00 AM and 12:00 PM\n"
|
|
"2. Enter a new dose (e.g., 150) and click 'Take Bupropion'\n"
|
|
"3. The new dose should be ADDED to existing doses, not replace them\n"
|
|
"4. Click Save to see the final dose data in console",
|
|
justify=tk.LEFT,
|
|
wraplength=500,
|
|
bg="lightyellow",
|
|
padx=10,
|
|
pady=10,
|
|
)
|
|
instructions.pack(pady=10, padx=10, fill=tk.X)
|
|
|
|
print("Test setup complete. Check the edit window for dose tracking behavior.")
|
|
print(
|
|
"Expected behavior: New doses should be added to existing ones, "
|
|
"not replace them."
|
|
)
|
|
|
|
root.mainloop()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
test_dose_tracking()
|