Coverage for tests / test_list_service_desks.py: 100%
56 statements
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-25 10:07 -0500
« prev ^ index » next coverage.py v7.13.0, created at 2025-12-25 10:07 -0500
1"""
2Tests for list_service_desks.py script.
3"""
5import sys
6import json
7from pathlib import Path
8from unittest.mock import patch, MagicMock
10import pytest
12# Add scripts directory to path
13sys.path.insert(0, str(Path(__file__).parent.parent / 'scripts'))
16def test_list_all_service_desks(mock_jira_client):
17 """Test fetching all available service desks."""
18 from list_service_desks import list_service_desks
20 with patch('list_service_desks.get_jira_client', return_value=mock_jira_client):
21 result = list_service_desks()
23 assert result is not None
24 assert 'values' in result
25 assert len(result['values']) == 3
26 mock_jira_client.get_service_desks.assert_called_once()
29def test_service_desk_has_required_fields(mock_jira_client):
30 """Test that each service desk has id, projectId, projectName, projectKey."""
31 from list_service_desks import list_service_desks
33 with patch('list_service_desks.get_jira_client', return_value=mock_jira_client):
34 result = list_service_desks()
36 for sd in result['values']:
37 assert 'id' in sd
38 assert 'projectId' in sd
39 assert 'projectName' in sd
40 assert 'projectKey' in sd
43def test_format_text_output(mock_jira_client, capsys):
44 """Test human-readable table output."""
45 from list_service_desks import format_service_desks_text
47 service_desks = mock_jira_client.get_service_desks()
48 format_service_desks_text(service_desks)
50 captured = capsys.readouterr()
51 assert 'Available Service Desks' in captured.out
52 assert 'IT Service Desk' in captured.out
53 assert 'HR Service Desk' in captured.out
54 assert 'Total: 3 service desks' in captured.out
57def test_format_json_output(mock_jira_client):
58 """Test JSON output format."""
59 from list_service_desks import format_service_desks_json
61 service_desks = mock_jira_client.get_service_desks()
62 json_output = format_service_desks_json(service_desks)
64 parsed = json.loads(json_output)
65 assert 'values' in parsed
66 assert len(parsed['values']) == 3
69def test_filter_by_project_key(mock_jira_client):
70 """Test filtering service desks by project key pattern."""
71 from list_service_desks import filter_service_desks
73 service_desks = mock_jira_client.get_service_desks()
74 filtered = filter_service_desks(service_desks, project_key_filter='ITS')
76 assert len(filtered['values']) == 1
77 assert filtered['values'][0]['projectKey'] == 'ITS'
80def test_empty_service_desks(capsys):
81 """Test output when no service desks exist."""
82 from list_service_desks import format_service_desks_text
84 empty_result = {'values': [], 'size': 0}
85 format_service_desks_text(empty_result)
87 captured = capsys.readouterr()
88 assert 'No service desks found' in captured.out
91def test_pagination_handling(mock_jira_client):
92 """Test handling paginated results (limit/start)."""
93 from list_service_desks import list_service_desks
95 with patch('list_service_desks.get_jira_client', return_value=mock_jira_client):
96 result = list_service_desks(start=0, limit=2)
98 mock_jira_client.get_service_desks.assert_called_with(start=0, limit=2)