добавил систему миграций и связь одной записи Redmine с несколькими активностями Clockify и запретил отправку трудочасов при инициализации базы данных
This commit is contained in:
43
tests/test_redmine.py
Normal file
43
tests/test_redmine.py
Normal file
@@ -0,0 +1,43 @@
|
||||
"""Тесты выборочной загрузки задач Redmine."""
|
||||
|
||||
from unittest import TestCase
|
||||
from unittest.mock import Mock, patch
|
||||
|
||||
import requests
|
||||
|
||||
from api.redmine import RedmineAPI
|
||||
|
||||
|
||||
class RedmineAPITestCase(TestCase):
|
||||
"""Проверяет запрос только необходимых приложению задач."""
|
||||
|
||||
def test_get_issues_requests_only_given_issue_ids(self):
|
||||
"""Задачи загружаются отдельно и только по номерам тегов Clockify."""
|
||||
redmine = RedmineAPI.__new__(RedmineAPI)
|
||||
redmine.get_issue = Mock(side_effect=lambda issue_id: issue_id)
|
||||
|
||||
result = redmine.get_issues({60130, 51906})
|
||||
|
||||
self.assertEqual(result, [51906, 60130])
|
||||
self.assertEqual(
|
||||
[call.args[0] for call in redmine.get_issue.call_args_list],
|
||||
[51906, 60130],
|
||||
)
|
||||
|
||||
def test_get_issues_skips_unavailable_issue(self):
|
||||
"""Недоступная задача не мешает загрузить остальные указанные задачи."""
|
||||
redmine = RedmineAPI.__new__(RedmineAPI)
|
||||
redmine.get_issue = Mock(side_effect=[51906, None])
|
||||
|
||||
self.assertEqual(redmine.get_issues({51906, 60130}), [51906])
|
||||
|
||||
@patch("api.redmine.requests.get")
|
||||
def test_get_issue_returns_none_on_timeout(self, get):
|
||||
"""Сетевой таймаут одной задачи не прерывает обновление БД."""
|
||||
get.side_effect = requests.ConnectTimeout("Redmine недоступен")
|
||||
redmine = RedmineAPI.__new__(RedmineAPI)
|
||||
redmine.base_url = "https://redmine.example/"
|
||||
redmine.issue = "issues/{id}.json"
|
||||
redmine.token = "token"
|
||||
|
||||
self.assertIsNone(redmine.get_issue(38243))
|
||||
Reference in New Issue
Block a user