summaryrefslogtreecommitdiff
path: root/servers/gitlab_python/tests/test_server.py
diff options
context:
space:
mode:
authorDawid Rycerz <dawid@rycerz.xyz>2025-07-15 17:36:46 +0300
committerDawid Rycerz <dawid@rycerz.xyz>2025-07-15 17:36:46 +0300
commitea094d5731ae36db599b9a9803c41db303fc685a (patch)
tree873145a3bc4cc3f5140a5ca12d9d84bf180a1b54 /servers/gitlab_python/tests/test_server.py
parent0d3b300943d44ad69f803f2e196bc643b937ef37 (diff)
feat: Add updates issues and epics functinoality
Diffstat (limited to 'servers/gitlab_python/tests/test_server.py')
-rw-r--r--servers/gitlab_python/tests/test_server.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/servers/gitlab_python/tests/test_server.py b/servers/gitlab_python/tests/test_server.py
index 7c0e69f..244cdd5 100644
--- a/servers/gitlab_python/tests/test_server.py
+++ b/servers/gitlab_python/tests/test_server.py
@@ -277,4 +277,62 @@ def test_create_epic_error(mock_gitlab, mock_settings):
mock_gitlab.return_value.groups.get.side_effect = Exception("Group not found")
result = server.create_epic("bad-group", "Epic Title", "Epic description")
assert "error" in result
+ assert "Group not found" in result["error"]
+
+@patch("mcp_server_gitlab_python.server.get_gitlab_settings", return_value=("https://gitlab.com", "dummy-token"))
+@patch("gitlab.Gitlab")
+def test_update_issue_success(mock_gitlab, mock_settings):
+ """Test successful update of a GitLab issue."""
+ server = GitLabPythonServer(working_directory="/tmp")
+ proj = MagicMock()
+ issue = MagicMock()
+ issue.web_url = "https://gitlab.com/project/-/issues/42"
+ proj.issues.get.return_value = issue
+ mock_gitlab.return_value.projects.get.return_value = proj
+ result = server.update_issue("project/path", 42, title="Updated Title", description="Updated desc", labels=["bug"])
+ assert "url" in result
+ assert result["url"] == "https://gitlab.com/project/-/issues/42"
+ proj.issues.get.assert_called_once_with(42)
+ assert issue.title == "Updated Title"
+ assert issue.description == "Updated desc"
+ assert issue.labels == ["bug"]
+ issue.save.assert_called_once()
+
+@patch("mcp_server_gitlab_python.server.get_gitlab_settings", return_value=("https://gitlab.com", "dummy-token"))
+@patch("gitlab.Gitlab")
+def test_update_issue_error(mock_gitlab, mock_settings):
+ """Test error handling for update_issue when project or issue is not found."""
+ server = GitLabPythonServer(working_directory="/tmp")
+ mock_gitlab.return_value.projects.get.side_effect = Exception("Project not found")
+ result = server.update_issue("bad-project", 42, title="Updated Title")
+ assert "error" in result
+ assert "Project not found" in result["error"]
+
+@patch("mcp_server_gitlab_python.server.get_gitlab_settings", return_value=("https://gitlab.com", "dummy-token"))
+@patch("gitlab.Gitlab")
+def test_update_epic_success(mock_gitlab, mock_settings):
+ """Test successful update of a GitLab epic."""
+ server = GitLabPythonServer(working_directory="/tmp")
+ group = MagicMock()
+ epic = MagicMock()
+ epic.web_url = "https://gitlab.com/groups/test-group/-/epics/101"
+ group.epics.get.return_value = epic
+ mock_gitlab.return_value.groups.get.return_value = group
+ result = server.update_epic("test-group", 101, title="Updated Epic", description="Updated desc", labels=["feature"])
+ assert "url" in result
+ assert result["url"] == "https://gitlab.com/groups/test-group/-/epics/101"
+ group.epics.get.assert_called_once_with(101)
+ assert epic.title == "Updated Epic"
+ assert epic.description == "Updated desc"
+ assert epic.labels == ["feature"]
+ epic.save.assert_called_once()
+
+@patch("mcp_server_gitlab_python.server.get_gitlab_settings", return_value=("https://gitlab.com", "dummy-token"))
+@patch("gitlab.Gitlab")
+def test_update_epic_error(mock_gitlab, mock_settings):
+ """Test error handling for update_epic when group or epic is not found."""
+ server = GitLabPythonServer(working_directory="/tmp")
+ mock_gitlab.return_value.groups.get.side_effect = Exception("Group not found")
+ result = server.update_epic("bad-group", 101, title="Updated Epic")
+ assert "error" in result
assert "Group not found" in result["error"] \ No newline at end of file