@@ -472,3 +472,99 @@ def test_get_last_updated_versions(self):
472472 self .assertEqual (
473473 result , [latest_edge ["channel" ], latest_stable ["channel" ]]
474474 )
475+
476+ def test_is_snap_old_empty_date (self ):
477+ """Test that empty or None date returns not old"""
478+ result = logic .is_snap_old (None )
479+ self .assertFalse (result ["is_old" ])
480+ self .assertEqual (result ["years_since_update" ], 0 )
481+
482+ result = logic .is_snap_old ("" )
483+ self .assertFalse (result ["is_old" ])
484+ self .assertEqual (result ["years_since_update" ], 0 )
485+
486+ def test_is_snap_old_invalid_date (self ):
487+ """Test that invalid date returns not old"""
488+ result = logic .is_snap_old ("invalid-date" )
489+ self .assertFalse (result ["is_old" ])
490+ self .assertEqual (result ["years_since_update" ], 0 )
491+
492+ @freeze_time ("2024-01-01" )
493+ def test_is_snap_old_recent_snap (self ):
494+ """Test that a recently updated snap is not considered old"""
495+ recent_date = "2023-06-01T10:00:00Z"
496+ result = logic .is_snap_old (recent_date )
497+ self .assertFalse (result ["is_old" ])
498+ self .assertEqual (result ["years_since_update" ], 0 )
499+ self .assertIn ("last_updated_formatted" , result )
500+
501+ @freeze_time ("2024-01-02" )
502+ def test_is_snap_old_exactly_two_years (self ):
503+ """Test that a snap updated exactly 2 years ago is considered old"""
504+ old_date = "2022-01-01T10:00:00Z"
505+ result = logic .is_snap_old (old_date )
506+ self .assertTrue (result ["is_old" ])
507+ self .assertEqual (result ["years_since_update" ], 1 )
508+ self .assertIn ("last_updated_formatted" , result )
509+
510+ @freeze_time ("2024-01-02" )
511+ def test_is_snap_old_very_old_snap (self ):
512+ """Test that a very old snap is considered old"""
513+ very_old_date = "2020-01-01T10:00:00Z"
514+ result = logic .is_snap_old (very_old_date )
515+ self .assertTrue (result ["is_old" ])
516+ self .assertEqual (result ["years_since_update" ], 4 )
517+ self .assertIn ("last_updated_formatted" , result )
518+
519+ @freeze_time ("2024-01-01" )
520+ def test_is_snap_old_just_under_two_years (self ):
521+ """Test that a snap updated just under 2 years ago is not old"""
522+ almost_old_date = "2022-02-01T10:00:00Z"
523+ result = logic .is_snap_old (almost_old_date )
524+ self .assertFalse (result ["is_old" ])
525+ self .assertEqual (result ["years_since_update" ], 1 )
526+ self .assertIn ("last_updated_formatted" , result )
527+
528+ @freeze_time ("2024-01-02" )
529+ def test_is_snap_old_custom_threshold (self ):
530+ """Test that custom threshold works correctly"""
531+ date_one_year_ago = "2023-01-01T10:00:00Z"
532+
533+ # With default threshold (2 years), should not be old
534+ result = logic .is_snap_old (date_one_year_ago )
535+ self .assertFalse (result ["is_old" ])
536+
537+ # With custom threshold (1 year), should be old
538+ result = logic .is_snap_old (date_one_year_ago , old_threshold_years = 1 )
539+ self .assertTrue (result ["is_old" ])
540+ self .assertEqual (result ["years_since_update" ], 0 ) # int(1.003) = 0
541+
542+ def test_is_snap_old_different_date_formats (self ):
543+ """Test that different ISO date formats are handled correctly"""
544+ # Test with different timezone formats
545+ dates_to_test = [
546+ "2020-01-01T10:00:00Z" ,
547+ "2020-01-01T10:00:00+00:00" ,
548+ "2020-01-01T10:00:00.000Z" ,
549+ "2020-01-01T10:00:00.123456+00:00" ,
550+ ]
551+
552+ for date_str in dates_to_test :
553+ with freeze_time ("2024-01-02" ):
554+ result = logic .is_snap_old (date_str )
555+ self .assertTrue (
556+ result ["is_old" ], f"Failed for date format: { date_str } "
557+ )
558+ self .assertEqual (result ["years_since_update" ], 4 )
559+
560+ def test_convert_date_month_year (self ):
561+ """Test the month-year date formatting function"""
562+ test_cases = [
563+ ("2022-01-14T10:00:00Z" , "January 2022" ),
564+ ("2020-12-25T15:30:00Z" , "December 2020" ),
565+ ("2019-06-01T00:00:00Z" , "June 2019" ),
566+ ]
567+
568+ for date_str , expected in test_cases :
569+ result = logic .convert_date_month_year (date_str )
570+ self .assertEqual (result , expected , f"Failed for date: { date_str } " )
0 commit comments