コード例 #1
0
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
コード例 #2
0
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
コード例 #3
0
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))
コード例 #4
0
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))
コード例 #5
0
ファイル: test_students.py プロジェクト: Rev-AMP/backend
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
コード例 #6
0
ファイル: test_division.py プロジェクト: Rev-AMP/backend
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
コード例 #7
0
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
コード例 #8
0
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
コード例 #9
0
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))
コード例 #10
0
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
コード例 #11
0
ファイル: test_students.py プロジェクト: Rev-AMP/backend
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")
コード例 #12
0
ファイル: test_students.py プロジェクト: Rev-AMP/backend
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))