|
5 | 5 | import pytest |
6 | 6 |
|
7 | 7 | from sentry.seer.models import SeerApiError |
8 | | -from sentry.tasks.seer.cleanup import cleanup_seer_repository_preferences |
| 8 | +from sentry.tasks.seer.cleanup import ( |
| 9 | + bulk_cleanup_seer_repository_preferences, |
| 10 | + cleanup_seer_repository_preferences, |
| 11 | +) |
9 | 12 | from sentry.testutils.cases import TestCase |
10 | 13 |
|
11 | 14 |
|
@@ -69,3 +72,40 @@ def test_cleanup_seer_repository_preferences_organization_not_found( |
69 | 72 | "repo_provider": self.repo_provider, |
70 | 73 | "repo_external_id": self.repo_external_id, |
71 | 74 | } |
| 75 | + |
| 76 | + |
| 77 | +class TestBulkSeerRepositoryCleanup(TestCase): |
| 78 | + def setUp(self) -> None: |
| 79 | + self.organization = self.create_organization() |
| 80 | + self.repos = [ |
| 81 | + {"repo_external_id": "123", "repo_provider": "github"}, |
| 82 | + {"repo_external_id": "456", "repo_provider": "github"}, |
| 83 | + ] |
| 84 | + |
| 85 | + @patch("sentry.tasks.seer.cleanup.make_bulk_remove_repositories_request") |
| 86 | + def test_bulk_cleanup_success(self, mock_request: MagicMock) -> None: |
| 87 | + """Test successful bulk cleanup of Seer repository preferences.""" |
| 88 | + mock_request.return_value.status = 200 |
| 89 | + |
| 90 | + bulk_cleanup_seer_repository_preferences( |
| 91 | + organization_id=self.organization.id, |
| 92 | + repos=self.repos, |
| 93 | + ) |
| 94 | + |
| 95 | + mock_request.assert_called_once() |
| 96 | + body = mock_request.call_args[0][0] |
| 97 | + assert body["organization_id"] == self.organization.id |
| 98 | + assert len(body["repositories"]) == 2 |
| 99 | + assert body["repositories"][0] == {"repo_provider": "github", "repo_external_id": "123"} |
| 100 | + assert body["repositories"][1] == {"repo_provider": "github", "repo_external_id": "456"} |
| 101 | + |
| 102 | + @patch("sentry.tasks.seer.cleanup.make_bulk_remove_repositories_request") |
| 103 | + def test_bulk_cleanup_api_error(self, mock_request: MagicMock) -> None: |
| 104 | + """Test handling of Seer API errors.""" |
| 105 | + mock_request.return_value.status = 500 |
| 106 | + |
| 107 | + with pytest.raises(SeerApiError): |
| 108 | + bulk_cleanup_seer_repository_preferences( |
| 109 | + organization_id=self.organization.id, |
| 110 | + repos=self.repos, |
| 111 | + ) |
0 commit comments