test: strengthen #58 dedup trap to assert filtering

The trap mocked issue.filter to return only issue 2, so result == [2]
would pass even with a wrong fix that suppresses TypeError but keeps all
entries. Now the API mock returns both issues; only correct filtering
of the pre-cutoff time entry keeps the result at [2].

Refs #67, #58
This commit is contained in:
Кокос Артем Николаевич
2026-07-17 11:22:10 +07:00
parent 3a3a7bb39c
commit d135408f5e

View File

@@ -779,12 +779,21 @@ def test_dedup_normalizes_naive_created_on_to_utc(mock_redmine_class):
mock_redmine.time_entry.filter.return_value = [e_old, e_new] mock_redmine.time_entry.filter.return_value = [e_old, e_new]
mock_issue1 = mock.MagicMock()
mock_issue1.id = 1
mock_issue1.project = "P"
mock_issue1.subject = "T"
mock_issue1.status = "New"
mock_issue2 = mock.MagicMock() mock_issue2 = mock.MagicMock()
mock_issue2.id = 2 mock_issue2.id = 2
mock_issue2.project = "P" mock_issue2.project = "P"
mock_issue2.subject = "T" mock_issue2.subject = "T"
mock_issue2.status = "New" mock_issue2.status = "New"
mock_redmine.issue.filter.return_value = [mock_issue2] # API возвращает обе задачи: issue 1 попадёт в результат, только если
# её time entry не отсечён дедупликацией. Корректный фикс #58 отсекает
# e_old (created_on/updated_on < cutoff) -> [2]; неправильный фикс
# "погасить TypeError и оставить всё" даст [1, 2] и тест упадёт.
mock_redmine.issue.filter.return_value = [mock_issue1, mock_issue2]
result = fetch_issues_with_spent_time( result = fetch_issues_with_spent_time(
"2026-07-01", "2026-07-01", dedup_before=dedup_cutoff "2026-07-01", "2026-07-01", dedup_before=dedup_cutoff