From b5025bf7eca79105731b25f0e57005a6271cf566 Mon Sep 17 00:00:00 2001 From: Daniel Dybing Date: Sat, 14 Mar 2026 11:57:03 +0100 Subject: [PATCH] Test: Verify export functionality respects zero-hour filtering --- test_export.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/test_export.py b/test_export.py index 10034b7..738c50c 100644 --- a/test_export.py +++ b/test_export.py @@ -68,6 +68,49 @@ class TestTamigoExport(unittest.TestCase): self.assertIn("2025-03-10", work_days) self.assertEqual(work_days["2025-03-10"]["hours"], 0) + @patch('tamigo.select_date_range') + @patch('questionary.select') + @patch('questionary.text') + @patch('tamigo.console') + def test_export_worked_hours_respects_zero_hour_filtering(self, mock_console, mock_text, mock_select, mock_date_range): + from tamigo import export_worked_hours + + # Mock API response with a 0-hour shift + mock_shifts = [ + { + "Date": "/Date(1741564800000)/", # 2025-03-10 + "StartTime": "2025-03-10T09:00:00Z", + "ActualShiftHours": 0, + "ActualShiftText": "Sick Day", + "IsAbsent": False + } + ] + self.client.get_employee_actual_shifts.return_value = mock_shifts + mock_date_range.return_value = (datetime(2025, 3, 1), datetime(2025, 3, 15)) + + # 1. Test with show_zero_hours = False -> Should NOT export anything + with patch('tamigo.current_config', {'show_zero_hours': False}): + export_worked_hours(self.client) + # Verify the warning was printed + mock_console.print.assert_any_call("[warning]WARNING: NO LOG ENTRIES DETECTED.[/warning]") + self.assertFalse(os.path.exists("tamigo_export_20250301_20250315.csv")) + + # 2. Test with show_zero_hours = True -> Should export the 0-hour day + mock_select.return_value.ask.return_value = "CSV" + mock_text.return_value.ask.return_value = "test_zero_export.csv" + + with patch('tamigo.current_config', {'show_zero_hours': True}): + export_worked_hours(self.client) + + self.assertTrue(os.path.exists("test_zero_export.csv")) + with open("test_zero_export.csv", "r") as f: + rows = list(csv.reader(f)) + self.assertEqual(len(rows), 2) # Header + 1 data row + self.assertEqual(rows[1][0], "2025-03-10") + self.assertEqual(rows[1][1], "0.00") + + os.remove("test_zero_export.csv") + @patch('tamigo.select_date_range') @patch('tamigo.get_worked_days') @patch('questionary.select')