Files
planka-mcp/test_planka_logic.py

165 lines
5.1 KiB
Python

import pytest
import requests
from unittest.mock import MagicMock, patch
from server import PlankaClient
@pytest.fixture
def client():
return PlankaClient("https://planka.test", "fake-token")
def test_get_projects_nested(client):
mock_response = {
"items": [
{"id": "1", "name": "Project 1"},
{"id": "2", "name": "Project 2"}
]
}
with patch("requests.get") as mock_get:
mock_get.return_value.json.return_value = mock_response
mock_get.return_value.status_code = 200
projects = client.get_projects()
assert len(projects) == 2
assert projects[0]["name"] == "Project 1"
def test_get_boards_included(client):
mock_response = {
"included": {
"boards": [
{"id": "b1", "name": "Board 1"}
]
}
}
with patch("requests.get") as mock_get:
mock_get.return_value.json.return_value = mock_response
mock_get.return_value.status_code = 200
boards = client.get_boards("p1")
assert len(boards) == 1
assert boards[0]["name"] == "Board 1"
def test_get_boards_empty(client):
mock_response = {"item": {"id": "p1"}, "included": {}}
with patch("requests.get") as mock_get:
mock_get.return_value.json.return_value = mock_response
mock_get.return_value.status_code = 200
boards = client.get_boards("p1")
assert boards == []
def test_get_cards_nested(client):
mock_response = {
"included": {
"cards": [
{"id": "c1", "name": "Card 1"}
]
}
}
with patch("requests.get") as mock_get:
mock_get.return_value.json.return_value = mock_response
mock_get.return_value.status_code = 200
cards = client.get_cards("b1")
assert len(cards) == 1
assert cards[0]["name"] == "Card 1"
def test_get_cards_empty(client):
mock_response = {}
with patch("requests.get") as mock_get:
mock_get.return_value.json.return_value = mock_response
mock_get.return_value.status_code = 200
cards = client.get_cards("b1")
assert cards == []
def test_get_board_lists_nested(client):
mock_response = {
"item": {
"lists": [{"id": "l1", "name": "List 1"}]
}
}
with patch("requests.get") as mock_get:
mock_get.return_value.json.return_value = mock_response
mock_get.return_value.status_code = 200
lists = client.get_board_lists("b1")
assert len(lists) == 1
def test_get_boards_flat(client):
mock_response = {
"boards": [{"id": "b1", "name": "Board 1"}]
}
with patch("requests.get") as mock_get:
mock_get.return_value.json.return_value = mock_response
mock_get.return_value.status_code = 200
boards = client.get_boards("p1")
assert len(boards) == 1
def test_get_board_lists_flat(client):
mock_response = {
"lists": [{"id": "l1", "name": "List 1"}]
}
with patch("requests.get") as mock_get:
mock_get.return_value.json.return_value = mock_response
mock_get.return_value.status_code = 200
lists = client.get_board_lists("b1")
assert len(lists) == 1
def test_get_actions_flat(client):
mock_response = [{"id": "a1"}]
with patch("requests.get") as mock_get:
mock_get.return_value.json.return_value = mock_response
mock_get.return_value.status_code = 200
actions = client.get_actions("c1")
assert len(actions) == 1
def test_get_json_decode_error(client):
with patch("requests.get") as mock_get:
mock_get.return_value.json.side_effect = requests.exceptions.JSONDecodeError("msg", "doc", 0)
mock_get.return_value.status_code = 200
mock_get.return_value.text = "not json"
res = client._get("endpoint")
assert res is None
def test_get_empty_text(client):
with patch("requests.get") as mock_get:
mock_get.return_value.status_code = 200
mock_get.return_value.text = ""
res = client._get("endpoint")
assert res is None
def test_post_json_decode_error(client):
with patch("requests.post") as mock_post:
mock_post.return_value.json.side_effect = requests.exceptions.JSONDecodeError("msg", "doc", 0)
mock_post.return_value.status_code = 200
mock_post.return_value.text = "not json"
res = client._post("endpoint", {})
assert res is None
def test_post_empty_text(client):
with patch("requests.post") as mock_post:
mock_post.return_value.status_code = 200
mock_post.return_value.text = ""
res = client._post("endpoint", {})
assert res is None
def test_get_boards_nested_item(client):
mock_response = {
"item": {
"boards": [{"id": "b1", "name": "Board 1"}]
}
}
with patch("requests.get") as mock_get:
mock_get.return_value.json.return_value = mock_response
mock_get.return_value.status_code = 200
boards = client.get_boards("p1")
assert len(boards) == 1