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
+18 -8
View File
@@ -1,12 +1,11 @@
"""Unit tests for OrganizationService."""
from __future__ import annotations
from typing import cast
from unittest.mock import MagicMock
import pytest # type: ignore[import-not-found]
from sqlalchemy.ext.asyncio import AsyncSession
from app.models.organization import Organization
from app.models.organization_member import OrganizationMember, OrganizationRole
from app.repositories.org_repo import OrganizationRepository
@@ -18,6 +17,7 @@ from app.services.organization_service import (
OrganizationMemberAlreadyExistsError,
OrganizationService,
)
from sqlalchemy.ext.asyncio import AsyncSession
class StubOrganizationRepository(OrganizationRepository):
@@ -27,7 +27,9 @@ class StubOrganizationRepository(OrganizationRepository):
super().__init__(session=MagicMock(spec=AsyncSession))
self._membership = membership
async def get_membership(self, organization_id: int, user_id: int) -> OrganizationMember | None: # pragma: no cover - helper
async def get_membership(
self, organization_id: int, user_id: int
) -> OrganizationMember | None: # pragma: no cover - helper
if (
self._membership
and self._membership.organization_id == organization_id
@@ -37,7 +39,9 @@ class StubOrganizationRepository(OrganizationRepository):
return None
def make_membership(role: OrganizationRole, *, organization_id: int = 1, user_id: int = 10) -> OrganizationMember:
def make_membership(
role: OrganizationRole, *, organization_id: int = 1, user_id: int = 10
) -> OrganizationMember:
organization = Organization(name="Acme Inc")
organization.id = organization_id
membership = OrganizationMember(
@@ -70,7 +74,9 @@ class SessionStub:
class MembershipRepositoryStub(OrganizationRepository):
"""Repository stub that can emulate duplicate checks for add_member."""
def __init__(self, memberships: dict[tuple[int, int], OrganizationMember] | None = None) -> None:
def __init__(
self, memberships: dict[tuple[int, int], OrganizationMember] | None = None
) -> None:
self._session_stub = SessionStub()
super().__init__(session=cast(AsyncSession, self._session_stub))
self._memberships = memberships or {}
@@ -88,7 +94,9 @@ async def test_get_context_success() -> None:
membership = make_membership(OrganizationRole.MANAGER)
service = OrganizationService(StubOrganizationRepository(membership))
context = await service.get_context(user_id=membership.user_id, organization_id=membership.organization_id)
context = await service.get_context(
user_id=membership.user_id, organization_id=membership.organization_id
)
assert context.organization_id == membership.organization_id
assert context.role == OrganizationRole.MANAGER
@@ -174,7 +182,9 @@ async def test_add_member_rejects_duplicate_membership() -> None:
service = OrganizationService(repo)
with pytest.raises(OrganizationMemberAlreadyExistsError):
await service.add_member(context=context, user_id=duplicate_user_id, role=OrganizationRole.MANAGER)
await service.add_member(
context=context, user_id=duplicate_user_id, role=OrganizationRole.MANAGER
)
@pytest.mark.asyncio
@@ -191,4 +201,4 @@ async def test_add_member_requires_privileged_role() -> None:
await service.add_member(context=context, user_id=99, role=OrganizationRole.MANAGER)
# Ensure DB work not attempted when permissions fail.
assert repo.session_stub.committed is False
assert repo.session_stub.committed is False