test: flaky evaluation schedule
* Earlier logic was flaky because the test calculated the last expected date using a 56‑day window, while the production code builds schedules for 60 days. Those extra 4 days sometimes include another Monday or Wednesday, so the schedule ends later than the test expects.
This commit is contained in:
@@ -5,7 +5,10 @@
|
|||||||
from frappe.tests import UnitTestCase
|
from frappe.tests import UnitTestCase
|
||||||
from frappe.utils import add_days, format_time, getdate
|
from frappe.utils import add_days, format_time, getdate
|
||||||
|
|
||||||
from lms.lms.doctype.course_evaluator.course_evaluator import get_schedule
|
from lms.lms.doctype.course_evaluator.course_evaluator import (
|
||||||
|
get_schedule,
|
||||||
|
get_schedule_range_end_date,
|
||||||
|
)
|
||||||
from lms.lms.test_utils import TestUtils
|
from lms.lms.test_utils import TestUtils
|
||||||
|
|
||||||
|
|
||||||
@@ -52,17 +55,9 @@ class TestCourseEvaluator(UnitTestCase):
|
|||||||
return first_date
|
return first_date
|
||||||
|
|
||||||
def calculated_last_date_of_schedule(self, first_date):
|
def calculated_last_date_of_schedule(self, first_date):
|
||||||
last_day = add_days(getdate(), 56)
|
last_day = getdate(get_schedule_range_end_date(getdate(), self.batch.name))
|
||||||
offset_monday = (0 - last_day.weekday() + 7) % 7 # 0 for Monday
|
while last_day.weekday() not in (0, 2):
|
||||||
offset_wednesday = (2 - last_day.weekday() + 7) % 7 # 2 for Wednesday
|
last_day = add_days(last_day, -1)
|
||||||
|
|
||||||
if offset_monday < offset_wednesday and offset_monday <= 4:
|
|
||||||
last_day = add_days(last_day, offset_monday)
|
|
||||||
elif offset_wednesday <= 4:
|
|
||||||
last_day = add_days(last_day, offset_wednesday)
|
|
||||||
else:
|
|
||||||
last_day = add_days(last_day, min(offset_monday, offset_wednesday) + 7)
|
|
||||||
|
|
||||||
return last_day
|
return last_day
|
||||||
|
|
||||||
def test_unavailability_dates(self):
|
def test_unavailability_dates(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user