예제 #1
0
def test_homeworkresult_with_short_solution_is_not_in_table(db_session):
    student = Student("bad", "student")
    db_session.add(student)
    teacher = Teacher("t", "T")
    homework = teacher.create_homework("HW", 7)
    student.do_homework(homework, "1")
    assert not student.homework_results
예제 #2
0
def test_doing_homework_after_deadline_raises_deadlineerror(db_session):
    student = Student("bad", "student")
    teacher = Teacher("t", "T")
    db_session.add(student)
    homework = teacher.create_homework("Too late", 0)
    with pytest.raises(DeadlineError, match="You are late"):
        student.do_homework(homework, "doesn't matter")
예제 #3
0
def test_student_do_inactive_homework():
    student = Student("John", "Doe")

    with unittest.mock.patch("datetime.datetime") as fake_datetime:
        fake_datetime.now.side_effect = [date_01_jan_2020, date_01_jan_2021]
        homework = Homework("Text", 10, test_teacher)

        with pytest.raises(DeadlineError, match="You are late"):
            student.do_homework(homework, "Some solution")
예제 #4
0
def test_reset_results_without_args_clear_all_homeworkresults(db_session):
    student = Student("s", "S")
    teacher = Teacher("t", "T")
    homework = teacher.create_homework("HW", 7)
    hw = teacher.create_homework("to delete", 4)
    student.do_homework(homework, "solution to delete")
    student.do_homework(hw, "another solution")
    teacher.reset_results()
    assert not db_session.query(HomeworkResult).all()
예제 #5
0
def test_homeworkresult_with_the_same_solution_is_not_in_table(db_session):
    student = Student("s", "S")
    student2 = Student("bad", "student")
    db_session.add(student)
    db_session.add(student2)
    teacher = Teacher("t", "T")
    homework = teacher.create_homework("HW", 7)
    student.do_homework(homework, "long solution")
    student2.do_homework(homework, "long solution")
    assert not student2.homework_results
예제 #6
0
def test_homeworkresult_is_in_table(db_session):
    teacher = Teacher("t", "T")
    db_session.add(teacher)
    homework = teacher.create_homework("HW", 7)
    student = Student("s", "S")
    db_session.add(student)
    student.do_homework(homework, "long solution")
    result = homework.results[0]
    assert result.solution == "long solution"
    assert result.homework == homework
    assert result.author == student
    assert student.homework_results == homework.results
예제 #7
0
def test_reset_results_with_given_homework_deletes_solutions_for_that_homework(
    db_session,
):
    student = Student("s", "S")
    teacher = Teacher("t", "T")
    homework = teacher.create_homework("HW", 7)
    student.do_homework(homework, "long solution")
    student.do_homework(homework, "another solution")
    teacher.reset_results(homework)
    assert (
        not db_session.query(HomeworkResult)
        .filter(HomeworkResult.homework == homework)
        .all()
    )
예제 #8
0
def test_student_do_active_homework():
    student = Student("John", "Doe")

    with unittest.mock.patch("datetime.datetime") as fake_datetime:
        fake_datetime.now.side_effect = [
            date_01_jan_2020,
            date_01_jan_2021,
            date_01_jan_2021,
        ]
        homework = Homework("Text", 666, test_teacher)

        result = student.do_homework(homework, "Some solution")
        assert isinstance(result, HomeworkResult)
def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    student = Student("Ivan", "Petrov")
    student2 = Student("Anna", "Ryzova")
    teacher = Teacher("Alex", "Bykov")
    teacher2 = Teacher("Olga", "Dorskaya")

    session.add(student)
    session.add(student2)
    session.add(teacher)
    session.add(teacher2)

    homework = teacher.create_homework("Math task", 5)
    student.do_homework(homework, "solution for math")
    student2.do_homework(homework, "another solution for math")

    homework2 = teacher2.create_homework("Logical task", 3)
    student2.do_homework(homework2, "blablabla")

    session.commit()
    session.close()
예제 #10
0
def test_if_doing_not_homework_raises_typeerror(db_session):
    student = Student("s", "S")
    db_session.add(student)
    with pytest.raises(TypeError, match="You gave a not Homework object"):
        student.do_homework("homework", "solution")