@@ -17,6 +17,76 @@ def versions() -> Versions:
1717 ])
1818
1919
20+ def test_reversed (versions ) -> None :
21+ # Act
22+ output = list (reversed (versions ))
23+
24+ # Assert
25+ assert output [0 ].name == "3.9"
26+ assert output [- 1 ].name == "3.14"
27+
28+
29+ def test_from_json () -> None :
30+ # Arrange
31+ json_data = {
32+ "3.14" : {
33+ "branch" : "main" ,
34+ "pep" : 745 ,
35+ "status" : "feature" ,
36+ "first_release" : "2025-10-01" ,
37+ "end_of_life" : "2030-10" ,
38+ "release_manager" : "Hugo van Kemenade" ,
39+ },
40+ "3.13" : {
41+ "branch" : "3.13" ,
42+ "pep" : 719 ,
43+ "status" : "bugfix" ,
44+ "first_release" : "2024-10-07" ,
45+ "end_of_life" : "2029-10" ,
46+ "release_manager" : "Thomas Wouters" ,
47+ },
48+ }
49+
50+ # Act
51+ versions = list (Versions .from_json (json_data ))
52+
53+ # Assert
54+ assert versions == [
55+ Version (name = "3.13" , status = "stable" , branch_or_tag = "" ),
56+ Version (name = "3.14" , status = "in development" , branch_or_tag = "" ),
57+ ]
58+
59+
60+ def test_from_json_error () -> None :
61+ # Arrange
62+ json_data = {"2.8" : {"branch" : "2.8" , "pep" : 404 , "status" : "ex-release" }}
63+
64+ # Act / Assert
65+ with pytest .raises (
66+ ValueError ,
67+ match = "Saw invalid version status 'ex-release', expected to be one of" ,
68+ ):
69+ Versions .from_json (json_data )
70+
71+
72+ def test_current_stable (versions ) -> None :
73+ # Act
74+ current_stable = versions .current_stable
75+
76+ # Assert
77+ assert current_stable .name == "3.13"
78+ assert current_stable .status == "stable"
79+
80+
81+ def test_current_dev (versions ) -> None :
82+ # Act
83+ current_dev = versions .current_dev
84+
85+ # Assert
86+ assert current_dev .name == "3.14"
87+ assert current_dev .status == "in development"
88+
89+
2090def test_filter_default (versions ) -> None :
2191 # Act
2292 filtered = versions .filter ()
0 commit comments