Skip to content

Commit 136c1be

Browse files
committed
Add tests for /downloads/latest/prerelease redirect
1 parent 2595f77 commit 136c1be

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

downloads/tests/test_models.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,28 @@ def test_latest_python3(self):
7474
latest_3_99 = Release.objects.latest_python3(minor_version=99)
7575
self.assertIsNone(latest_3_99)
7676

77+
def test_latest_prerelease(self):
78+
latest_prerelease = Release.objects.latest_prerelease()
79+
self.assertEqual(latest_prerelease, self.pre_release)
80+
81+
# Create a newer prerelease with a future date
82+
newer_prerelease = Release.objects.create(
83+
version=Release.PYTHON3,
84+
name="Python 3.9.99",
85+
is_published=True,
86+
pre_release=True,
87+
release_date=self.pre_release.release_date + dt.timedelta(days=1),
88+
)
89+
latest_prerelease = Release.objects.latest_prerelease()
90+
self.assertEqual(latest_prerelease, newer_prerelease)
91+
self.assertNotEqual(latest_prerelease, self.pre_release)
92+
93+
def test_latest_prerelease_when_no_prerelease(self):
94+
# Delete the prerelease
95+
self.pre_release.delete()
96+
latest_prerelease = Release.objects.latest_prerelease()
97+
self.assertIsNone(latest_prerelease)
98+
7799
def test_get_version(self):
78100
self.assertEqual(self.release_275.name, 'Python 2.7.5')
79101
self.assertEqual(self.release_275.get_version(), '2.7.5')

downloads/tests/test_views.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,18 @@ def test_latest_python3x_redirects(self):
9595
response = self.client.get(url)
9696
self.assertRedirects(response, reverse("download:download"))
9797

98+
def test_latest_prerelease_redirect(self):
99+
url = reverse("download:download_latest_prerelease")
100+
response = self.client.get(url)
101+
self.assertRedirects(response, self.pre_release.get_absolute_url())
102+
103+
def test_latest_prerelease_redirect_when_no_prerelease(self):
104+
# Delete the prerelease to test fallback
105+
self.pre_release.delete()
106+
url = reverse("download:download_latest_prerelease")
107+
response = self.client.get(url)
108+
self.assertRedirects(response, reverse("download:download"))
109+
98110
def test_redirect_page_object_to_release_detail_page(self):
99111
self.release_275.release_page = None
100112
self.release_275.save()

0 commit comments

Comments
 (0)