2023-02-19 02:37:13 +01:00
|
|
|
from unittest import TestCase, mock
|
|
|
|
|
2023-05-06 11:56:17 +02:00
|
|
|
import pytest
|
|
|
|
from requests import Session
|
|
|
|
|
2023-02-19 02:37:13 +01:00
|
|
|
import core.config
|
|
|
|
import core.widget
|
|
|
|
import modules.contrib.gitlab
|
|
|
|
|
|
|
|
pytest.importorskip("requests")
|
|
|
|
|
|
|
|
|
|
|
|
def build_gitlab_module(actions=""):
|
|
|
|
config = core.config.Config(["-p", "gitlab.actions={}".format(actions)])
|
|
|
|
return modules.contrib.gitlab.Module(config=config, theme=None)
|
|
|
|
|
2023-05-06 11:56:17 +02:00
|
|
|
|
2023-02-19 02:37:13 +01:00
|
|
|
def mock_todo_api_response():
|
|
|
|
res = mock.Mock()
|
|
|
|
res.json = lambda: [
|
|
|
|
{"action_name": "assigned"},
|
|
|
|
{"action_name": "assigned"},
|
|
|
|
{"action_name": "approval_required"},
|
|
|
|
]
|
|
|
|
res.status_code = 200
|
|
|
|
return res
|
|
|
|
|
2023-05-06 11:56:17 +02:00
|
|
|
|
2023-02-19 02:37:13 +01:00
|
|
|
class TestGitlabUnit(TestCase):
|
|
|
|
def test_load_module(self):
|
|
|
|
__import__("modules.contrib.gitlab")
|
|
|
|
|
|
|
|
@mock.patch.object(Session, "get", return_value=mock_todo_api_response())
|
|
|
|
def test_unfiltered(self, _):
|
|
|
|
module = build_gitlab_module()
|
|
|
|
module.update()
|
|
|
|
assert module.widgets()[0].full_text() == "3"
|
|
|
|
|
|
|
|
@mock.patch.object(Session, "get", return_value=mock_todo_api_response())
|
|
|
|
def test_filtered(self, _):
|
|
|
|
module = build_gitlab_module(actions="approval_required")
|
|
|
|
module.update()
|
|
|
|
assert module.widgets()[0].full_text() == "1"
|
2023-05-06 11:56:17 +02:00
|
|
|
|
|
|
|
@mock.patch.object(Session, "get", return_value=mock_todo_api_response())
|
|
|
|
def test_state_warning(self, _):
|
|
|
|
module = build_gitlab_module(actions="approval_required")
|
|
|
|
module.update()
|
|
|
|
|
|
|
|
assert module.state(None) == ["warning"]
|
|
|
|
|
|
|
|
@mock.patch.object(Session, "get", return_value=mock_todo_api_response())
|
|
|
|
def test_state_normal(self, _):
|
|
|
|
module = build_gitlab_module(actions="empty_filter")
|
|
|
|
module.update()
|
|
|
|
|
|
|
|
assert module.state(None) == []
|
|
|
|
|
|
|
|
@mock.patch.object(Session, "get", return_value=mock_todo_api_response())
|
|
|
|
def test_state_normal_before_update(self, _):
|
|
|
|
module = build_gitlab_module(actions="approval_required")
|
|
|
|
|
|
|
|
assert module.state(None) == []
|
|
|
|
|
|
|
|
@mock.patch.object(Session, "get", side_effect=Exception("Something went wrong"))
|
|
|
|
def test_state_normal_if_na(self, _):
|
|
|
|
module = build_gitlab_module(actions="approval_required")
|
|
|
|
module.update()
|
|
|
|
|
|
|
|
assert module.state(None) == []
|