data-xexe/tests/tests_unit/test_input_handling.py

107 lines
3.5 KiB
Python
Raw Normal View History

import datetime
2024-06-11 13:14:15 +02:00
import pathlib
import pytest
2024-06-11 13:34:57 +02:00
from money.currency import Currency
from xexe.inputs_handling import handle_get_rates_inputs
from xexe.utils import DateRange
def test_handle_input_rates_works_with_full_correct_inputs():
handled_inputs = handle_get_rates_inputs(
2024-06-11 13:27:07 +02:00
start_date=datetime.datetime.now() - datetime.timedelta(days=7),
end_date=datetime.datetime.now() - datetime.timedelta(days=1),
currencies="USD,EUR,GBP",
dry_run=False,
2024-06-11 21:10:07 +02:00
ignore_warnings=True,
output="test_output.csv",
)
expected_result = {
"date_range": DateRange(
2024-06-11 13:27:07 +02:00
start_date=(datetime.datetime.now() - datetime.timedelta(days=7)).date(),
end_date=(datetime.datetime.now() - datetime.timedelta(days=1)).date(),
),
"currencies": {Currency("USD"), Currency("EUR"), Currency("GBP")},
"dry_run": False,
2024-06-11 21:10:07 +02:00
"ignore_warnings": True,
"output": pathlib.Path("test_output.csv"),
}
2024-06-11 13:14:15 +02:00
2024-06-11 13:21:42 +02:00
for key in expected_result.keys():
assert handled_inputs[key] == expected_result[key]
def test_handle_input_rates_raises_with_bad_currency_code():
2024-06-11 13:34:57 +02:00
with pytest.raises(ValueError):
handle_get_rates_inputs(
start_date=datetime.datetime.now(),
end_date=datetime.datetime.now() + datetime.timedelta(days=7),
currencies="not_a_currency,USD,not_this_either",
dry_run=False,
2024-06-11 21:10:07 +02:00
ignore_warnings=True,
output="test_output.csv",
)
def test_handle_input_rates_raises_with_start_date_after_end_date():
with pytest.raises(ValueError):
handle_get_rates_inputs(
start_date=datetime.datetime.now(),
end_date=datetime.datetime.now() - datetime.timedelta(days=7),
currencies="GBP,USD",
dry_run=False,
2024-06-11 21:10:07 +02:00
ignore_warnings=True,
output="test_output.csv",
)
def test_handle_input_rates_raises_with_output_different_than_csv():
with pytest.raises(ValueError):
handle_get_rates_inputs(
start_date=datetime.datetime.now(),
end_date=datetime.datetime.now() + datetime.timedelta(days=7),
currencies="GBP,USD",
dry_run=False,
2024-06-11 21:10:07 +02:00
ignore_warnings=True,
output="test_output.xlsx",
)
def test_handle_input_rates_brings_future_end_date_to_today():
handled_inputs = handle_get_rates_inputs(
start_date=datetime.datetime.now() - datetime.timedelta(days=7),
end_date=datetime.datetime.now() + datetime.timedelta(days=7),
currencies="USD,EUR,GBP",
dry_run=False,
2024-06-11 21:10:07 +02:00
ignore_warnings=True,
output="test_output.csv",
)
assert handled_inputs["date_range"].end_date == datetime.datetime.now().date()
def test_handle_input_rates_start_and_end_date_equal_works_fine():
handled_inputs = handle_get_rates_inputs(
start_date=datetime.datetime.now(),
end_date=datetime.datetime.now(),
currencies="USD,EUR,GBP",
dry_run=False,
2024-06-11 21:10:07 +02:00
ignore_warnings=True,
output="test_output.csv",
)
expected_result = {
"date_range": DateRange(
start_date=datetime.datetime.now().date(),
2024-06-11 13:27:07 +02:00
end_date=datetime.datetime.now().date(),
),
"currencies": {Currency("USD"), Currency("EUR"), Currency("GBP")},
"dry_run": False,
2024-06-11 21:10:07 +02:00
"ignore_warnings": True,
2024-06-11 13:34:57 +02:00
"output": pathlib.Path("test_output.csv"),
}
2024-06-11 13:14:15 +02:00
2024-06-11 13:21:42 +02:00
for key in expected_result.keys():
assert handled_inputs[key] == expected_result[key]