Added Application HolidayViewer
This commit is contained in:
132
tests/test_calendar_helper.py
Normal file
132
tests/test_calendar_helper.py
Normal file
@@ -0,0 +1,132 @@
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
import pytest
|
||||
|
||||
from components.hoildays.helpers.calendar_helper import CalendarHelper
|
||||
from components.hoildays.helpers.nibelisparser import OffPeriodDetails
|
||||
|
||||
|
||||
def test_get_period_end_before_start():
|
||||
with pytest.raises(ValueError) as err:
|
||||
CalendarHelper.get_period(datetime.today(), datetime.today() - timedelta(days=1))
|
||||
|
||||
assert str(err.value) == "end date is before start date."
|
||||
|
||||
|
||||
def test_get_period():
|
||||
start = datetime.today()
|
||||
res = CalendarHelper.get_period(start, start + timedelta(days=3))
|
||||
|
||||
assert res == [
|
||||
start,
|
||||
start + timedelta(days=1),
|
||||
start + timedelta(days=2),
|
||||
start + timedelta(days=3)
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.parametrize("start_am_pm, end_am_pm, is_start, is_end, expected", [
|
||||
("am", None, True, False, "reason_am"),
|
||||
("pm", None, True, False, "reason_pm"),
|
||||
(None, "am", False, True, "reason_am"),
|
||||
(None, "pm", False, True, "reason_pm"),
|
||||
("am", "pm", True, True, "reason_am_pm"),
|
||||
])
|
||||
def test_get_reason(start_am_pm, end_am_pm, is_start, is_end, expected):
|
||||
record = OffPeriodDetails(
|
||||
first_name="first_name",
|
||||
last_name="last_name",
|
||||
start_date=datetime.today(),
|
||||
start_am_pm=start_am_pm,
|
||||
end_date=datetime.today() + timedelta(days=1),
|
||||
end_am_pm=end_am_pm,
|
||||
total=2,
|
||||
reason="reason",
|
||||
date_import=datetime.today(),
|
||||
)
|
||||
actual = CalendarHelper.get_reason(record, is_start, is_end)
|
||||
|
||||
assert actual == expected
|
||||
|
||||
|
||||
def test_create_calendar_one_user():
|
||||
records = [
|
||||
OffPeriodDetails("john", "doo", datetime(2025, 6, 19), None, datetime(2025, 6, 20), None, 1, "CP", datetime.now())
|
||||
]
|
||||
|
||||
names, calendar = CalendarHelper.create_calendar(records, datetime(2025, 6, 18), datetime(2025, 6, 21))
|
||||
expected_calendar = {
|
||||
datetime(2025, 6, 18): [None],
|
||||
datetime(2025, 6, 19): [["CP"]],
|
||||
datetime(2025, 6, 20): [["CP"]],
|
||||
datetime(2025, 6, 21): [None],
|
||||
}
|
||||
|
||||
assert names == ["john doo"]
|
||||
assert calendar == expected_calendar
|
||||
|
||||
|
||||
def test_create_calendar_multiple_users():
|
||||
now = datetime.now()
|
||||
records = [
|
||||
OffPeriodDetails("john", "doo", datetime(2025, 6, 19), None, datetime(2025, 6, 20), None, 1, "CP", now),
|
||||
OffPeriodDetails("jane", "doo", datetime(2025, 6, 18), None, datetime(2025, 6, 19), None, 1, "CP", now)
|
||||
]
|
||||
|
||||
names, calendar = CalendarHelper.create_calendar(records, datetime(2025, 6, 18), datetime(2025, 6, 21))
|
||||
expected_calendar = {
|
||||
datetime(2025, 6, 18): [["CP"], None],
|
||||
datetime(2025, 6, 19): [["CP"], ["CP"]],
|
||||
datetime(2025, 6, 20): [None, ["CP"]],
|
||||
datetime(2025, 6, 21): [None, None],
|
||||
}
|
||||
|
||||
assert names == ["jane doo", "john doo"]
|
||||
assert calendar == expected_calendar
|
||||
|
||||
|
||||
def test_create_calendar_end_is_missing():
|
||||
records = [
|
||||
OffPeriodDetails("john", "doo", datetime(2025, 6, 19), None, datetime(2025, 6, 20), None, 1, "CP", datetime.now())
|
||||
]
|
||||
|
||||
names, calendar = CalendarHelper.create_calendar(records, datetime(2025, 6, 18))
|
||||
expected_calendar = {
|
||||
datetime(2025, 6, 18): [None],
|
||||
datetime(2025, 6, 19): [["CP"]],
|
||||
datetime(2025, 6, 20): [["CP"]],
|
||||
}
|
||||
|
||||
assert names == ["john doo"]
|
||||
assert calendar == expected_calendar
|
||||
|
||||
|
||||
def test_create_calendar_start_is_missing():
|
||||
records = [
|
||||
OffPeriodDetails("john", "doo", datetime(2025, 6, 19), None, datetime(2025, 6, 20), None, 1, "CP", datetime.now())
|
||||
]
|
||||
|
||||
names, calendar = CalendarHelper.create_calendar(records, None, datetime(2025, 6, 21))
|
||||
expected_calendar = {
|
||||
datetime(2025, 6, 19): [["CP"]],
|
||||
datetime(2025, 6, 20): [["CP"]],
|
||||
datetime(2025, 6, 21): [None],
|
||||
}
|
||||
|
||||
assert names == ["john doo"]
|
||||
assert calendar == expected_calendar
|
||||
|
||||
|
||||
def test_create_calendar_start_and_end_are_missing():
|
||||
records = [
|
||||
OffPeriodDetails("john", "doo", datetime(2025, 6, 19), None, datetime(2025, 6, 20), None, 1, "CP", datetime.now())
|
||||
]
|
||||
|
||||
names, calendar = CalendarHelper.create_calendar(records)
|
||||
expected_calendar = {
|
||||
datetime(2025, 6, 19): [["CP"]],
|
||||
datetime(2025, 6, 20): [["CP"]],
|
||||
}
|
||||
|
||||
assert names == ["john doo"]
|
||||
assert calendar == expected_calendar
|
||||
Reference in New Issue
Block a user