import json from datetime import datetime from typing import TYPE_CHECKING from src.models.users import UsersORM from src.schemas.users import User if TYPE_CHECKING: from tests.conftest import TestDBManager async def test_user_crud(db: "TestDBManager"): data = { "username": "test", "hashed_password": "hashed_pass", "email": "test@mail.ru", "is_active": True, "is_superuser": False, } user = await db.user.create_one(data=data) assert user.username == data["username"] filtered_user = await db.user.get_filtered(username=data["username"]) assert filtered_user[0] == user new_user = User.model_validate(user) new_user.username = "Test2" new_user.email = None await db.user.update_one(id=new_user.id, data=User.model_dump(new_user)) updated_user = await db.user.get_one_or_none(id=new_user.id) assert updated_user assert updated_user.username == new_user.username assert not updated_user.email await db.user.delete_one(id=updated_user.id) delete_user = await db.user.get_one_or_none(id=new_user.id) assert not delete_user async def test_tasks_user(db: "TestDBManager"): with open("tests/mock_tasks.json") as jsonfile: data = json.load(jsonfile) admin_user: UsersORM | None = await db.user.get_one_or_none(id=1) assert admin_user data = [ { **item, "user_id": admin_user.id, "due_date": datetime.strptime(item["due_date"], "%Y-%m-%d"), } for item in data ] result = await db.task.create_bulk(data) await db.commit() assert result tasks = await db.task.get_filtered(user_id=admin_user.id) assert tasks user_with_tasks = await db.user.get_one_with_load(user_id=admin_user.id) assert user_with_tasks assert user_with_tasks.tasks