import datetime from sqlalchemy import select from coldcall_lti.models import Course from conftest import make_app def test_sync_rosters_skips_unsyncable_and_ended_courses(tmp_path): app = make_app(tmp_path, dev_mode=True) client = app.test_client() client.post("/dev/launch/dev-instructor") # creates the dev course with app.app_context(): db = app.extensions["db_session_factory"]() ended = Course( lti_context_id="old-course", title="Old Course", nrps_url="https://example.edu/nrps", end_date=datetime.date.today() - datetime.timedelta(days=90), ) db.add(ended) db.commit() db.close() result = app.test_cli_runner().invoke(args=["sync-rosters"]) assert result.exit_code == 0 # The dev course has no NRPS service; the old course has ended. assert "no roster service recorded, skipped" in result.output assert "Old Course: ended, skipped" in result.output