feat: Enhance dose history parsing and add unit tests for improved functionality
Some checks failed
Build and Push Docker Image / build-and-push (push) Has been cancelled
Some checks failed
Build and Push Docker Image / build-and-push (push) Has been cancelled
This commit is contained in:
51
tests/test_dose_parsing.py
Normal file
51
tests/test_dose_parsing.py
Normal file
@@ -0,0 +1,51 @@
|
||||
import pytest
|
||||
from datetime import datetime
|
||||
import tkinter as tk
|
||||
from src.ui_manager import UIManager
|
||||
|
||||
@pytest.fixture
|
||||
def root_window():
|
||||
root = tk.Tk()
|
||||
yield root
|
||||
root.destroy()
|
||||
|
||||
@pytest.fixture
|
||||
def ui_manager(root_window):
|
||||
class DummyLogger:
|
||||
def debug(self, *a, **k): pass
|
||||
def warning(self, *a, **k): pass
|
||||
def error(self, *a, **k): pass
|
||||
return UIManager(root_window, DummyLogger())
|
||||
|
||||
def test_parse_dose_history_for_saving_bullet_and_delete(ui_manager):
|
||||
# Simulate user editing: add, delete, and custom lines
|
||||
date_str = "07/30/2025"
|
||||
# User deletes one line, adds a custom one
|
||||
text = """
|
||||
• 09:00 AM - 150mg
|
||||
• 06:00 PM - 150mg
|
||||
Custom note
|
||||
""".strip()
|
||||
result = ui_manager._parse_dose_history_for_saving(text, date_str)
|
||||
# Should parse both bullets and keep the custom line
|
||||
assert "2025-07-30 09:00:00:150mg" in result
|
||||
assert "2025-07-30 18:00:00:150mg" in result
|
||||
assert "Custom note" in result
|
||||
# If user deletes all, should return empty string
|
||||
assert ui_manager._parse_dose_history_for_saving("", date_str) == ""
|
||||
assert ui_manager._parse_dose_history_for_saving("No doses recorded today", date_str) == ""
|
||||
|
||||
def test_parse_dose_history_for_saving_simple_time(ui_manager):
|
||||
date_str = "07/30/2025"
|
||||
text = "09:00 150mg\n18:00 150mg"
|
||||
result = ui_manager._parse_dose_history_for_saving(text, date_str)
|
||||
assert "2025-07-30 09:00:00:150mg" in result
|
||||
assert "2025-07-30 18:00:00:150mg" in result
|
||||
|
||||
def test_parse_dose_history_for_saving_mixed(ui_manager):
|
||||
date_str = "07/30/2025"
|
||||
text = "• 09:00 AM - 150mg\n18:00 150mg\nJust a note"
|
||||
result = ui_manager._parse_dose_history_for_saving(text, date_str)
|
||||
assert "2025-07-30 09:00:00:150mg" in result
|
||||
assert "2025-07-30 18:00:00:150mg" in result
|
||||
assert "Just a note" in result
|
||||
Reference in New Issue
Block a user