import datetime import re import pytest @pytest.fixture def instructor(dev_client): dev_client.post("/dev/launch/dev-instructor") return dev_client def test_generate_range_creates_weekday_dates(instructor): # A fixed two-week window well in the future, Mon/Wed. resp = instructor.post( "/instructor/schedule/generate", data={ "start": "2027-01-04", "end": "2027-01-15", "weekday": ["0", "2"], }, follow_redirects=True, ) page = resp.get_data(as_text=True) for expected in ["Jan 4", "Jan 6", "Jan 11", "Jan 13"]: assert expected in page assert "Jan 5" not in page # Re-generating the same range adds nothing new. resp = instructor.post( "/instructor/schedule/generate", data={"start": "2027-01-04", "end": "2027-01-15", "weekday": ["0"]}, follow_redirects=True, ) assert resp.get_data(as_text=True).count("Jan 4") == 1 def test_generate_rejects_bad_input(instructor): resp = instructor.post( "/instructor/schedule/generate", data={"start": "2027-01-15", "end": "2027-01-04", "weekday": ["0"]}, ) assert resp.status_code == 400 resp = instructor.post( "/instructor/schedule/generate", data={"start": "2027-01-04", "end": "2027-01-15"}, ) assert resp.status_code == 400 def test_add_and_delete_single_day(instructor): resp = instructor.post( "/instructor/schedule/add", data={"date": "2027-03-01"}, follow_redirects=True, ) page = resp.get_data(as_text=True) assert "Mar 1, 2027" in page # Find the delete form id adjacent to the date row. rows = re.findall( r"