Refactor method names for clarity and consistency across the application
Some checks failed
Build and Push Docker Image / build-and-push (push) Has been cancelled

- Renamed `initialize_csv` to `_initialize_csv_file` in `DataManager` for better clarity.
- Updated method calls in `GraphManager` from `_create_toggle_controls` to `_create_chart_toggles` and `_on_toggle_changed` to `_handle_toggle_changed`.
- Changed method names in `MedTrackerApp` from `on_closing` to `handle_window_closing`, `add_entry` to `add_new_entry`, and `load_data` to `refresh_data_display`.
- Adjusted corresponding test method names in `TestMedTrackerApp` to reflect the new method names.
- Updated `UIManager` method names from `setup_icon` to `setup_application_icon` and adjusted related tests accordingly.
This commit is contained in:
William Valentin
2025-07-30 12:32:17 -07:00
parent e0faf20a56
commit b7c01bc373
6 changed files with 106 additions and 575 deletions

View File

@@ -90,8 +90,8 @@ class TestMedTrackerApp:
app = MedTrackerApp(root_window)
# Check that setup_icon was called on UI manager
app.ui_manager.setup_icon.assert_called()
# Check that setup_application_icon was called on UI manager
app.ui_manager.setup_application_icon.assert_called()
def test_icon_setup_fallback_path(self, root_window, mock_managers):
"""Test icon setup with fallback path."""
@@ -103,10 +103,10 @@ class TestMedTrackerApp:
app = MedTrackerApp(root_window)
# Check that setup_icon was called with fallback path
app.ui_manager.setup_icon.assert_called_with(img_path="./chart-671.png")
# Check that setup_application_icon was called with fallback path
app.ui_manager.setup_application_icon.assert_called_with(img_path="./chart-671.png")
def test_add_entry_success(self, root_window, mock_managers):
def test_add_new_entry_success(self, root_window, mock_managers):
"""Test successful entry addition."""
with patch('sys.argv', ['main.py']):
app = MedTrackerApp(root_window)
@@ -136,15 +136,15 @@ class TestMedTrackerApp:
with patch('tkinter.messagebox.showinfo') as mock_info, \
patch.object(app, '_clear_entries') as mock_clear, \
patch.object(app, 'load_data') as mock_load:
patch.object(app, 'refresh_data_display') as mock_load:
app.add_entry()
app.add_new_entry()
mock_info.assert_called_once()
mock_clear.assert_called_once()
mock_load.assert_called_once()
def test_add_entry_empty_date(self, root_window, mock_managers):
def test_add_new_entry_empty_date(self, root_window, mock_managers):
"""Test adding entry with empty date."""
with patch('sys.argv', ['main.py']):
app = MedTrackerApp(root_window)
@@ -153,13 +153,13 @@ class TestMedTrackerApp:
app.date_var.get.return_value = " " # Empty/whitespace date
with patch('tkinter.messagebox.showerror') as mock_error:
app.add_entry()
app.add_new_entry()
mock_error.assert_called_once_with(
"Error", "Please enter a date.", parent=app.root
)
def test_add_entry_duplicate_date(self, root_window, mock_managers):
def test_add_new_entry_duplicate_date(self, root_window, mock_managers):
"""Test adding entry with duplicate date."""
with patch('sys.argv', ['main.py']):
app = MedTrackerApp(root_window)
@@ -186,12 +186,12 @@ class TestMedTrackerApp:
app.data_manager.load_data.return_value = mock_df
with patch('tkinter.messagebox.showerror') as mock_error:
app.add_entry()
app.add_new_entry()
mock_error.assert_called_once()
assert "already exists" in mock_error.call_args[0][1]
def test_on_double_click(self, root_window, mock_managers):
def test_handle_double_click(self, root_window, mock_managers):
"""Test double-click event handling."""
with patch('sys.argv', ['main.py']):
app = MedTrackerApp(root_window)
@@ -205,11 +205,11 @@ class TestMedTrackerApp:
mock_event = Mock()
with patch.object(app, '_create_edit_window') as mock_create_edit:
app.on_double_click(mock_event)
app.handle_double_click(mock_event)
mock_create_edit.assert_called_once()
def test_on_double_click_empty_tree(self, root_window, mock_managers):
def test_handle_double_click_empty_tree(self, root_window, mock_managers):
"""Test double-click when tree is empty."""
with patch('sys.argv', ['main.py']):
app = MedTrackerApp(root_window)
@@ -220,7 +220,7 @@ class TestMedTrackerApp:
mock_event = Mock()
with patch.object(app, '_create_edit_window') as mock_create_edit:
app.on_double_click(mock_event)
app.handle_double_click(mock_event)
mock_create_edit.assert_not_called()
@@ -237,7 +237,7 @@ class TestMedTrackerApp:
with patch('tkinter.messagebox.showinfo') as mock_info, \
patch.object(app, '_clear_entries') as mock_clear, \
patch.object(app, 'load_data') as mock_load:
patch.object(app, 'refresh_data_display') as mock_load:
app._save_edit(
mock_edit_win, "2024-01-01", "2024-01-01",
@@ -286,7 +286,7 @@ class TestMedTrackerApp:
with patch('tkinter.messagebox.askyesno', return_value=True) as mock_confirm, \
patch('tkinter.messagebox.showinfo') as mock_info, \
patch.object(app, 'load_data') as mock_load:
patch.object(app, 'refresh_data_display') as mock_load:
app._delete_entry(mock_edit_win, 'item1')
@@ -328,7 +328,7 @@ class TestMedTrackerApp:
for med_var in app.medicine_vars.values():
med_var[0].set.assert_called_with(0)
def test_load_data(self, root_window, mock_managers):
def test_refresh_data_display(self, root_window, mock_managers):
"""Test loading data into tree and graph."""
with patch('sys.argv', ['main.py']):
app = MedTrackerApp(root_window)
@@ -345,7 +345,7 @@ class TestMedTrackerApp:
})
app.data_manager.load_data.return_value = mock_df
app.load_data()
app.refresh_data_display()
# Check that tree was cleared and populated
app.tree.delete.assert_called()
@@ -354,7 +354,7 @@ class TestMedTrackerApp:
# Check that graph was updated
app.graph_manager.update_graph.assert_called_with(mock_df)
def test_load_data_empty_dataframe(self, root_window, mock_managers):
def test_refresh_data_display_empty_dataframe(self, root_window, mock_managers):
"""Test loading empty data."""
with patch('sys.argv', ['main.py']):
app = MedTrackerApp(root_window)
@@ -366,29 +366,29 @@ class TestMedTrackerApp:
empty_df = pd.DataFrame()
app.data_manager.load_data.return_value = empty_df
app.load_data()
app.refresh_data_display()
# Graph should still be updated even with empty data
app.graph_manager.update_graph.assert_called_with(empty_df)
def test_on_closing_confirmed(self, root_window, mock_managers):
def test_handle_window_closing_confirmed(self, root_window, mock_managers):
"""Test application closing when confirmed."""
with patch('sys.argv', ['main.py']):
app = MedTrackerApp(root_window)
with patch('tkinter.messagebox.askokcancel', return_value=True) as mock_confirm:
app.on_closing()
app.handle_window_closing()
mock_confirm.assert_called_once()
app.graph_manager.close.assert_called_once()
def test_on_closing_cancelled(self, root_window, mock_managers):
def test_handle_window_closing_cancelled(self, root_window, mock_managers):
"""Test application closing when cancelled."""
with patch('sys.argv', ['main.py']):
app = MedTrackerApp(root_window)
with patch('tkinter.messagebox.askokcancel', return_value=False) as mock_confirm:
app.on_closing()
app.handle_window_closing()
mock_confirm.assert_called_once()
app.graph_manager.close.assert_not_called()