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")
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
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")
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
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 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
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()
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()
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() )
import datetime import unittest import pytest from homework12.models import DeadlineError, Homework, HomeworkResult, Student, Teacher date_01_jan_2020 = datetime.datetime(year=2020, month=1, day=1) date_01_jan_2021 = datetime.datetime(year=2021, month=1, day=1) test_student = Student("John", "Doe") test_teacher = Teacher("Janne", "d'Arc") test_homework = Homework("Some task", 10, test_teacher) def test_homework_is_active(): 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", 666, test_teacher) assert homework.is_active() def test_homework_is_not_active(): 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) assert not homework.is_active()
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")
def test_init_student(db_session): student = Student("s", "S") db_session.add(student) student = db_session.query(Student).filter(Student.first_name == "s").first() assert student.last_name == "S"