8
8
from sentry .models .release import Release
9
9
from sentry .models .releasecommit import ReleaseCommit
10
10
from sentry .models .releasefile import ReleaseFile
11
+ from sentry .models .releases .release_project import ReleaseProject
11
12
from sentry .models .repository import Repository
12
13
from sentry .testutils .cases import APITestCase
13
14
@@ -29,6 +30,9 @@ def test_multiple_projects(self):
29
30
release .add_project (project )
30
31
release .add_project (project2 )
31
32
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
+
32
36
ReleaseFile .objects .create (
33
37
organization_id = project .organization_id ,
34
38
release_id = release .id ,
@@ -61,7 +65,7 @@ def test_multiple_projects(self):
61
65
62
66
release .commit_count = 2
63
67
release .total_deploys = 1
64
- release .new_groups = 42
68
+ release .new_groups = 20
65
69
release .save ()
66
70
67
71
self .create_member (teams = [team1 , team2 ], user = user , organization = org )
@@ -79,11 +83,53 @@ def test_multiple_projects(self):
79
83
data = orjson .loads (response .content )
80
84
assert data ["deployCount" ] == 1
81
85
assert data ["commitCount" ] == 2
82
- assert data ["newGroups" ] == 42
86
+ assert data ["newGroups" ] == 20
83
87
assert data ["commitFilesChanged" ] == 2
84
88
assert data ["releaseFileCount" ] == 1
85
89
assert len (data ["projects" ]) == 2
86
90
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
+
87
133
def test_artifact_count_without_weak_association (self ):
88
134
user = self .create_user (is_staff = False , is_superuser = False )
89
135
org = self .organization
0 commit comments