Skip to content

Commit 24c70b6

Browse files
committed
Tests for PR Build tab on project dashboard added
1 parent d09acd8 commit 24c70b6

File tree

5 files changed

+72
-11
lines changed

5 files changed

+72
-11
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_managers.py

-4
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,7 @@
22
from django.test import TestCase
33
from django_dynamic_fixture import get
44

5-
<<<<<<< HEAD
65
from readthedocs.builds.constants import EXTERNAL, BRANCH, TAG
7-
=======
8-
from readthedocs.builds.constants import PULL_REQUEST, BRANCH, TAG
9-
>>>>>>> build manager tests added
106
from readthedocs.builds.models import Version, Build
117
from readthedocs.projects.constants import PUBLIC, PRIVATE, PROTECTED
128
from readthedocs.projects.models import Project

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_external_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

+41-1
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,46 @@ def test_build_list_does_not_include_external_versions(self):
294294
reverse('builds_project_list', args=[self.pip.slug]),
295295
)
296296
self.assertEqual(response.status_code, 200)
297-
298297
self.assertNotIn(external_version_build, response.context['build_qs'])
299298
self.assertNotIn(external_version_build, response.context['active_builds'])
299+
300+
def test_pr_build_list_includes_pr_version_builds(self):
301+
pr_version = get(
302+
Version,
303+
project = self.pip,
304+
active = True,
305+
type = PULL_REQUEST,
306+
)
307+
pr_version_build = get(
308+
Build,
309+
project = self.pip,
310+
version = pr_version
311+
)
312+
response = self.client.get(
313+
reverse('pr_builds_project_list', args=[self.pip.slug]),
314+
)
315+
316+
self.assertEqual(response.status_code, 200)
317+
self.assertIn(pr_version_build, response.context['build_qs'])
318+
319+
def test_pr_build_list_does_not_include_internal_version_builds(self):
320+
internal_version = get(
321+
Version,
322+
project = self.pip,
323+
active = True,
324+
type = BRANCH,
325+
)
326+
internal_version_build = get(
327+
Build,
328+
project = self.pip,
329+
version = internal_version
330+
)
331+
response = self.client.get(
332+
reverse('pr_builds_project_list', args=[self.pip.slug]),
333+
)
334+
335+
self.assertEqual(response.status_code, 200)
336+
self.assertNotIn(
337+
internal_version_build,
338+
response.context['build_qs']
339+
)

0 commit comments

Comments
 (0)