def test_add_term_students_different_school(client: TestClient, superuser_token_headers: dict[str, str], db: Session) -> None: term = create_random_term(db) students = [ create_random_user(db, type="student", school_id=term.year.school_id), create_random_user(db, type="student", school_id=term.year.school_id), ] data = [user.id for user in students] student_different_school = create_random_user( db, type="student", school_id=create_random_school(db).id) data.append(student_different_school.id) r = client.post(f"{settings.API_V1_STR}/terms/{term.id}/students", headers=superuser_token_headers, json=data) assert r.status_code == 207 response = r.json() assert response.get("errors").get( "different schools")[0] == student_different_school.id for user in students: student = crud.student.get(db, id=user.id) assert student assert student.user_id in response.get("success") assert student.term_id == term.id
def test_create_school(db: Session) -> None: name = random_lower_string() head = random_lower_string() school = create_random_school(db=db, name=name, head=head) assert school assert school.name == name assert school.head == head
def test_add_division_students_different_school(client: TestClient, superuser_token_headers: dict[ str, str], db: Session) -> None: course = create_random_course(db) division = create_random_division(db, course_id=course.id) students = [ create_random_student(db, school_id=course.term.year.school_id, term_id=course.term_id), create_random_student(db, school_id=course.term.year.school_id, term_id=course.term_id), ] data = [student.user_id for student in students] student_different_school = create_random_user( db, type="student", school_id=create_random_school(db).id) data.append(student_different_school.id) r = client.post(f"{settings.API_V1_STR}/divisions/{division.id}/students", headers=superuser_token_headers, json=data) assert r.status_code == 207 response = r.json() assert response.get("errors").get( "different schools")[0] == student_different_school.id for student in students: assert student.user_id in response.get("success")
def test_get_school_invalid_student(client: TestClient, db: Session) -> None: school = create_random_school(db) admin_user_token_headers = authentication_token_from_email( client=client, db=db, email=random_email()) r = client.get(f"{settings.API_V1_STR}/schools/{school.id}", headers=admin_user_token_headers) assert r.status_code == 403
def test_update_school(db: Session) -> None: school = create_random_school(db) name = random_lower_string() school_in = SchoolUpdate(name=name) school = crud.school.update(db=db, db_obj=school, obj_in=school_in) assert school assert school.name == name
def test_create_school_duplicate_head(client: TestClient, superuser_token_headers: dict[str, str], db: Session) -> None: school = create_random_school(db) data = {"name": random_lower_string(), "head": school.head} r = client.post(f"{settings.API_V1_STR}/schools/", headers=superuser_token_headers, json=data) assert r.status_code == 409
def test_delete_school(client: TestClient, superuser_token_headers: dict[str, str], db: Session) -> None: school = create_random_school(db) r = client.delete(f"{settings.API_V1_STR}/schools/{school.id}", headers=superuser_token_headers) assert r.status_code == 200 deleted_school = crud.school.get(db, school.id) assert deleted_school is None
def test_get_school_superuser(client: TestClient, superuser_token_headers: dict[str, str], db: Session) -> None: school = create_random_school(db) r = client.get(f"{settings.API_V1_STR}/schools/{school.id}", headers=superuser_token_headers) assert r.status_code == 200 fetched_school = r.json() assert fetched_school compare_api_and_db_query_results(api_result=fetched_school, db_dict=to_json(school))
def test_get_school_valid_student(client: TestClient, db: Session) -> None: school = create_random_school(db) admin_user_token_headers = authentication_token_from_email( client=client, db=db, email=random_email(), school_id=school.id) r = client.get(f"{settings.API_V1_STR}/schools/{school.id}", headers=admin_user_token_headers) assert r.status_code == 200 fetched_school = r.json() assert fetched_school compare_api_and_db_query_results(api_result=fetched_school, db_dict=to_json(school))
def test_get_all_timeslots(client: TestClient, superuser_token_headers: dict[str, str], db: Session) -> None: school = create_random_school(db) create_random_timeslot(db, school_id=school.id) create_random_timeslot(db, school_id=school.id) r = client.get(f"{settings.API_V1_STR}/schools/{school.id}/timeslots", headers=superuser_token_headers) assert r.status_code == 200 fetched_timeslots = r.json() assert fetched_timeslots assert len(fetched_timeslots) == 2
def test_get_all_professors(client: TestClient, superuser_token_headers: dict[str, str], db: Session) -> None: school = create_random_school(db) school_professor = create_random_user(db=db, type="professor", school_id=school.id) r = client.get(f"{settings.API_V1_STR}/schools/{school.id}/professors", headers=superuser_token_headers) assert r.status_code == 200 fetched_professors = r.json() assert fetched_professors compare_api_and_db_query_results(api_result=fetched_professors[-1], db_dict=to_json(school_professor))
def test_update_school(client: TestClient, superuser_token_headers: dict[str, str], db: Session) -> None: school = create_random_school(db) new_name = random_lower_string() data = {"name": new_name, "head": school.head} r = client.put(f"{settings.API_V1_STR}/schools/{school.id}", headers=superuser_token_headers, json=data) assert r.status_code == 200 fetched_school = r.json() db.refresh(school) assert fetched_school compare_api_and_db_query_results(api_result=fetched_school, db_dict=to_json(school))