Skip to content

Commit b881669

Browse files
fix(releases): fix summation of release meta newGroups
1 parent 0bbd4d0 commit b881669

File tree

2 files changed

+49
-3
lines changed

2 files changed

+49
-3
lines changed

src/sentry/api/endpoints/organization_release_meta.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ def get(self, request: Request, organization, version) -> Response:
104104
"version": release.version,
105105
"versionInfo": expose_version_info(release.version_info),
106106
"projects": projects,
107-
"newGroups": release.new_groups,
107+
"newGroups": sum(project["newGroups"] for project in projects),
108108
"deployCount": release.total_deploys,
109109
"commitCount": release.commit_count,
110110
"released": release.date_released or release.date_added,

tests/sentry/api/endpoints/test_organization_release_meta.py

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from sentry.models.release import Release
99
from sentry.models.releasecommit import ReleaseCommit
1010
from sentry.models.releasefile import ReleaseFile
11+
from sentry.models.releases.release_project import ReleaseProject
1112
from sentry.models.repository import Repository
1213
from sentry.testutils.cases import APITestCase
1314

@@ -29,6 +30,9 @@ def test_multiple_projects(self):
2930
release.add_project(project)
3031
release.add_project(project2)
3132

33+
ReleaseProject.objects.filter(project=project, release=release).update(new_groups=10)
34+
ReleaseProject.objects.filter(project=project2, release=release).update(new_groups=10)
35+
3236
ReleaseFile.objects.create(
3337
organization_id=project.organization_id,
3438
release_id=release.id,
@@ -61,7 +65,7 @@ def test_multiple_projects(self):
6165

6266
release.commit_count = 2
6367
release.total_deploys = 1
64-
release.new_groups = 42
68+
release.new_groups = 20
6569
release.save()
6670

6771
self.create_member(teams=[team1, team2], user=user, organization=org)
@@ -79,11 +83,53 @@ def test_multiple_projects(self):
7983
data = orjson.loads(response.content)
8084
assert data["deployCount"] == 1
8185
assert data["commitCount"] == 2
82-
assert data["newGroups"] == 42
86+
assert data["newGroups"] == 20
8387
assert data["commitFilesChanged"] == 2
8488
assert data["releaseFileCount"] == 1
8589
assert len(data["projects"]) == 2
8690

91+
def test_favor_project_new_group_sum(self):
92+
# test that the release meta `newGroups` field is the sum of the
93+
# `newGroups` value across all projects, in the case that
94+
# the release `newGroups` field is not the same value.
95+
96+
user = self.create_user(is_staff=False, is_superuser=False)
97+
org = self.organization
98+
org.flags.allow_joinleave = False
99+
org.save()
100+
101+
team1 = self.create_team(organization=org)
102+
team2 = self.create_team(organization=org)
103+
104+
project = self.create_project(teams=[team1], organization=org)
105+
project2 = self.create_project(teams=[team2], organization=org)
106+
107+
release = Release.objects.create(organization_id=org.id, version="abcabcabc")
108+
release.add_project(project)
109+
release.add_project(project2)
110+
111+
ReleaseProject.objects.filter(project=project, release=release).update(new_groups=10)
112+
ReleaseProject.objects.filter(project=project2, release=release).update(new_groups=10)
113+
114+
release.new_groups = 12 # incorrect value
115+
release.save()
116+
117+
self.create_member(teams=[team1, team2], user=user, organization=org)
118+
self.login_as(user=user)
119+
120+
url = reverse(
121+
"sentry-api-0-organization-release-meta",
122+
kwargs={"organization_id_or_slug": org.slug, "version": release.version},
123+
)
124+
response = self.client.get(url)
125+
126+
assert response.status_code == 200, response.content
127+
128+
data = orjson.loads(response.content)
129+
# should be the sum of the `newGroups` values across all projects rather than release.new_groups
130+
assert data["newGroups"] == 20
131+
assert len(data["projects"]) == 2
132+
87133
def test_artifact_count_without_weak_association(self):
88134
user = self.create_user(is_staff=False, is_superuser=False)
89135
org = self.organization

0 commit comments

Comments
 (0)