Refactor code for improved readability and consistency
Test / test (push) Successful in 15s

- Reformatted function signatures in `organization_service.py` and `task_service.py` for better alignment.
- Updated import statements across multiple files for consistency and organization.
- Enhanced test files by improving formatting and ensuring consistent use of async session factories.
- Added type hints and improved type safety in various service and test files.
- Adjusted `pyproject.toml` to include configuration for isort, mypy, and ruff for better code quality checks.
- Cleaned up unused imports and organized existing ones in several test files.
This commit is contained in:
Artem Kashaev
2025-12-01 16:18:03 +05:00
parent eecb74c523
commit 5fcb574aca
62 changed files with 765 additions and 476 deletions
+37 -16
View File
@@ -1,16 +1,13 @@
"""API tests for organization endpoints."""
from __future__ import annotations
from collections.abc import AsyncGenerator, Sequence
from datetime import timedelta
from typing import AsyncGenerator, Sequence, cast
from typing import cast
import pytest
import pytest_asyncio
from httpx import ASGITransport, AsyncClient
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine
from sqlalchemy.schema import Table
from app.api.deps import get_db_session
from app.core.security import jwt_service
from app.main import create_app
@@ -18,6 +15,10 @@ from app.models import Base
from app.models.organization import Organization
from app.models.organization_member import OrganizationMember, OrganizationRole
from app.models.user import User
from httpx import ASGITransport, AsyncClient
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine
from sqlalchemy.schema import Table
@pytest_asyncio.fixture()
@@ -55,10 +56,13 @@ async def client(
@pytest.mark.asyncio
async def test_list_user_organizations_returns_memberships(
session_factory: async_sessionmaker[AsyncSession], client: AsyncClient
session_factory: async_sessionmaker[AsyncSession],
client: AsyncClient,
) -> None:
async with session_factory() as session:
user = User(email="owner@example.com", hashed_password="hashed", name="Owner", is_active=True)
user = User(
email="owner@example.com", hashed_password="hashed", name="Owner", is_active=True
)
session.add(user)
await session.flush()
@@ -110,8 +114,12 @@ async def test_owner_can_add_member_to_organization(
client: AsyncClient,
) -> None:
async with session_factory() as session:
owner = User(email="owner-add@example.com", hashed_password="hashed", name="Owner", is_active=True)
invitee = User(email="new-member@example.com", hashed_password="hashed", name="Member", is_active=True)
owner = User(
email="owner-add@example.com", hashed_password="hashed", name="Owner", is_active=True
)
invitee = User(
email="new-member@example.com", hashed_password="hashed", name="Member", is_active=True
)
session.add_all([owner, invitee])
await session.flush()
@@ -153,7 +161,7 @@ async def test_owner_can_add_member_to_organization(
select(OrganizationMember).where(
OrganizationMember.organization_id == organization.id,
OrganizationMember.user_id == invitee.id,
)
),
)
assert new_membership is not None
assert new_membership.role == OrganizationRole.MANAGER
@@ -165,7 +173,12 @@ async def test_add_member_requires_existing_user(
client: AsyncClient,
) -> None:
async with session_factory() as session:
owner = User(email="owner-missing@example.com", hashed_password="hashed", name="Owner", is_active=True)
owner = User(
email="owner-missing@example.com",
hashed_password="hashed",
name="Owner",
is_active=True,
)
session.add(owner)
await session.flush()
@@ -206,8 +219,12 @@ async def test_member_role_cannot_add_users(
client: AsyncClient,
) -> None:
async with session_factory() as session:
member_user = User(email="member@example.com", hashed_password="hashed", name="Member", is_active=True)
invitee = User(email="invitee@example.com", hashed_password="hashed", name="Invitee", is_active=True)
member_user = User(
email="member@example.com", hashed_password="hashed", name="Member", is_active=True
)
invitee = User(
email="invitee@example.com", hashed_password="hashed", name="Invitee", is_active=True
)
session.add_all([member_user, invitee])
await session.flush()
@@ -248,8 +265,12 @@ async def test_cannot_add_duplicate_member(
client: AsyncClient,
) -> None:
async with session_factory() as session:
owner = User(email="dup-owner@example.com", hashed_password="hashed", name="Owner", is_active=True)
invitee = User(email="dup-member@example.com", hashed_password="hashed", name="Invitee", is_active=True)
owner = User(
email="dup-owner@example.com", hashed_password="hashed", name="Owner", is_active=True
)
invitee = User(
email="dup-member@example.com", hashed_password="hashed", name="Invitee", is_active=True
)
session.add_all([owner, invitee])
await session.flush()