Spaces:
Build error
Build error
| from typing import Type | |
| from unittest.mock import MagicMock | |
| import pytest | |
| from pydantic import SecretStr | |
| from openhands.core.config import LLMConfig | |
| from openhands.integrations.provider import ProviderType | |
| from openhands.resolver.interfaces.github import GithubIssueHandler, GithubPRHandler | |
| from openhands.resolver.interfaces.gitlab import GitlabIssueHandler, GitlabPRHandler | |
| from openhands.resolver.issue_handler_factory import IssueHandlerFactory | |
| from openhands.resolver.interfaces.issue_definitions import ( | |
| ServiceContextIssue, | |
| ServiceContextPR, | |
| ) | |
| def llm_config(): | |
| return LLMConfig( | |
| model='test-model', | |
| api_key=SecretStr('test-key'), | |
| ) | |
| def factory_params(llm_config): | |
| return { | |
| 'owner': 'test-owner', | |
| 'repo': 'test-repo', | |
| 'token': 'test-token', | |
| 'username': 'test-user', | |
| 'base_domain': 'github.com', | |
| 'llm_config': llm_config, | |
| } | |
| test_cases = [ | |
| # platform, issue_type, expected_context_type, expected_handler_type | |
| (ProviderType.GITHUB, 'issue', ServiceContextIssue, GithubIssueHandler), | |
| (ProviderType.GITHUB, 'pr', ServiceContextPR, GithubPRHandler), | |
| (ProviderType.GITLAB, 'issue', ServiceContextIssue, GitlabIssueHandler), | |
| (ProviderType.GITLAB, 'pr', ServiceContextPR, GitlabPRHandler), | |
| ] | |
| def test_handler_creation( | |
| factory_params, | |
| platform: ProviderType, | |
| issue_type: str, | |
| expected_context_type: Type, | |
| expected_handler_type: Type, | |
| ): | |
| factory = IssueHandlerFactory( | |
| **factory_params, | |
| platform=platform, | |
| issue_type=issue_type | |
| ) | |
| handler = factory.create() | |
| assert isinstance(handler, expected_context_type) | |
| assert isinstance(handler._strategy, expected_handler_type) | |
| def test_invalid_issue_type(factory_params): | |
| factory = IssueHandlerFactory( | |
| **factory_params, | |
| platform=ProviderType.GITHUB, | |
| issue_type='invalid' | |
| ) | |
| with pytest.raises(ValueError, match='Invalid issue type: invalid'): | |
| factory.create() |