Untitled

 avatar
unknown
plain_text
2 years ago
1.5 kB
5
Indexable
import unittest
import requests
from unittest.mock import patch
from io import StringIO
import sys
from git_fork_per import get_project_list

class TestGitLabAPI(unittest.TestCase):
    def setUp(self):
        self.username = "testuser"
        self.projects_data = [
            {
                "id": 1,
                "name": "personal_project",
                "owner": {"id": "testuser"}
            },
            {
                "id": 2,
                "name": "forked_project",
                "owner": {"id": "otheruser"},
                "forked_from_project": {"id": 3}
            },
            {
                "id": 3,
                "name": "original_project",
                "owner": {"id": "otheruser"}
            }
        ]
        self.expected_output = [
            "Personal project: personal_project",
            "Forked project: forked_project",
            "Personal project: original_project"
        ]
        
    @patch('sys.stdout', new_callable=StringIO)
    def test_get_project_list(self, mock_stdout):
        with patch.object(requests, 'get') as mock_get:
            mock_get.return_value.status_code = 200
            mock_get.return_value.json.return_value = self.projects_data
            get_project_list(self.username)
            output = mock_stdout.getvalue().strip().split('\n')
            self.assertEqual(output, self.expected_output)
            
if __name__ == '__main__':
    unittest.main()
Editor is loading...