|
3 | 3 | from sentry.api.serializers import serialize
|
4 | 4 | from sentry.models.commit import Commit
|
5 | 5 | from sentry.models.commitauthor import CommitAuthor
|
| 6 | +from sentry.models.pullrequest import PullRequest |
6 | 7 | from sentry.models.release import Release
|
7 | 8 | from sentry.models.releasecommit import ReleaseCommit
|
8 | 9 | from sentry.models.repository import Repository
|
@@ -70,3 +71,67 @@ def test_no_author(self):
|
70 | 71 | result = serialize(commit, user)
|
71 | 72 |
|
72 | 73 | assert result["author"] == {}
|
| 74 | + |
| 75 | + def test_pull_requests(self): |
| 76 | + """Test we can correctly match pull requests to commits.""" |
| 77 | + user = self.create_user() |
| 78 | + project = self.create_project() |
| 79 | + release = Release.objects.create( |
| 80 | + organization_id=project.organization_id, version=uuid4().hex |
| 81 | + ) |
| 82 | + release.add_project(project) |
| 83 | + repository = Repository.objects.create( |
| 84 | + organization_id=project.organization_id, name="test/test" |
| 85 | + ) |
| 86 | + commit1 = Commit.objects.create( |
| 87 | + organization_id=project.organization_id, |
| 88 | + repository_id=repository.id, |
| 89 | + key="abc", |
| 90 | + message="waddap", |
| 91 | + ) |
| 92 | + ReleaseCommit.objects.create( |
| 93 | + organization_id=project.organization_id, |
| 94 | + project_id=project.id, |
| 95 | + release=release, |
| 96 | + commit=commit1, |
| 97 | + order=1, |
| 98 | + ) |
| 99 | + |
| 100 | + commit2 = Commit.objects.create( |
| 101 | + organization_id=project.organization_id, |
| 102 | + repository_id=repository.id, |
| 103 | + key="def", |
| 104 | + message="waddap2", |
| 105 | + ) |
| 106 | + ReleaseCommit.objects.create( |
| 107 | + organization_id=project.organization_id, |
| 108 | + project_id=project.id, |
| 109 | + release=release, |
| 110 | + commit=commit2, |
| 111 | + order=2, |
| 112 | + ) |
| 113 | + |
| 114 | + PullRequest.objects.create( |
| 115 | + organization_id=project.organization_id, |
| 116 | + repository_id=repository.id, |
| 117 | + key="pr1", |
| 118 | + merge_commit_sha=commit1.key, |
| 119 | + ) |
| 120 | + PullRequest.objects.create( |
| 121 | + organization_id=project.organization_id, |
| 122 | + repository_id=repository.id, |
| 123 | + key="pr2", |
| 124 | + merge_commit_sha=commit2.key, |
| 125 | + ) |
| 126 | + PullRequest.objects.create( |
| 127 | + organization_id=project.organization_id, |
| 128 | + repository_id=repository.id, |
| 129 | + key="pr3", |
| 130 | + merge_commit_sha=commit1.key, |
| 131 | + ) |
| 132 | + |
| 133 | + results = serialize([commit1, commit2], user) |
| 134 | + |
| 135 | + # In the case of multiple pull requests, one is chosen arbitrarily. |
| 136 | + assert results[0]["pullRequest"]["id"] == "pr1" or results[0]["pullRequest"]["id"] == "pr3" |
| 137 | + assert results[1]["pullRequest"]["id"] == "pr2" |
0 commit comments