def test_update_course(db: Session) -> None: course = create_random_course(db) assert course name = random_lower_string() updated_course = crud.course.update(db, db_obj=course, obj_in=CourseUpdate(name=name)) assert updated_course.name == name
def test_delete_course(client: TestClient, superuser_token_headers: dict[str, str], db: Session) -> None: course = create_random_course(db) r = client.delete(f"{settings.API_V1_STR}/courses/{course.id}", headers=superuser_token_headers) assert r.status_code == 200 deleted_course = crud.course.get(db, id=course.id) assert deleted_course is None
def test_get_course_existing(client: TestClient, superuser_token_headers: dict[str, str], db: Session) -> None: course = create_random_course(db) r = client.get(f"{settings.API_V1_STR}/courses/{course.id}", headers=superuser_token_headers) assert r.status_code == 200 fetched_course = r.json() assert fetched_course compare_api_and_db_query_results(api_result=fetched_course, db_dict=to_json(course))
def test_get_all_courses(client: TestClient, superuser_token_headers: dict[str, str], db: Session) -> None: course = create_random_course(db) r = client.get(f"{settings.API_V1_STR}/courses/", headers=superuser_token_headers) assert r.status_code == 200 results = r.json() assert results compare_api_and_db_query_results(api_result=results[-1], db_dict=to_json(course))
def test_get_student_divisions_id_normal_user( client: TestClient, normal_user_token_headers: dict[str, str], db: Session ) -> None: student = create_random_student(db) course = create_random_course(db, term_id=student.term_id) division = create_random_division(db, course_id=course.id) division.students.append({"student": student, "batch_number": randint(1, 5)}) r = client.get( f"{settings.API_V1_STR}/students/{student.user_id}/divisions", headers=normal_user_token_headers, ) assert r.status_code == 403
def test_create_division(db: Session) -> None: course_id = create_random_course(db).id division_code = randint(1, 20) professor_id = create_random_professor(db).user_id division = create_random_division(db, course_id=course_id, division_code=division_code, professor_id=professor_id) assert division assert division.course_id == course_id assert division.division_code == division_code assert division.professor_id == professor_id
def test_create_course_existing(client: TestClient, superuser_token_headers: dict[str, str], db: Session) -> None: course = create_random_course(db) data = { "name": course.name, "course_code": course.course_code, "term_id": course.term_id, } r = client.post(f"{settings.API_V1_STR}/courses/", headers=superuser_token_headers, json=data) assert r.status_code == 409
def test_course_by_details(db: Session) -> None: course = create_random_course(db) assert course.name assert course.course_code assert course.term_id fetched_course = crud.course.get_by_details( db, name=course.name, course_code=course.course_code, term_id=course.term_id, ) assert fetched_course assert fetched_course.id == course.id
def test_update_course(client: TestClient, superuser_token_headers: dict[str, str], db: Session) -> None: course = create_random_course(db) assert course.name name = random_lower_string() data = {"name": name} r = client.put(f"{settings.API_V1_STR}/courses/{course.id}", headers=superuser_token_headers, json=data) fetched_course = r.json() db.refresh(course) assert fetched_course compare_api_and_db_query_results(api_result=fetched_course, db_dict=to_json(course))
def test_create_course(db: Session) -> None: name = random_lower_string() course_code = random_lower_string()[:20] elective_code = random_lower_string()[:20] term_id = create_random_term(db).id course = create_random_course(db, name=name, course_code=course_code, elective_code=elective_code, term_id=term_id) assert course assert course.name == name assert course.course_code == course_code assert course.elective_code == elective_code assert course.term_id == term_id
def test_get_student_divisions_id_admin_with_perms(client: TestClient, db: Session) -> None: student = create_random_student(db) course = create_random_course(db, term_id=student.term_id) division = create_random_division(db, course_id=course.id) division.students.append({"student": student, "batch_number": randint(1, 5)}) perms = AdminPermissions(0) perms["student"] = True admin = create_random_user(db, type="admin", permissions=perms.permissions) r = client.get( f"{settings.API_V1_STR}/students/{student.user_id}/divisions", headers=authentication_token_from_email(client=client, email=admin.email, db=db), ) assert r.status_code == 200 fetched_divisions = r.json() assert fetched_divisions assert division.id == fetched_divisions[0].get("id")
def test_get_student_me_divisions(client: TestClient, db: Session) -> None: student = create_random_student(db) course = create_random_course(db, term_id=student.term_id) divisions = [create_random_division(db, course_id=course.id), create_random_division(db, course_id=course.id)] batch_number = randint(1, 5) for division in divisions: division.students.append({"student": student, "batch_number": batch_number}) r = client.get( f"{settings.API_V1_STR}/students/me/divisions", headers=authentication_token_from_email(client=client, email=student.user.email, db=db), ) assert r.status_code == 200 fetched_divisions = r.json() assert fetched_divisions assert len(fetched_divisions) == 2 for division in divisions: if fetched_divisions[0].get("id") == division.id: compare_api_and_db_query_results(api_result=fetched_divisions[0], db_dict=to_json(division)) else: compare_api_and_db_query_results(api_result=fetched_divisions[1], db_dict=to_json(division))