Files
Tg-job/mtucijobsbackend/tests/test_students.py

159 lines
5.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import pytest
from app import schemas, models
@pytest.fixture()
def create_hardskills(session):
hardskill1 = models.Hard_skills(Title="Python")
hardskill2 = models.Hard_skills(Title="Java")
session.add(hardskill1)
session.add(hardskill2)
session.commit()
session.refresh(hardskill1)
session.refresh(hardskill2)
return [hardskill1, hardskill2]
Glob_StudentID = 1 # Важно!!! Данная переменная не должна совпадать с StudentID из student_data_test.
@pytest.fixture
def student_data_test():
return {
"StudentID": 1234567890,
"Name": "Журавлёв Василий Иванович",
"Type": "Работу",
"Group": "БУТ2101",
"Time": ["20", "30", "40"],
"Soft_skills": "коммуникабельность, работа в команде, адаптивность",
"Link": "https://Vasiliy.com",
"Email": "Vasiliy@gmail.com"
}
@pytest.fixture
def job_data_test(create_hardskills):
hardskills = create_hardskills
return {
"job": {
"Company_name": "АСУ-ВЭИ",
"Job_name": "Работа с ПЛК",
"Year": "3",
"Qualification": False,
"Soft_skills": "Работа в команде",
"Salary": 25000,
"Email": "info@asu-vei.ru",
"Archive": False,
"Responsibilities": "Разработка методических пособий, для работы с ПЛК. Тестирование scada системы"
},
"hardskills": [
{
"JobID": 1,
"Hard_skillID": hardskills[0].Hard_skillID
},
{
"JobID": 1,
"Hard_skillID": hardskills[1].Hard_skillID
}
]
}
@pytest.fixture
def favourite_data_test(create_student, create_job):
student_id = create_student["StudentID"]
return {
"StudentID": student_id,
"JobID": 1
}
@pytest.fixture
def create_favourite(client, favourite_data_test):
response = client.post("/students/favourites/", json=favourite_data_test)
assert response.status_code == 201
return response.json()
@pytest.fixture
def create_job(client, job_data_test):
response = client.post("/jobs/", json=job_data_test)
assert response.status_code == 201
return response.json()
@pytest.fixture
def create_student(client, student_data_test):
response = client.post("/students/", json={"student": student_data_test})
assert response.status_code == 201
return response.json()
def test_root(client):
res = client.get("/")
assert res.json().get('message') == "I'm ok!"
assert res.status_code == 200
def test_get_jobs(client):
response = client.get("/students/")
assert response.status_code == 200
def test_get_students(client):
response = client.get("/students/")
assert response.status_code == 200
def test_get_student_by_id(client, create_student):
student_id = create_student["StudentID"]
response = client.get(f"/students/{student_id}")
assert response.status_code == 200
student = schemas.Student(**response.json())
assert student.StudentID == student_id
# Возможно стоит удалить этот тест
def test_get_student_by_id_not_exist(client, create_student):
response = client.get(f"/students/{Glob_StudentID}")
assert response.status_code == 404
def test_create_student(client, student_data_test):
response = client.post("/students/", json={"student": student_data_test})
assert response.status_code == 201
new_student = schemas.Student(**response.json())
assert new_student.Name == "Журавлёв Василий Иванович"
def test_update_student(client, create_student):
student_id = create_student["StudentID"]
updated_data = {
"Name": "Журавлёв Владимир Иванович",
"Type": "Стажировку",
"Group": "БУТ2101",
"Time": ["20"],
"Soft_skills": "коммуникабельность, адаптивность",
"Link": "https://Vladimir.com",
"Email": "Vladimir@gmail.com"
}
response = client.put(f"/students/{student_id}", json=updated_data)
assert response.status_code == 200
updated_student = schemas.Student(**response.json())
assert updated_student.Name == "Журавлёв Владимир Иванович"
assert updated_student.Type == "Стажировку"
assert updated_student.Group == "БУТ2101"
assert updated_student.Time == ["20"]
assert updated_student.Soft_skills == "коммуникабельность, адаптивность"
assert updated_student.Link == "https://Vladimir.com"
assert updated_student.Email == "Vladimir@gmail.com"
def test_delete_student(client, create_student):
student_id = create_student["StudentID"]
response = client.delete(f"/students/{student_id}")
assert response.status_code == 204
response = client.get(f"/students/{student_id}")
assert response.status_code == 404
# Для этого теста нужно создать job
def test_add_to_favourites(client, create_favourite):
student_id = create_favourite["StudentID"]
job_id = create_favourite["JobID"]
assert student_id == student_id
assert job_id == 1
# Для этого теста наверное надо ещё заполнить таблицу Matches, так что думаю этот тест не очень стабильный, но о работает)))
# def test_get_favourites(client, create_student, create_job, create_favourite):
# student_id = create_student["StudentID"]
# response = client.get(f"/students/favourites/{student_id}")
# # assert response.status_code == 200 # как это может ломать тест?
# favourites = response.json()
# assert len(favourites) > 0