From 54821f9113959c1f2d31e5a1fd2e641dbdcc98a0 Mon Sep 17 00:00:00 2001 From: Masum Billal Date: Sun, 16 Jun 2024 14:14:39 +0600 Subject: [PATCH] improved coverage to 91 --- codecov.yml | 6 +++--- tox.ini | 7 +++++-- tracker/db/session.py | 8 +++++--- tracker/models/base.py | 15 ++++++--------- tracker/services/bug.py | 2 +- tracker/services/story.py | 3 ++- 6 files changed, 22 insertions(+), 19 deletions(-) diff --git a/codecov.yml b/codecov.yml index eccb09a..6e213c3 100644 --- a/codecov.yml +++ b/codecov.yml @@ -1,11 +1,11 @@ coverage: precision: 2 round: up - range: 85...100 + range: 90...100 status: patch: default: - target: 85% + target: 90% project: default: - target: 85% + target: 90% diff --git a/tox.ini b/tox.ini index 2b0101b..54ecfc2 100644 --- a/tox.ini +++ b/tox.ini @@ -26,12 +26,15 @@ commands = commands = poetry install --with dev - poetry run coverage run --source=. -m pytest - poetry run coverage report -m --fail-under=85 + poetry run coverage run --source=. --omit=tracker/main.py -m pytest + poetry run coverage report -m --fail-under=90 [testenv:coverage] commands = poetry run coverage xml -o coverage.xml +[testenv:runserver] +commands = poetry run fastapi dev tracker/main.py + ; [testenv:docs-win32] ; passenv = * diff --git a/tracker/db/session.py b/tracker/db/session.py index d8b588b..25bff22 100644 --- a/tracker/db/session.py +++ b/tracker/db/session.py @@ -1,3 +1,5 @@ +from typing import AsyncGenerator + from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine from sqlalchemy.orm import declarative_base @@ -12,6 +14,6 @@ BaseModel = declarative_base() -async def get_db(): - async with Session() as db: - yield db +async def get_db() -> AsyncGenerator[AsyncSession, None]: + async with Session() as session: + yield session diff --git a/tracker/models/base.py b/tracker/models/base.py index 4b37c6c..b0b9a20 100644 --- a/tracker/models/base.py +++ b/tracker/models/base.py @@ -1,5 +1,4 @@ -from sqlalchemy import TIMESTAMP, Column, Integer -from sqlalchemy.orm import Mapped +from sqlalchemy import Column, DateTime, Integer from sqlalchemy.sql import func from tracker.db.session import BaseModel @@ -8,13 +7,11 @@ class Base(BaseModel): __abstract__ = True - id: Mapped[int] = Column(Integer, primary_key=True, autoincrement=True, index=True) - created_at: Mapped[TIMESTAMP] = Column( - TIMESTAMP, server_default=func.now(), index=True - ) - updated_at: Mapped[TIMESTAMP] = Column( - TIMESTAMP, + id = Column(Integer, primary_key=True, autoincrement=True, index=True) + created_at = Column(DateTime(timezone=True), server_default=func.now(), index=True) + updated_at = Column( + DateTime(timezone=True), server_default=func.now(), - server_onupdate=func.current_timestamp(), + onupdate=func.current_timestamp(), index=True, ) diff --git a/tracker/services/bug.py b/tracker/services/bug.py index d1ca7a3..9e20635 100644 --- a/tracker/services/bug.py +++ b/tracker/services/bug.py @@ -23,7 +23,7 @@ async def bug_by_id(db: AsyncSession, id: int) -> BugOutput | HTTPException: def bug_output(bug: Bug) -> BugOutput: story = jsonable_encoder(obj=bug.story) bug_output = BugOutput( - id=bug.id, + id=int(bug.id), title=bug.title, description=bug.description, story=story, diff --git a/tracker/services/story.py b/tracker/services/story.py index ff41ce4..cf59ad0 100644 --- a/tracker/services/story.py +++ b/tracker/services/story.py @@ -1,4 +1,5 @@ from http import HTTPStatus +from typing import Sequence from fastapi import HTTPException from sqlalchemy.ext.asyncio import AsyncSession @@ -10,7 +11,7 @@ async def stories( db: AsyncSession, skip: int = 0, limit: int = 10 -) -> list[StoryOutput]: +) -> Sequence[StoryOutput]: query = await db.execute(select(Story).offset(skip).limit(limit=limit)) return query.scalars().all()