copied the code from the working repo
This commit is contained in:
158
mtucijobsbackend/tests/test_students.py
Normal file
158
mtucijobsbackend/tests/test_students.py
Normal file
@@ -0,0 +1,158 @@
|
||||
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
|
||||
Reference in New Issue
Block a user