@@ -46,6 +46,37 @@ def test_download_release_detail(self):
4646 response = self .client .get (url )
4747 self .assertEqual (response .status_code , 404 )
4848
49+ def test_download_release_detail_not_superseded (self ):
50+ """Test that latest releases and Python 2 do not show a superseded notice."""
51+ for release in [self .python_3 , self .python_3_8_20 , self .release_275 ]:
52+ with self .subTest (release = release .name ):
53+ url = reverse (
54+ "download:download_release_detail" ,
55+ kwargs = {"release_slug" : release .slug },
56+ )
57+ response = self .client .get (url )
58+ self .assertEqual (response .status_code , 200 )
59+ self .assertNotIn ("latest_in_series" , response .context )
60+ self .assertNotContains (response , "has been superseded by" )
61+
62+ def test_download_release_detail_superseded (self ):
63+ """Test that older releases show a superseded notice."""
64+ tests = [
65+ (self .python_3_10_18 , self .python_3 ),
66+ (self .python_3_8_19 , self .python_3_8_20 ),
67+ ]
68+ for old_release , latest_release in tests :
69+ with self .subTest (release = old_release .name ):
70+ url = reverse (
71+ "download:download_release_detail" ,
72+ kwargs = {"release_slug" : old_release .slug },
73+ )
74+ response = self .client .get (url )
75+ self .assertEqual (response .status_code , 200 )
76+ self .assertEqual (response .context ["latest_in_series" ], latest_release )
77+ self .assertContains (response , "has been superseded by" )
78+ self .assertContains (response , latest_release .name )
79+
4980 def test_download_os_list (self ):
5081 url = reverse ('download:download_os_list' , kwargs = {'slug' : self .linux .slug })
5182 response = self .client .get (url )
@@ -95,6 +126,18 @@ def test_latest_python3x_redirects(self):
95126 response = self .client .get (url )
96127 self .assertRedirects (response , reverse ("download:download" ))
97128
129+ def test_latest_prerelease_redirect (self ):
130+ url = reverse ("download:download_latest_prerelease" )
131+ response = self .client .get (url )
132+ self .assertRedirects (response , self .pre_release .get_absolute_url ())
133+
134+ def test_latest_prerelease_redirect_when_no_prerelease (self ):
135+ # Delete the prerelease to test fallback
136+ self .pre_release .delete ()
137+ url = reverse ("download:download_latest_prerelease" )
138+ response = self .client .get (url )
139+ self .assertRedirects (response , reverse ("download:download" ))
140+
98141 def test_redirect_page_object_to_release_detail_page (self ):
99142 self .release_275 .release_page = None
100143 self .release_275 .save ()
0 commit comments