@@ -17,6 +17,76 @@ def versions() -> Versions:
17
17
])
18
18
19
19
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
+
20
90
def test_filter_default (versions ) -> None :
21
91
# Act
22
92
filtered = versions .filter ()
0 commit comments