Files
website-v2/libraries/tests/test_utils.py
2023-07-10 06:22:36 -07:00

76 lines
2.1 KiB
Python

from datetime import datetime
from dateutil.relativedelta import relativedelta
import os
from libraries.utils import (
decode_content,
generate_fake_email,
get_first_last_day_last_month,
parse_date,
write_content_to_tempfile,
)
def test_decode_content():
byte_content = b"This is a test content"
str_content = "This is a test content"
decoded_byte_content = decode_content(byte_content)
decoded_str_content = decode_content(str_content)
assert decoded_byte_content == str_content
assert decoded_str_content == str_content
def test_generate_fake_email():
sample = "Tester de Testerson"
expected = "tester_de_testerson"
result = generate_fake_email(sample)
assert expected in result
assert "@example.com" in result
def test_get_first_last_day_last_month():
first_day, last_day = get_first_last_day_last_month()
# Assert that the first day is indeed the first day of the month
assert first_day.day == 1
# Assert that the last day is the last day of the month
assert (last_day + relativedelta(days=1)).day == 1
# Assert that both dates are less than today's date
assert first_day < datetime.now()
assert last_day < datetime.now()
# Assert that both dates belong to the same month and year
assert first_day.month == last_day.month
assert first_day.year == last_day.year
def test_parse_date_iso():
expected = datetime.now()
result = parse_date(expected.isoformat())
assert expected == result
def test_parse_date_str():
expected = datetime.now()
input_date = f"{expected.month}-{expected.day}-{expected.year}"
result = parse_date(input_date)
assert expected.date() == result.date()
def test_parse_date_str_none():
expected = None
result = parse_date("")
assert expected == result
def test_write_content_to_tempfile():
content = b"This is a test content"
temp_file = write_content_to_tempfile(content)
assert os.path.exists(temp_file.name)
with open(temp_file.name, "rb") as f:
file_content = f.read()
assert file_content == content
os.remove(temp_file.name)