1
0
mirror of https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git synced 2025-08-14 00:25:46 +02:00
Files
AdministrationItDepartmens/backend/app/tests/test_employees.py
2025-01-04 02:19:41 +06:00

150 lines
4.2 KiB
Python

import pytest
from fastapi.testclient import TestClient
from sqlalchemy.orm import Session
from ..main import app
from ..crud import employees
from ..utils.auth import verify_password
client = TestClient(app)
def test_create_employee(test_db: Session, admin_token: str):
employee_data = {
"first_name": "John",
"last_name": "Doe",
"department": "IT",
"office": "101",
"password": "testpass123"
}
response = client.post(
"/api/employees/",
json=employee_data,
headers={"Authorization": f"Bearer {admin_token}"}
)
assert response.status_code == 200
data = response.json()
assert data["first_name"] == employee_data["first_name"]
assert data["last_name"] == employee_data["last_name"]
assert data["department"] == employee_data["department"]
assert data["office"] == employee_data["office"]
assert "id" in data
def test_create_employee_unauthorized():
employee_data = {
"first_name": "John",
"last_name": "Doe",
"department": "IT",
"office": "101",
"password": "testpass123"
}
response = client.post(
"/api/employees/",
json=employee_data
)
assert response.status_code == 401
def test_get_employees(test_db: Session, admin_token: str):
# Создаем несколько тестовых сотрудников
for i in range(3):
employees.create_employee(
test_db,
{
"first_name": f"Test{i}",
"last_name": f"User{i}",
"department": "IT",
"office": f"10{i}",
"password": "testpass123"
}
)
response = client.get(
"/api/employees/",
headers={"Authorization": f"Bearer {admin_token}"}
)
assert response.status_code == 200
data = response.json()
assert len(data) >= 3
def test_get_employee_by_id(test_db: Session, admin_token: str):
# Создаем тестового сотрудника
employee = employees.create_employee(
test_db,
{
"first_name": "Test",
"last_name": "User",
"department": "IT",
"office": "101",
"password": "testpass123"
}
)
response = client.get(
f"/api/employees/{employee.id}",
headers={"Authorization": f"Bearer {admin_token}"}
)
assert response.status_code == 200
data = response.json()
assert data["id"] == employee.id
assert data["first_name"] == employee.first_name
assert data["last_name"] == employee.last_name
def test_update_employee(test_db: Session, admin_token: str):
# Создаем тестового сотрудника
employee = employees.create_employee(
test_db,
{
"first_name": "Test",
"last_name": "User",
"department": "IT",
"office": "101",
"password": "testpass123"
}
)
update_data = {
"department": "HR",
"office": "202"
}
response = client.put(
f"/api/employees/{employee.id}",
json=update_data,
headers={"Authorization": f"Bearer {admin_token}"}
)
assert response.status_code == 200
data = response.json()
assert data["department"] == update_data["department"]
assert data["office"] == update_data["office"]
def test_delete_employee(test_db: Session, admin_token: str):
# Создаем тестового сотрудника
employee = employees.create_employee(
test_db,
{
"first_name": "Test",
"last_name": "User",
"department": "IT",
"office": "101",
"password": "testpass123"
}
)
response = client.delete(
f"/api/employees/{employee.id}",
headers={"Authorization": f"Bearer {admin_token}"}
)
assert response.status_code == 200
# Проверяем, что сотрудник удален
get_response = client.get(
f"/api/employees/{employee.id}",
headers={"Authorization": f"Bearer {admin_token}"}
)
assert get_response.status_code == 404