Exemplo n.º 1
0
def test_read_schedule_of_private():
    reader = Student('hpeng2021', 'Michael')
    reader.schedules = {
        1: {
            'A': 'Holm-Andersen',
            'D': 'Givens',
            'E': 'Messina',
            'F': 'Parsons',
            'G': 'Hibino, Krista'
        }
    }

    student = Student('divanovich2021', 'Daniel')
    student.schedules = {
        1: {
            'A': 'Holm-Andersen',
            'D': 'Givens',
            'E': 'Reusch',
            'F': 'Scarfo',
            'G': 'Ream'
        }
    }
    student.is_public = False

    result = case.show_schedule(reader, student, 1)

    assert result == {'A': 'Holm-Andersen', 'D': 'Givens'}
Exemplo n.º 2
0
def test_read_schedule_of_private_without_reader_schedule():
    reader = Student('hpeng2021', 'Michael')

    student = Student('divanovich2021', 'Daniel')
    student.schedules = {2: {'D': 'Givens'}}

    assert case.show_schedule(reader, student, 2) == {}
Exemplo n.º 3
0
def test_own_schedule_exists():
    student = Student('hpeng2021', 'Michael')
    student.schedules = {1: {'D': 'Yes'}}

    output = case.own_schedule(student, 1)

    assert output == {'D': 'Yes'}
Exemplo n.º 4
0
def test_show_lunch_number(reset_mock):
    viewer = Student('hpeng2021', 'Michael Peng')
    viewer.schedules = {
        1: {
            'C': 'Ream',
            'D': 'DiBenedetto',
            'E': 'Emery'
        },
        2: {
            'C': 'Ream',
            'D': 'DiBenedetto',
            'E': 'Messina'
        }
    }
    emery = Class('Emery', 'E', 1, lunch=2)
    messina = Class('Messina', 'E', 2, lunch=None)

    class_repo.load.side_effect = switch({
        ('Emery', 'E', 1): emery,
        ('Messina', 'E', 2): messina
    })

    e1_out = case.show_lunch_number(viewer, 1, 'E')
    e2_out = case.show_lunch_number(viewer, 2, 'E')

    assert e1_out == 2
    assert e2_out is None
Exemplo n.º 5
0
def test_show_lunchmates_of_external_lunch(reset_mock):
    # Current decision: show private students in another lunch
    # Can be blocked in frontend

    viewer = Student('hpeng2021', 'Michael Peng')
    viewer.schedules = {1: {'C': 'Smith', 'F': 'Shea'}}
    smith = Class('Smith', 'C', 1, lunch=2)
    shea = Class('Shea', 'F', 1, lunch=None)

    class_repo.load.side_effect = switch({
        ('Smith', 'C', 1): smith,
        ('Shea', 'F', 1): shea
    })
    class_repo.names_of_teachers_in_lunch.side_effect = switch({
        (1, 'C', 2): ['Messina', 'Smith', 'Caveney'],
        (1, 'C', 4): ['Emery', 'Gonzalez', 'Parsons']
    })

    lunchmates = [
        Student('divanovich2021', 'Daniel', is_public=False),
        Student('azenith2021', 'Ayush', is_public=True)
    ]

    student_repo.students_in_class.side_effect = switch({
        (1, 'C', 'Emery'): [lunchmates[1]],
        (1, 'C', 'Parsons'): [lunchmates[0]],
        (1, 'C', 'Gonzalez'): []
    })

    output = case.show_lunchmates(viewer, 1, 'C', 4)

    assert set(output) == set(lunchmates)
Exemplo n.º 6
0
def test_read_no_schedule_student():
    reader = Student('a', 'A')
    student = Student('b', 'B')
    student.is_public = True
    student.schedules = None

    with pytest.raises(MissingScheduleError, match='B'):
        case.show_schedule(reader, student, 1)
Exemplo n.º 7
0
def test_semester_schedule_with_schedule():
    student = Student('hpeng2021', 'Michael')
    student.schedules = {1: {'A': 'glee', 'B': '', 'C': 'see', 'D': 'dee'}}

    output = student.semester_schedule(1)

    assert output == student.schedules[1]
    assert student.semester_schedule(2) is None
Exemplo n.º 8
0
def test_read_schedule_of_public():
    reader = Student('hpeng2021', 'Michael')
    student = Student('divanovich2021', 'Daniel')
    student.is_public = True
    student.schedules = {1: {'G': 'Ream'}}

    result = case.show_schedule(reader, student, 1)

    assert result == {'G': 'Ream'}
Exemplo n.º 9
0
def test_show_classmates(reset_mock):
    classmates = [Student('a', 'A'), Student('b', 'B'), Student('c', 'C')]
    student_repo.students_in_class.return_value = classmates
    student = Student('hpeng2021', 'Michael')
    student.schedules = {1: {'D': 'Givens'}}

    output = case.show_classmates(student, 1, 'D')

    assert output == classmates
    student_repo.students_in_class.assert_called_once_with(1, 'D', 'Givens')
Exemplo n.º 10
0
def test_show_lunchmates_of_own_lunch(reset_mock):
    viewer = Student('hpeng2021', 'Michael Peng')
    viewer.schedules = {1: {'D': 'Smith'}}
    lunchmates = [
        Student('pcess', 'Pro Cess'),
        Student('azenith', 'Ayush Zenith'),
        Student('jmann', 'Jordan Mann')
    ]
    klass = Class('Smith', 'D', 1, lunch=3)

    class_repo.load.side_effect = require(('Smith', 'D', 1), klass)
    class_repo.names_of_teachers_in_lunch.side_effect = require((1, 'D', 3),
                                                                ['Smith'])
    student_repo.students_in_class.side_effect = require((1, 'D', 'Smith'),
                                                         lunchmates)

    output = case.show_lunchmates(viewer, 1, 'D', 3)

    assert list(output) == list(lunchmates)
Exemplo n.º 11
0
def test_own_schedule_none():
    student = Student('hpeng2021', 'Michael')
    student.schedules = {}

    with pytest.raises(MissingScheduleError, match='hpeng2021'):
        case.own_schedule(student, 1)
Exemplo n.º 12
0
def test_show_lunchmates_without_schedule():
    with pytest.raises(MissingScheduleError):
        viewer = Student('hpeng2021', 'Michael Peng')
        viewer.schedules = None
        list(case.show_lunchmates(viewer, 1, 'D', 1))
Exemplo n.º 13
0
def test_semester_schedule_without_schedule():
    student = Student('hpeng2021', 'Michael')
    student.schedules = None

    assert student.semester_schedule(1) is None
Exemplo n.º 14
0
 def update_schedule(self, student: Student, new_schedule: YearSchedule):
     student.schedules = new_schedule
     self.student_repo.save(student)