Skip to content

Commit fa192a1

Browse files
committed
Tests for PR Build tab on project dashboard added
1 parent bfeec93 commit fa192a1

File tree

4 files changed

+74
-8
lines changed

4 files changed

+74
-8
lines changed

readthedocs/builds/views.py

-6
Original file line numberDiff line numberDiff line change
@@ -137,13 +137,7 @@ def get_queryset(self):
137137

138138
def get_context_data(self, **kwargs):
139139
context = super().get_context_data(**kwargs)
140-
141-
active_builds = self.get_queryset().exclude(
142-
state='finished',
143-
).values('id')
144-
145140
context['project'] = self.project
146-
context['active_builds'] = active_builds
147141
context['versions'] = Version.external.public(
148142
user=self.request.user,
149143
project=self.project,

readthedocs/rtd_tests/tests/test_builds.py

+25
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from django_dynamic_fixture import fixture, get
88
from django.utils import timezone
99

10+
from readthedocs.builds.constants import PULL_REQUEST
1011
from readthedocs.builds.models import Build, Version
1112
from readthedocs.doc_builder.config import load_yaml_config
1213
from readthedocs.doc_builder.environments import LocalBuildEnvironment
@@ -582,3 +583,27 @@ def test_using_latest_config(self):
582583
build.save()
583584

584585
self.assertTrue(build.using_latest_config())
586+
587+
def test_build_is_pr(self):
588+
# Turn the build version to pull request type.
589+
self.version.type = PULL_REQUEST
590+
self.version.save()
591+
592+
pr_build = get(
593+
Build,
594+
project=self.project,
595+
version=self.version,
596+
config={'version': 1},
597+
)
598+
599+
self.assertTrue(pr_build.is_pr)
600+
601+
def test_build_is_not_pr(self):
602+
build = get(
603+
Build,
604+
project=self.project,
605+
version=self.version,
606+
config={'version': 1},
607+
)
608+
609+
self.assertFalse(build.is_pr)

readthedocs/rtd_tests/tests/test_project.py

+6
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,12 @@ def test_has_good_build_excludes_pr_versions(self):
166166
# Test that PR Version is not considered for has_good_build.
167167
self.assertFalse(self.pip.has_good_build)
168168

169+
def test_get_pr_builds_url(self):
170+
self.assertEqual(
171+
self.pip.get_pr_builds_url(),
172+
f'/projects/{self.pip.slug}/builds/pr/'
173+
)
174+
169175

170176
class TestProjectTranslations(ProjectMixin, TestCase):
171177

readthedocs/rtd_tests/tests/test_views.py

+43-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from django.urls import reverse
88
from django_dynamic_fixture import get, new
99

10-
from readthedocs.builds.constants import LATEST, PULL_REQUEST
10+
from readthedocs.builds.constants import LATEST, PULL_REQUEST, BRANCH
1111
from readthedocs.builds.models import Build, Version
1212
from readthedocs.core.permissions import AdminPermission
1313
from readthedocs.projects.forms import UpdateProjectForm
@@ -293,7 +293,48 @@ def test_build_list_does_not_include_pr_versions(self):
293293
response = self.client.get(
294294
reverse('builds_project_list', args=[self.pip.slug]),
295295
)
296-
self.assertEqual(response.status_code, 200)
297296

297+
self.assertEqual(response.status_code, 200)
298298
self.assertNotIn(pr_version_build, response.context['build_qs'])
299299
self.assertNotIn(pr_version_build, response.context['active_builds'])
300+
301+
def test_pr_build_list_includes_pr_version_builds(self):
302+
pr_version = get(
303+
Version,
304+
project = self.pip,
305+
active = True,
306+
type = PULL_REQUEST,
307+
)
308+
pr_version_build = get(
309+
Build,
310+
project = self.pip,
311+
version = pr_version
312+
)
313+
response = self.client.get(
314+
reverse('pr_builds_project_list', args=[self.pip.slug]),
315+
)
316+
317+
self.assertEqual(response.status_code, 200)
318+
self.assertIn(pr_version_build, response.context['build_qs'])
319+
320+
def test_pr_build_list_does_not_include_internal_version_builds(self):
321+
internal_version = get(
322+
Version,
323+
project = self.pip,
324+
active = True,
325+
type = BRANCH,
326+
)
327+
internal_version_build = get(
328+
Build,
329+
project = self.pip,
330+
version = internal_version
331+
)
332+
response = self.client.get(
333+
reverse('pr_builds_project_list', args=[self.pip.slug]),
334+
)
335+
336+
self.assertEqual(response.status_code, 200)
337+
self.assertNotIn(
338+
internal_version_build,
339+
response.context['build_qs']
340+
)

0 commit comments

Comments
 (0)