Add tests for rotation index

This commit is contained in:
Julia 2022-09-05 13:37:52 +03:00
parent 32daaf74ce
commit a444fe260c

View file

@ -192,6 +192,103 @@ def test_get_on_call_users_from_rolling_users_event(
assert len(users_on_call) == 0
@pytest.mark.django_db
def test_rolling_users_rotation_index(
make_organization_and_user, make_user_for_organization, make_on_call_shift, make_schedule
):
organization, user_1 = make_organization_and_user()
user_2 = make_user_for_organization(organization)
user_3 = make_user_for_organization(organization)
schedule = make_schedule(organization, schedule_class=OnCallScheduleCalendar)
now = timezone.now().replace(microsecond=0)
data = {
"priority_level": 1,
"start": now - timezone.timedelta(days=1),
"rotation_start": now,
"duration": timezone.timedelta(seconds=10800),
"frequency": CustomOnCallShift.FREQUENCY_DAILY,
}
rolling_users = [[user_1], [user_2], [user_3]]
on_call_shift = make_on_call_shift(
organization=organization, shift_type=CustomOnCallShift.TYPE_ROLLING_USERS_EVENT, **data
)
on_call_shift.add_rolling_users(rolling_users)
schedule.custom_on_call_shifts.add(on_call_shift)
date_today = now + timezone.timedelta(minutes=5)
date_yesterday = date_today - timezone.timedelta(days=1)
date_tomorrow = date_today + timezone.timedelta(days=1)
rotation_order_today = on_call_shift.reorder_rolling_users_with_respect_to_current_date(
rolling_users[:], date_today
)
rotation_order_yesterday = on_call_shift.reorder_rolling_users_with_respect_to_current_date(
rolling_users[:], date_yesterday
)
rotation_order_tomorrow = on_call_shift.reorder_rolling_users_with_respect_to_current_date(
rolling_users[:], date_tomorrow
)
expected_order_today = [[user_2], [user_3], [user_1]]
expected_order_yesterday = [[user_1], [user_2], [user_3]]
expected_order_tomorrow = [[user_3], [user_1], [user_2]]
for result, expected in zip(
(rotation_order_today, rotation_order_yesterday, rotation_order_tomorrow),
(expected_order_today, expected_order_yesterday, expected_order_tomorrow),
):
assert result == expected
@pytest.mark.django_db
def test_rolling_users_rotation_index_original(
make_organization_and_user, make_user_for_organization, make_on_call_shift, make_schedule
):
organization, user_1 = make_organization_and_user()
user_2 = make_user_for_organization(organization)
user_3 = make_user_for_organization(organization)
schedule = make_schedule(organization, schedule_class=OnCallScheduleCalendar)
now = timezone.now().replace(microsecond=0)
data = {
"priority_level": 1,
"start": now - timezone.timedelta(days=1),
"rotation_start": now,
"duration": timezone.timedelta(seconds=10800),
"frequency": CustomOnCallShift.FREQUENCY_DAILY,
}
rolling_users = [[user_1], [user_2], [user_3]]
on_call_shift = make_on_call_shift(
organization=organization, shift_type=CustomOnCallShift.TYPE_ROLLING_USERS_EVENT, **data
)
on_call_shift.add_rolling_users(rolling_users)
schedule.custom_on_call_shifts.add(on_call_shift)
date_today = now + timezone.timedelta(minutes=5)
date_yesterday = date_today - timezone.timedelta(days=1)
date_tomorrow = date_today + timezone.timedelta(days=1)
order_today = [[user_2], [user_3], [user_1]]
order_yesterday = [[user_1], [user_2], [user_3]]
order_tomorrow = [[user_3], [user_1], [user_2]]
rotation_order_today = on_call_shift.reorder_rolling_users_with_respect_to_current_date(
order_today[:], date_today, original=True
)
rotation_order_yesterday = on_call_shift.reorder_rolling_users_with_respect_to_current_date(
order_yesterday[:], date_yesterday, original=True
)
rotation_order_tomorrow = on_call_shift.reorder_rolling_users_with_respect_to_current_date(
order_tomorrow[:], date_tomorrow, original=True
)
for result in (rotation_order_today, rotation_order_yesterday, rotation_order_tomorrow):
assert result == rolling_users
@pytest.mark.django_db
def test_rolling_users_event_with_interval_hourly(
make_organization_and_user, make_user_for_organization, make_on_call_shift, make_schedule