@@ -4,9 +4,10 @@ use crate::models::generic::MaybeRfc2822DateTime;
44
55#[ derive( Debug , Deserialize , Serialize ) ]
66pub struct StatusJSON {
7- #[ serde( default = "MaybeRfc2822DateTime::default" ) ]
8- pub last_snapshot : MaybeRfc2822DateTime ,
9- pub last_gc : MaybeRfc2822DateTime ,
7+ #[ serde( default ) ]
8+ pub last_snapshot : Option < MaybeRfc2822DateTime > ,
9+ #[ serde( default ) ]
10+ pub last_gc : Option < MaybeRfc2822DateTime > ,
1011}
1112
1213#[ cfg( test) ]
@@ -27,20 +28,41 @@ mod tests {
2728
2829 // Wed, 18 Feb 2015 23:16:09 GMT
2930 assert_eq ! (
30- status. last_snapshot. try_into_datetime( ) . unwrap( ) ,
31+ status. last_snapshot. unwrap ( ) . try_into_datetime( ) . unwrap( ) ,
3132 Some (
3233 Rfc2822DateTime :: from( "Fri, 21 Jun 2024 17:40:02 +0000" )
3334 . try_into( )
3435 . unwrap( )
3536 )
3637 ) ;
3738 assert_eq ! (
38- status. last_gc. try_into_datetime( ) . unwrap( ) ,
39+ status. last_gc. unwrap ( ) . try_into_datetime( ) . unwrap( ) ,
3940 Some (
4041 Rfc2822DateTime :: from( "Sun, 16 Jun 2024 00:00:59 +0000" )
4142 . try_into( )
4243 . unwrap( )
4344 )
4445 ) ;
4546 }
47+
48+ #[ test]
49+ fn test_status_json_deserialization_missing_last_gc ( ) {
50+ let json_data = r#"
51+ {
52+ "last_snapshot": "Fri Jun 21 17:40:02 UTC 2024"
53+ }
54+ "# ;
55+
56+ let status: StatusJSON = serde_json:: from_str ( json_data) . unwrap ( ) ;
57+
58+ // Wed, 18 Feb 2015 23:16:09 GMT
59+ assert_eq ! (
60+ status. last_snapshot. unwrap( ) . try_into_datetime( ) . unwrap( ) ,
61+ Some (
62+ Rfc2822DateTime :: from( "Fri, 21 Jun 2024 17:40:02 +0000" )
63+ . try_into( )
64+ . unwrap( )
65+ )
66+ ) ;
67+ }
4668}
0 commit comments