|
7 | 7 | # |
8 | 8 |
|
9 | 9 | import json |
| 10 | +from unittest import mock |
10 | 11 |
|
11 | 12 | from django.contrib.contenttypes.models import ContentType |
12 | 13 | from django.test import TestCase |
@@ -350,6 +351,30 @@ def test_request_queryset_status_methods(self): |
350 | 351 | self.assertIn(self.request2, qs) |
351 | 352 | self.assertNotIn(request3, qs) |
352 | 353 |
|
| 354 | + def test_request_model_close_method(self): |
| 355 | + self.request1.close(user=self.super_user, reason="Reason") |
| 356 | + self.request1.refresh_from_db() |
| 357 | + self.assertEqual(Request.Status.CLOSED, self.request1.status) |
| 358 | + self.assertEqual(self.super_user, self.request1.last_modified_by) |
| 359 | + close_event = self.request1.events.get(event_type=RequestEvent.CLOSED) |
| 360 | + self.assertEqual(self.super_user, close_event.user) |
| 361 | + self.assertEqual("Reason", close_event.text) |
| 362 | + |
| 363 | + def test_request_model_link_external_issue(self): |
| 364 | + external_issue = self.request1.link_external_issue( |
| 365 | + platform="github", |
| 366 | + repo="org/repo", |
| 367 | + issue_id="1", |
| 368 | + ) |
| 369 | + self.assertEqual(self.nexb_dataspace, external_issue.dataspace) |
| 370 | + self.assertEqual("github", external_issue.platform) |
| 371 | + self.assertEqual("org/repo", external_issue.repo) |
| 372 | + self.assertEqual("1", external_issue.issue_id) |
| 373 | + self.assertEqual("https://github.com/org/repo/issues/1", external_issue.issue_url) |
| 374 | + |
| 375 | + self.request1.refresh_from_db() |
| 376 | + self.assertEqual(external_issue, self.request1.external_issue) |
| 377 | + |
353 | 378 | def test_request_model_is_draft_property(self): |
354 | 379 | self.request1.status = Request.Status.OPEN |
355 | 380 | self.assertFalse(self.request1.is_draft) |
@@ -564,3 +589,21 @@ def test_request_content_object_update_request_count_on_delete(self): |
564 | 589 |
|
565 | 590 | component1.delete() |
566 | 591 | request1.delete() |
| 592 | + |
| 593 | + @mock.patch("workflow.integrations.github.GitHubIntegration.sync") |
| 594 | + def test_sync_called_on_save_when_issue_tracker_is_github(self, mock_sync): |
| 595 | + mock_sync.return_value = None |
| 596 | + self.nexb_dataspace.set_configuration("github_token", "fake-token") |
| 597 | + |
| 598 | + self.request_template1.create_request( |
| 599 | + title="Example Request", |
| 600 | + requester=self.super_user, |
| 601 | + ) |
| 602 | + mock_sync.assert_not_called() |
| 603 | + |
| 604 | + self.request_template1.update(issue_tracker_id="https://github.com/org/repo") |
| 605 | + request = self.request_template1.create_request( |
| 606 | + title="Example Request", |
| 607 | + requester=self.super_user, |
| 608 | + ) |
| 609 | + mock_sync.assert_called_once_with(request=request) |
0 commit comments