update tests
This commit is contained in:
@@ -47,7 +47,7 @@ def test_summed_shift_grade_constraints():
|
||||
)
|
||||
|
||||
# Add summed shift grade constraints
|
||||
Rota.constraint_options["min_summed_grade_by_shifts_per_day"].append(
|
||||
Rota.constraint_options_model.min_summed_grade_by_shifts_per_day.append(
|
||||
MinSummedGradeByShiftsPerDayConstraint(
|
||||
shifts=["a", "b"],
|
||||
min_grade_sum=4,
|
||||
@@ -78,7 +78,7 @@ def test_summed_shift_grade_constraints():
|
||||
for summed_grade in summed_grades:
|
||||
assert summed_grade >= 4, f"Summed grade {summed_grade} is less than 4"
|
||||
|
||||
Rota.constraint_options["min_summed_grade_by_shifts_per_day"] = [
|
||||
Rota.constraint_options_model.min_summed_grade_by_shifts_per_day = [
|
||||
MinSummedGradeByShiftsPerDayConstraint(
|
||||
shifts=["a", "b"],
|
||||
min_grade_sum=5,
|
||||
|
||||
@@ -257,7 +257,7 @@ def test_constraint_require_remote_site_presence_week2(limit_constraint_rota):
|
||||
Rota = limit_constraint_rota
|
||||
Rota.constraint_options["minimise_shift_diffs"] = False
|
||||
Rota.constraint_options["balance_shifts_quadratic"] = False
|
||||
Rota.constraint_options["balance_shift"] = False
|
||||
Rota.constraint_options["balance_shifts"] = False
|
||||
Rota.constraint_options["balance_nights_across_sites"] = True
|
||||
Rota.shifts = []
|
||||
Rota.add_shifts(
|
||||
|
||||
+2
-2
@@ -51,7 +51,7 @@ class TestRemoteRotas:
|
||||
Rota.constraint_options["balance_blocks"] = False
|
||||
Rota.constraint_options["balance_weekends"] = False
|
||||
Rota.constraint_options["balance_nights"] = False
|
||||
Rota.constraint_options["minimse_shift_diffs"] = False
|
||||
Rota.constraint_options["minimise_shift_diffs"] = False
|
||||
|
||||
Rota.add_workers(
|
||||
[Worker(
|
||||
@@ -111,7 +111,7 @@ class TestRemoteRotas:
|
||||
Rota.constraint_options["balance_blocks"] = False
|
||||
Rota.constraint_options["balance_weekends"] = False
|
||||
Rota.constraint_options["balance_nights"] = False
|
||||
Rota.constraint_options["minimse_shift_diffs"] = False
|
||||
Rota.constraint_options["minimise_shift_diffs"] = False
|
||||
|
||||
Rota.add_workers(
|
||||
[Worker(
|
||||
|
||||
+10
-10
@@ -19,16 +19,16 @@ def demo_rota():
|
||||
weeks_to_rota=weeks_to_rota,
|
||||
balance_offset_modifier=1,
|
||||
)
|
||||
Rota.constraint_options["max_shifts_per_week"] = 5
|
||||
Rota.constraint_options["max_shifts_per_month"] = 31
|
||||
Rota.constraint_options["constrain_time_off_after_nights"] = False
|
||||
Rota.constraint_options["balance_nights_across_site"] = False
|
||||
Rota.constraint_options["balance_shifts_quadratic"] = True
|
||||
Rota.constraint_options["balance_shifts_over_workers"] = True
|
||||
Rota.constraint_options["balance_nights"] = False
|
||||
Rota.constraint_options["minimise_shift_diffs"] = False
|
||||
Rota.constraint_options["balance_blocks"] = False
|
||||
Rota.constraint_options["balance_bank_holidays"] = False
|
||||
Rota.constraint_options_model.max_shifts_per_week = 5
|
||||
Rota.constraint_options_model.max_shifts_per_month = 31
|
||||
Rota.constraint_options_model.constrain_time_off_after_nights = False
|
||||
Rota.constraint_options_model.balance_nights_across_sites = False
|
||||
Rota.constraint_options_model.balance_shifts_quadratic = True
|
||||
Rota.constraint_options_model.balance_shifts_over_workers = True
|
||||
Rota.constraint_options_model.balance_nights = False
|
||||
Rota.constraint_options_model.minimise_shift_diffs = False
|
||||
Rota.constraint_options_model.balance_blocks = False
|
||||
Rota.constraint_options_model.balance_bank_holidays = False
|
||||
|
||||
# Add a few workers
|
||||
workers = [
|
||||
|
||||
@@ -34,7 +34,7 @@ def demo_rota_clear():
|
||||
weeks_to_rota=weeks_to_rota,
|
||||
balance_offset_modifier=1,
|
||||
)
|
||||
Rota.constraint_options["max_shifts_per_month"] = 20
|
||||
Rota.constraint_options_model.max_shifts_per_month = 20
|
||||
|
||||
workers = [
|
||||
Worker(name="worker1", site="group1", grade=1),
|
||||
|
||||
+12
-12
@@ -3,7 +3,7 @@ import pytest
|
||||
from pytest import approx
|
||||
from rota_generator.shifts import PostShiftConstraint, RotaBuilder, SingleShift, days
|
||||
from rota_generator.workers import Worker
|
||||
from web.rota.shifts import PreShiftConstraint
|
||||
from rota_generator.shifts import PreShiftConstraint
|
||||
|
||||
@pytest.fixture
|
||||
def demo_rota_nights():
|
||||
@@ -16,17 +16,17 @@ def demo_rota_nights():
|
||||
balance_offset_modifier=1,
|
||||
)
|
||||
|
||||
Rota.constraint_options["max_shifts_per_week"] = 5
|
||||
Rota.constraint_options["max_shifts_per_month"] = 31
|
||||
Rota.constraint_options["limit_to_1_st2_on_nights"] = False
|
||||
Rota.constraint_options["constrain_time_off_after_nights"] = False
|
||||
Rota.constraint_options["balance_nights_across_site"] = False
|
||||
Rota.constraint_options["balance_shifts"] = True
|
||||
Rota.constraint_options["balance_shifts_over_workers"] = True
|
||||
Rota.constraint_options["balance_nights"] = False
|
||||
Rota.constraint_options["minimise_shift_diffs"] = False
|
||||
Rota.constraint_options["balance_blocks"] = False
|
||||
Rota.constraint_options["max_night_frequency"] = 0
|
||||
Rota.constraint_options_model.max_shifts_per_week = 5
|
||||
Rota.constraint_options_model.max_shifts_per_month = 31
|
||||
# legacy option `limit_to_1_st2_on_nights` removed; test omits it
|
||||
Rota.constraint_options_model.constrain_time_off_after_nights = False
|
||||
Rota.constraint_options_model.balance_nights_across_sites = False
|
||||
Rota.constraint_options_model.balance_shifts = True
|
||||
Rota.constraint_options_model.balance_shifts_over_workers = True
|
||||
Rota.constraint_options_model.balance_nights = False
|
||||
Rota.constraint_options_model.minimise_shift_diffs = False
|
||||
Rota.constraint_options_model.balance_blocks = False
|
||||
Rota.constraint_options_model.max_night_frequency = 0
|
||||
|
||||
# Add workers
|
||||
workers = [
|
||||
|
||||
@@ -36,36 +36,36 @@ def rota_3workers(rota_2workers):
|
||||
return Rota3
|
||||
|
||||
def test_max_shifts(rota_2workers):
|
||||
rota_2workers.constraint_options["max_shifts_per_month"] = 14
|
||||
rota_2workers.constraint_options_model.max_shifts_per_month = 14
|
||||
rota_2workers.build_and_solve()
|
||||
assert rota_2workers.results.solver.status == "ok"
|
||||
assert rota_2workers.results.solver.termination_condition == "optimal"
|
||||
|
||||
def test_max_shifts_fail(rota_2workers):
|
||||
rota_2workers.constraint_options["max_shifts_per_month"] = 13
|
||||
rota_2workers.constraint_options_model.max_shifts_per_month = 13
|
||||
rota_2workers.build_and_solve()
|
||||
assert rota_2workers.results.solver.status in ("warning", "error")
|
||||
assert rota_2workers.results.solver.termination_condition == "infeasible"
|
||||
|
||||
def test_max_shifts_extra_worker(rota_3workers):
|
||||
rota_3workers.constraint_options["max_shifts_per_month"] = 12
|
||||
rota_3workers.constraint_options_model.max_shifts_per_month = 12
|
||||
rota_3workers.build_and_solve()
|
||||
assert rota_3workers.results.solver.status == "ok"
|
||||
assert rota_3workers.results.solver.termination_condition == "optimal"
|
||||
|
||||
def test_max_shifts_per_week_fail(rota_2workers):
|
||||
rota_2workers.constraint_options["max_shifts_per_week"] = 3
|
||||
rota_2workers.constraint_options_model.max_shifts_per_week = 3
|
||||
rota_2workers.build_and_solve()
|
||||
assert rota_2workers.results.solver.status in ("warning", "error")
|
||||
assert rota_2workers.results.solver.termination_condition == "infeasible"
|
||||
|
||||
def test_max_shifts_per_week_pass(rota_2workers):
|
||||
rota_2workers.constraint_options["max_shifts_per_month"] = 14
|
||||
rota_2workers.constraint_options["max_shifts_per_week"] = 4
|
||||
rota_2workers.constraint_options_model.max_shifts_per_month = 14
|
||||
rota_2workers.constraint_options_model.max_shifts_per_week = 4
|
||||
rota_2workers.build_and_solve()
|
||||
assert rota_2workers.results.solver.status == "ok"
|
||||
|
||||
def test_max_shifts_per_week_extra_worker_pass(rota_3workers):
|
||||
rota_3workers.constraint_options["max_shifts_per_week"] = 3
|
||||
rota_3workers.constraint_options_model.max_shifts_per_week = 3
|
||||
rota_3workers.build_and_solve()
|
||||
assert rota_3workers.results.solver.status == "ok"
|
||||
@@ -20,7 +20,7 @@ class TestDemoRota:
|
||||
start_date,
|
||||
weeks_to_rota=weeks_to_rota,
|
||||
)
|
||||
self.Rota.constraint_options["balance_weekends"] = True
|
||||
self.Rota.constraint_options_model.balance_weekends = True
|
||||
|
||||
# Add a few workers
|
||||
worker1 = Worker(name="worker1", site="group1", grade=1)
|
||||
@@ -77,7 +77,7 @@ class TestDemoRota:
|
||||
start_date,
|
||||
weeks_to_rota=weeks_to_rota,
|
||||
)
|
||||
self.Rota.constraint_options["balance_weekends"] = True
|
||||
self.Rota.constraint_options_model.balance_weekends = True
|
||||
|
||||
# Add a few workers
|
||||
worker1 = Worker(name="worker1", site="group1", grade=1)
|
||||
@@ -136,7 +136,7 @@ class TestDemoRota:
|
||||
start_date,
|
||||
weeks_to_rota=weeks_to_rota,
|
||||
)
|
||||
self.Rota.constraint_options["prevent_monday_and_tuesday_after_full_weekends"] = ["group1",]
|
||||
self.Rota.constraint_options_model.prevent_monday_and_tuesday_after_full_weekends = ["group1",]
|
||||
|
||||
# Add a few workers
|
||||
worker1 = Worker(name="worker1", site="group1", grade=1)
|
||||
@@ -182,7 +182,7 @@ class TestDemoRota:
|
||||
start_date,
|
||||
weeks_to_rota=weeks_to_rota,
|
||||
)
|
||||
self.Rota.constraint_options["prevent_monday_and_tuesday_after_full_weekends"] = ["group1",]
|
||||
self.Rota.constraint_options_model.prevent_monday_and_tuesday_after_full_weekends = ["group1",]
|
||||
|
||||
# Add a few workers
|
||||
worker1 = Worker(name="worker1", site="group1", grade=1)
|
||||
@@ -221,7 +221,7 @@ class TestDemoRota:
|
||||
start_date,
|
||||
weeks_to_rota=weeks_to_rota,
|
||||
)
|
||||
self.Rota.constraint_options["prevent_monday_after_full_weekends"] = ["group1",]
|
||||
self.Rota.constraint_options_model.prevent_monday_after_full_weekends = ["group1",]
|
||||
|
||||
# Add a few workers
|
||||
worker1 = Worker(name="worker1", site="group1", grade=1)
|
||||
@@ -271,7 +271,7 @@ class TestDemoRota:
|
||||
start_date,
|
||||
weeks_to_rota=weeks_to_rota,
|
||||
)
|
||||
self.Rota.constraint_options["prevent_monday_after_full_weekends"] = ["group1",]
|
||||
self.Rota.constraint_options_model.prevent_monday_after_full_weekends = ["group1",]
|
||||
|
||||
# Add a few workers
|
||||
worker1 = Worker(name="worker1", site="group1", grade=1)
|
||||
@@ -312,7 +312,7 @@ class TestDemoRota:
|
||||
start_date,
|
||||
weeks_to_rota=weeks_to_rota,
|
||||
)
|
||||
self.Rota.constraint_options["prevent_monday_after_full_weekends"] = ["group1",]
|
||||
self.Rota.constraint_options_model.prevent_monday_after_full_weekends = ["group1",]
|
||||
|
||||
# Add a few workers
|
||||
worker1 = Worker(name="worker1", site="group1", grade=1)
|
||||
|
||||
@@ -224,7 +224,7 @@ class TestWorkerRequests:
|
||||
"""_summary_"""
|
||||
Rota = generate_basic_rota()
|
||||
|
||||
Rota.constraint_options["balance_bank_holidays"] = False
|
||||
Rota.constraint_options_model.balance_bank_holidays = False
|
||||
|
||||
Rota.add_worker(
|
||||
Worker(
|
||||
@@ -311,7 +311,7 @@ class TestWorkerRequests:
|
||||
def test_work_requests(self):
|
||||
"""_summary_"""
|
||||
Rota = generate_basic_rota()
|
||||
Rota.constraint_options["balance_bank_holidays"] = False
|
||||
Rota.constraint_options_model.balance_bank_holidays = False
|
||||
|
||||
Rota.add_workers(
|
||||
[Worker(
|
||||
@@ -362,7 +362,7 @@ class TestWorkerRequests:
|
||||
def test_work_requests_invalid(self):
|
||||
"""_summary_"""
|
||||
Rota = generate_basic_rota()
|
||||
Rota.constraint_options["balance_bank_holidays"] = False
|
||||
Rota.constraint_options_model.balance_bank_holidays = False
|
||||
|
||||
Rota.add_worker(
|
||||
Worker(
|
||||
@@ -433,7 +433,7 @@ class TestWorkerRequests:
|
||||
def test_work_requests_generic(self):
|
||||
"""_summary_"""
|
||||
Rota = generate_basic_rota()
|
||||
Rota.constraint_options["balance_bank_holidays"] = False
|
||||
Rota.constraint_options_model.balance_bank_holidays = False
|
||||
|
||||
Rota.add_workers(
|
||||
[Worker(
|
||||
@@ -484,7 +484,7 @@ class TestWorkerRequests:
|
||||
def test_work_requests_generic2(self):
|
||||
"""_summary_"""
|
||||
Rota = generate_basic_rota()
|
||||
Rota.constraint_options["balance_bank_holidays"] = False
|
||||
Rota.constraint_options_model.balance_bank_holidays = False
|
||||
|
||||
Rota.add_workers(
|
||||
[Worker(
|
||||
|
||||
@@ -4,7 +4,7 @@ from rota_generator.shifts import InvalidShift, MaxShiftsPerWeekConstraint, NoWo
|
||||
import datetime
|
||||
from rota_generator.workers import NonWorkingDays, NotAvailableToWork, Worker, generate_not_available_to_works
|
||||
from rota_generator.workers import WorkRequests
|
||||
from web.rota.shifts import PreShiftConstraint
|
||||
from rota_generator.shifts import PreShiftConstraint
|
||||
|
||||
def generate_basic_rota(
|
||||
weeks_to_rota=10, workers=0, start_date=datetime.date(2022, 3, 7)
|
||||
@@ -357,7 +357,7 @@ def test_worker_pairs():
|
||||
]
|
||||
)
|
||||
|
||||
Rota.constraint_options["hard_constrain_pair_separation"] = True
|
||||
Rota.constraint_options_model.hard_constrain_pair_separation = True
|
||||
|
||||
Rota.build_and_solve()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user