system-pri/backend/tests/functional_tests/coordinator/test_students.py

120 lines
4.8 KiB
Python

import copy
from ...utils import _test_case_client, _test_case_client_without_response, assert_model_changes
from ...fake_data import create_year_group, create_students, create_student
valid_data = {
'first_name': 'Albert',
'last_name': 'Rose',
'index': 234_343,
'email': 'albert@gmail.com'
}
new_data = {
'first_name': 'Martin',
'last_name': 'Green',
'pesel': '93030312894'
}
data_to_create_student = {
**new_data,
'index': 123_456
}
def test_list_students(test_app_with_context) -> None:
with test_app_with_context.test_client() as client:
yg = create_year_group()
create_students(yg, 45)
data = _test_case_client_without_response(client, f'/api/coordinator/students/{yg.id}/?per_page=10', None, 200,
method='get')
assert data.get('max_pages') == 5
assert len(data.get('students')) == 10
def test_detail_student(test_app_with_context) -> None:
with test_app_with_context.test_client() as client:
yg = create_year_group()
st = create_student(valid_data, yg.id)
data = _test_case_client_without_response(client, f'/api/coordinator/students/{st.index}/detail/', None, 200,
method='get')
assert_model_changes(st, data)
def test_detail_student_if_student_doesnt_exist(test_app_with_context) -> None:
with test_app_with_context.test_client() as client:
_test_case_client(client, '/api/coordinator/students/43/detail/', None, 'Not found student!', 404,
method='get', key='error')
def test_delete_student(test_app_with_context) -> None:
with test_app_with_context.test_client() as client:
yg = create_year_group()
st = create_student(valid_data, yg.id)
_test_case_client(client, f'/api/coordinator/students/{st.index}/', None, 'Student was deleted!', 202,
method='delete')
def test_delete_student_if_student_doesnt_exist(test_app_with_context) -> None:
with test_app_with_context.test_client() as client:
_test_case_client(client, '/api/coordinator/students/43/', None, 'Not found student!', 404,
method='delete', key='error')
def test_edit_student(test_app_with_context) -> None:
with test_app_with_context.test_client() as client:
yg = create_year_group()
st = create_student(valid_data, yg.id)
_test_case_client(client, f'/api/coordinator/students/{st.index}/', new_data, 'Student was updated!', 200,
method='put')
def test_edit_student_with_invalid_data(test_app_with_context) -> None:
data = copy.copy(new_data)
data['pesel'] = '43333333333433443'
with test_app_with_context.test_client() as client:
yg = create_year_group()
st = create_student(valid_data, yg.id)
_test_case_client(client, f'/api/coordinator/students/{st.index}/', data, 'Validation error', 400, method='put')
def test_edit_student_if_student_doesnt_exist(test_app_with_context) -> None:
with test_app_with_context.test_client() as client:
_test_case_client(client, '/api/coordinator/students/54/', new_data, 'Not found student!', 404, method='put',
key='error')
def test_create_student(test_app_with_context) -> None:
data = copy.copy(data_to_create_student)
with test_app_with_context.test_client() as client:
yg = create_year_group()
data['year_group_id'] = yg.id
_test_case_client(client, '/api/coordinator/students/', data, 'Student was created!', 200, method='post')
def test_create_student_with_invalid_data(test_app_with_context) -> None:
data = copy.copy(data_to_create_student)
data['pesel'] = '434343434343344'
with test_app_with_context.test_client() as client:
yg = create_year_group()
data['year_group_id'] = yg.id
_test_case_client(client, '/api/coordinator/students/', data, 'Validation error', 400, method='post')
def test_create_student_if_year_group_doesnt_exist(test_app_with_context) -> None:
data = copy.copy(data_to_create_student)
with test_app_with_context.test_client() as client:
data['year_group_id'] = 34
_test_case_client(client, '/api/coordinator/students/', data, 'Not found year group!', 404, method='post',
key='error')
def test_create_student_if_student_has_already_assigned_to_this_group(test_app_with_context) -> None:
data = copy.copy(data_to_create_student)
with test_app_with_context.test_client() as client:
yg = create_year_group()
create_student(data, yg.id)
data['year_group_id'] = yg.id
_test_case_client(client, '/api/coordinator/students/', data, 'You are assigned to this year group!', 400,
method='post', key='error')