Add tests for rotation index
This commit is contained in:
parent
32daaf74ce
commit
a444fe260c
1 changed files with 97 additions and 0 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue