diff options
| author | Dawid Rycerz <dawid@rycerz.xyz> | 2025-07-24 10:45:29 +0300 |
|---|---|---|
| committer | Dawid Rycerz <dawid@rycerz.xyz> | 2025-07-24 10:45:29 +0300 |
| commit | f7077b5c2f64f4d4a5d870f70e2f63caec220958 (patch) | |
| tree | 1f82a9707e4f26e5e6f9135b8dea3abe9a86f93c /servers/gitlab_python/tests | |
| parent | a8e4df1743c78394269d922246a29e419069b01e (diff) | |
feat: add epic_id to issue parameters
Diffstat (limited to 'servers/gitlab_python/tests')
| -rw-r--r-- | servers/gitlab_python/tests/conftest.py | 1 | ||||
| -rw-r--r-- | servers/gitlab_python/tests/test_server.py | 124 |
2 files changed, 123 insertions, 2 deletions
diff --git a/servers/gitlab_python/tests/conftest.py b/servers/gitlab_python/tests/conftest.py index 0519ecb..e69de29 100644 --- a/servers/gitlab_python/tests/conftest.py +++ b/servers/gitlab_python/tests/conftest.py @@ -1 +0,0 @@ -
\ No newline at end of file diff --git a/servers/gitlab_python/tests/test_server.py b/servers/gitlab_python/tests/test_server.py index 94820aa..64d27b1 100644 --- a/servers/gitlab_python/tests/test_server.py +++ b/servers/gitlab_python/tests/test_server.py @@ -477,4 +477,126 @@ def test_create_epic_comment_error(mock_gitlab, mock_settings): mock_gitlab.return_value.groups.get.side_effect = Exception("Group not found") result = server.create_epic_comment("bad-group", 101, "A new epic comment") assert "error" in result - assert "Group not found" in result["error"]
\ No newline at end of file + 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_create_issue_with_epic_id_success(mock_gitlab, mock_settings): + server = GitLabPythonServer(working_directory="/tmp") + proj = MagicMock() + issue = MagicMock() + issue.id = 123 + issue.web_url = "https://gitlab.com/project/-/issues/123" + proj.issues.create.return_value = issue + mock_gitlab.return_value.projects.get.return_value = proj + + # Mock groups and epic + group = MagicMock() + epic = MagicMock() + epic_issue = MagicMock() + epic.issues.create.return_value = epic_issue + group.epics.get.return_value = epic + mock_gitlab.return_value.groups.list.return_value = [group] + + result = server.create_issue( + project="project/path", + title="Test Issue", + description="Test Description", + epic_id=456 + ) + + assert "url" in result + assert result["url"] == "https://gitlab.com/project/-/issues/123" + proj.issues.create.assert_called_once() + group.epics.get.assert_called_once_with(456) + epic.issues.create.assert_called_once_with({"issue_id": 123}) + +@patch("mcp_server_gitlab_python.server.get_gitlab_settings", return_value=("https://gitlab.com", "dummy-token")) +@patch("gitlab.Gitlab") +def test_create_issue_with_epic_id_not_found(mock_gitlab, mock_settings): + server = GitLabPythonServer(working_directory="/tmp") + proj = MagicMock() + issue = MagicMock() + issue.id = 123 + issue.web_url = "https://gitlab.com/project/-/issues/123" + proj.issues.create.return_value = issue + mock_gitlab.return_value.projects.get.return_value = proj + + # Mock groups but no epic found + group = MagicMock() + group.epics.get.side_effect = Exception("Epic not found") + mock_gitlab.return_value.groups.list.return_value = [group] + + result = server.create_issue( + project="project/path", + title="Test Issue", + description="Test Description", + epic_id=456 + ) + + # Issue should still be created even if epic attachment fails + assert "url" in result + assert result["url"] == "https://gitlab.com/project/-/issues/123" + proj.issues.create.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_with_epic_id_success(mock_gitlab, mock_settings): + server = GitLabPythonServer(working_directory="/tmp") + proj = MagicMock() + issue = MagicMock() + issue.id = 123 + issue.web_url = "https://gitlab.com/project/-/issues/123" + proj.issues.get.return_value = issue + mock_gitlab.return_value.projects.get.return_value = proj + + # Mock groups and epic + group = MagicMock() + epic = MagicMock() + epic_issue = MagicMock() + epic.issues.create.return_value = epic_issue + group.epics.get.return_value = epic + mock_gitlab.return_value.groups.list.return_value = [group] + + result = server.update_issue( + project="project/path", + issue_iid=123, + title="Updated Title", + epic_id=456 + ) + + assert "url" in result + assert result["url"] == "https://gitlab.com/project/-/issues/123" + proj.issues.get.assert_called_once_with(123) + issue.save.assert_called_once() + group.epics.get.assert_called_once_with(456) + epic.issues.create.assert_called_once_with({"issue_id": 123}) + +@patch("mcp_server_gitlab_python.server.get_gitlab_settings", return_value=("https://gitlab.com", "dummy-token")) +@patch("gitlab.Gitlab") +def test_update_issue_with_epic_id_not_found(mock_gitlab, mock_settings): + server = GitLabPythonServer(working_directory="/tmp") + proj = MagicMock() + issue = MagicMock() + issue.id = 123 + issue.web_url = "https://gitlab.com/project/-/issues/123" + proj.issues.get.return_value = issue + mock_gitlab.return_value.projects.get.return_value = proj + + # Mock groups but no epic found + group = MagicMock() + group.epics.get.side_effect = Exception("Epic not found") + mock_gitlab.return_value.groups.list.return_value = [group] + + result = server.update_issue( + project="project/path", + issue_iid=123, + title="Updated Title", + epic_id=456 + ) + + # Issue should still be updated even if epic attachment fails + assert "url" in result + assert result["url"] == "https://gitlab.com/project/-/issues/123" + proj.issues.get.assert_called_once_with(123) + issue.save.assert_called_once()
\ No newline at end of file |
