mirror of
https://github.com/tubearchivist/tubearchivist.git
synced 2025-05-09 04:41:10 +00:00
114 lines
2.7 KiB
Python
114 lines
2.7 KiB
Python
"""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-20"
|
|
assert date_parser(timestamp) == expected_date
|
|
|
|
|
|
def test_date_parser_with_str():
|
|
"""iso timestamp"""
|
|
date_str = "2021-05-21"
|
|
expected_date = "2021-05-21"
|
|
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"
|