Skip to content

Commit b9b8930

Browse files
armenzgandrewshie-sentry
authored andcommitted
tests(resolve_groups): Clean up the tests (#91779)
This fixes and makes it clearer some of the tests for resolving groups.
1 parent a98e9bf commit b9b8930

File tree

2 files changed

+45
-17
lines changed

2 files changed

+45
-17
lines changed

tests/sentry/integrations/github/test_webhooks.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ def setUp(self):
240240
self.secret = "b3002c3e321d4b7880360d397db2ccfd"
241241
options.set("github-app.webhook-secret", self.secret)
242242

243-
def _setup_repo_test(self, project):
243+
def _create_integration_and_send_push_event(self):
244244
future_expires = datetime.now().replace(microsecond=0) + timedelta(minutes=5)
245245
with assume_test_silo_mode(SiloMode.CONTROL):
246246
integration = self.create_integration(
@@ -305,7 +305,7 @@ def test_simple(self, mock_record):
305305
name="baxterthehacker/repo",
306306
)
307307

308-
self._setup_repo_test(self.project)
308+
self._create_integration_and_send_push_event()
309309

310310
commit_list = list(
311311
Commit.objects.filter(
@@ -349,7 +349,7 @@ def test_simple(self, mock_record):
349349
@responses.activate
350350
@patch("sentry.integrations.github.webhook.metrics")
351351
def test_creates_missing_repo(self, mock_metrics):
352-
self._setup_repo_test(self.project)
352+
self._create_integration_and_send_push_event()
353353

354354
repos = Repository.objects.all()
355355
assert len(repos) == 1
@@ -369,7 +369,7 @@ def test_ignores_hidden_repo(self):
369369
repo.external_id = "35129377"
370370
repo.save()
371371

372-
self._setup_repo_test(self.project)
372+
self._create_integration_and_send_push_event()
373373

374374
repos = Repository.objects.all()
375375
assert len(repos) == 1
@@ -391,7 +391,7 @@ def test_anonymous_lookup(self):
391391
name="bàxterthehacker",
392392
)
393393

394-
self._setup_repo_test(self.project)
394+
self._create_integration_and_send_push_event()
395395

396396
commit_list = list(
397397
Commit.objects.filter(organization_id=self.project.organization.id)
@@ -576,7 +576,7 @@ def setUp(self):
576576
self.secret = "b3002c3e321d4b7880360d397db2ccfd"
577577
options.set("github-app.webhook-secret", self.secret)
578578

579-
def _setup_repo_test(self, project):
579+
def _create_integration_and_send_pull_request_opened_event(self):
580580
future_expires = datetime.now().replace(microsecond=0) + timedelta(minutes=5)
581581
with assume_test_silo_mode(SiloMode.CONTROL):
582582
integration = self.create_integration(
@@ -643,7 +643,7 @@ def test_opened(self, mock_record, mock_metrics, mock_open_pr_comment_workflow_d
643643
name="baxterthehacker/public-repo",
644644
)
645645

646-
self._setup_repo_test(self.project)
646+
self._create_integration_and_send_pull_request_opened_event()
647647

648648
prs = PullRequest.objects.filter(
649649
repository_id=repo.id, organization_id=self.project.organization.id
@@ -685,14 +685,14 @@ def test_opened_missing_option(self, mock_metrics):
685685
organization=self.organization, key="sentry:github_open_pr_bot", value=False
686686
)
687687

688-
self._setup_repo_test(self.project)
688+
self._create_integration_and_send_pull_request_opened_event()
689689

690690
assert mock_metrics.incr.call_count == 0
691691

692692
@patch("sentry.integrations.github.webhook.metrics")
693693
def test_creates_missing_repo(self, mock_metrics):
694694

695-
self._setup_repo_test(self.project)
695+
self._create_integration_and_send_pull_request_opened_event()
696696

697697
repos = Repository.objects.all()
698698
assert len(repos) == 1
@@ -713,7 +713,7 @@ def test_ignores_hidden_repo(self):
713713
repo.external_id = "35129377"
714714
repo.save()
715715

716-
self._setup_repo_test(self.project)
716+
self._create_integration_and_send_pull_request_opened_event()
717717

718718
repos = Repository.objects.all()
719719
assert len(repos) == 1

tests/sentry/models/test_pullrequest.py

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,42 +2,70 @@
22
from uuid import uuid4
33

44
from sentry.models.commit import Commit
5+
from sentry.models.group import GroupStatus
56
from sentry.models.grouphistory import GroupHistory, GroupHistoryStatus
7+
from sentry.models.grouplink import GroupLink
68
from sentry.models.pullrequest import PullRequest
79
from sentry.models.repository import Repository
810
from sentry.testutils.cases import TestCase
911

1012

1113
class FindReferencedGroupsTest(TestCase):
12-
def test_multiple_matches_basic(self):
14+
def test_resolve_in_commit(self) -> None:
1315
group = self.create_group()
14-
group2 = self.create_group()
1516

16-
repo = Repository.objects.create(name="example", organization_id=self.group.organization.id)
17+
repo = Repository.objects.create(name="example", organization_id=group.organization.id)
1718

1819
commit = Commit.objects.create(
1920
key=sha1(uuid4().hex.encode("utf-8")).hexdigest(),
2021
repository_id=repo.id,
2122
organization_id=group.organization.id,
23+
# It makes reference to the first group
2224
message=f"Foo Biz\n\nFixes {group.qualified_short_id}",
2325
)
2426

2527
groups = commit.find_referenced_groups()
2628
assert len(groups) == 1
2729
assert group in groups
30+
# These are created in resolved_in_commit
31+
assert GroupHistory.objects.filter(
32+
group=group,
33+
status=GroupHistoryStatus.SET_RESOLVED_IN_COMMIT,
34+
).exists()
35+
assert GroupLink.objects.filter(
36+
group=group,
37+
linked_type=GroupLink.LinkedType.commit,
38+
linked_id=commit.id,
39+
).exists()
40+
group.refresh_from_db()
41+
assert group.status == GroupStatus.RESOLVED
42+
43+
def test_resolve_in_pull_request(self) -> None:
44+
group = self.create_group()
45+
repo = Repository.objects.create(name="example", organization_id=group.organization.id)
2846

2947
pr = PullRequest.objects.create(
3048
key="1",
3149
repository_id=repo.id,
3250
organization_id=group.organization.id,
3351
title="very cool PR to fix the thing",
34-
message=f"Foo Biz\n\nFixes {group2.qualified_short_id}",
52+
# It makes reference to the second group
53+
message=f"Foo Biz\n\nFixes {group.qualified_short_id}",
3554
)
3655

3756
groups = pr.find_referenced_groups()
3857
assert len(groups) == 1
39-
assert group2 in groups
58+
assert group in groups
59+
# These are created in resolved_in_pull_request
4060
assert GroupHistory.objects.filter(
41-
group=group2,
61+
group=group,
4262
status=GroupHistoryStatus.SET_RESOLVED_IN_PULL_REQUEST,
43-
)
63+
).exists()
64+
assert GroupLink.objects.filter(
65+
group=group,
66+
linked_type=GroupLink.LinkedType.pull_request,
67+
linked_id=pr.id,
68+
).exists()
69+
# XXX: Oddly,resolved_in_pull_request doesn't update the group status
70+
group.refresh_from_db()
71+
assert group.status == GroupStatus.UNRESOLVED

0 commit comments

Comments
 (0)