"""tests for helper functions""" import pytest from common.src.helper import ( date_parser, get_duration_str, get_mapping, is_shorts, randomizor, time_parser, ) def test_randomizor_with_positive_length(): """test randomizer""" length = 10 result = randomizor(length) assert len(result) == length assert result.isalnum() def test_date_parser_with_int(): """unix timestamp""" timestamp = 1621539600 expected_date = "2021-05-20T19:40:00+00:00" assert date_parser(timestamp) == expected_date def test_date_parser_with_digit(): """unix timestamp""" timestamp = "1621539600" expected_date = "2021-05-20T19:40:00+00:00" assert date_parser(timestamp) == expected_date def test_date_parser_with_float(): """iso timestamp""" date_float = 1766210400.0 expected_date = "2025-12-20T06:00:00+00:00" assert date_parser(date_float) == expected_date def test_date_parser_with_str(): """iso timestamp""" date_str = "2021-05-21" expected_date = "2021-05-21T00:00:00+00:00" assert date_parser(date_str) == expected_date def test_date_parser_with_invalid_input(): """invalid type""" invalid_input = [1621539600] with pytest.raises(TypeError): date_parser(invalid_input) def test_date_parser_with_invalid_string_format(): """invalid date string""" invalid_date_str = "21/05/2021" with pytest.raises(ValueError): date_parser(invalid_date_str) def test_time_parser_with_numeric_string(): """as number""" timestamp = "100" expected_seconds = 100 assert time_parser(timestamp) == expected_seconds def test_time_parser_with_hh_mm_ss_format(): """to seconds""" timestamp = "01:00:00" expected_seconds = 3600.0 assert time_parser(timestamp) == expected_seconds def test_time_parser_with_empty_string(): """handle empty""" timestamp = "" assert time_parser(timestamp) is False def test_time_parser_with_invalid_format(): """not enough to unpack""" timestamp = "01:00" with pytest.raises(ValueError): time_parser(timestamp) def test_time_parser_with_non_numeric_input(): """non numeric""" timestamp = "1a:00:00" with pytest.raises(ValueError): time_parser(timestamp) def test_get_mapping(): """test mappint""" index_config = get_mapping() assert isinstance(index_config, list) assert all(isinstance(i, dict) for i in index_config) def test_is_shorts(): """is shorts id""" youtube_id = "YG3-Pw3rixU" assert is_shorts(youtube_id) def test_is_not_shorts(): """is not shorts id""" youtube_id = "Ogr9kbypSNg" assert is_shorts(youtube_id) is False def test_get_duration_str(): """only seconds""" assert get_duration_str(None) == "NA" assert get_duration_str(5) == "5s" assert get_duration_str(10) == "10s" assert get_duration_str(500) == "8m 20s" assert get_duration_str(1000) == "16m 40s" assert get_duration_str(5000) == "1h 23m 20s" assert get_duration_str(500000) == "5d 18h 53m 20s" assert get_duration_str(5000000) == "57d 20h 53m 20s" assert get_duration_str(50000000) == "1y 213d 16h 53m 20s"