Skip to content

Commit 8d0c05f

Browse files
committed
Fixed pytest configuration
1 parent 61d3e31 commit 8d0c05f

File tree

6 files changed

+38
-36
lines changed

6 files changed

+38
-36
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ jobs:
7171
run: |
7272
export PYTHONUSERBASE=${HOME}/.local
7373
pip install --user -r requirements.txt -r requirements.dev.txt
74-
PYTHONPATH=${GITHUB_WORKSPACE}/src python -m pytest --cov=mrmat_python_api_fastapi
74+
PYTHONPATH=${GITHUB_WORKSPACE}/src pytest
7575
PYTHONPATH=${GITHUB_WORKSPACE}/src python -m build --wheel -n
7676
ls build
7777

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ init_forbid_extra = true
5050
init_typed = true
5151
warn_required_dynamic_aliases = true
5252

53-
[pytest]
53+
[tool.pytest.ini_options]
5454
testpaths = 'tests'
5555
addopts = '--cov=mrmat_python_api_fastapi --cov-report=term --cov-report=xml:build/coverage.xml --junit-xml=build/junit.xml'
5656
junit_family = 'xunit2'

src/mrmat_python_api_fastapi/__init__.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,14 @@
1919
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
2020
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2121
# SOFTWARE.
22+
from pydantic import BaseModel
2223

2324
from .config import Config
2425
app_config = Config.from_json_file()
2526

26-
from sqlalchemy.ext.declarative import declarative_base
27+
from sqlalchemy.orm import declarative_base
2728
Base = declarative_base()
29+
30+
31+
class BaseSchema(BaseModel):
32+
model_config = {'from_attributes': True}

src/mrmat_python_api_fastapi/apis/platform/v1/api.py

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ async def get_resource(uid: str,
7373
response: Response,
7474
session: Session = Depends(get_db)):
7575
try:
76-
resource = session.query(Resource).get(uid)
76+
resource = session.get(Resource, uid)
7777
if not resource:
7878
response.status_code = 404
7979
return StatusSchema(code=404, msg='The resource was not found')
@@ -124,15 +124,15 @@ async def create_resource(data: ResourceInputSchema,
124124
async def modify_resource(uid: str,
125125
data: ResourceInputSchema,
126126
response: Response,
127-
db: Session = Depends(get_db)):
127+
session: Session = Depends(get_db)):
128128
try:
129-
resource = db.query(Resource).get(uid)
129+
resource = session.get(Resource, uid)
130130
if not resource:
131131
response.status_code = 404
132132
return StatusSchema(code=404, msg='Not found')
133133
resource.name = data.name
134-
db.add(resource)
135-
db.commit()
134+
session.add(resource)
135+
session.commit()
136136
return ResourceSchema(uid=resource.uid,
137137
owner_uid=resource.owner_uid,
138138
name=resource.name)
@@ -158,7 +158,7 @@ async def remove_resource(uid: str,
158158
response: Response,
159159
session: Session = Depends(get_db)):
160160
try:
161-
resource = session.query(Resource).get(uid)
161+
resource = session.get(Resource, uid)
162162
if not resource:
163163
response.status_code = 410
164164
return StatusSchema(code=410, msg='The resource was already gone')
@@ -203,7 +203,7 @@ async def get_owner(uid: str,
203203
response: Response,
204204
session: Session = Depends(get_db)):
205205
try:
206-
owner = session.query(Owner).get(uid)
206+
owner = session.get(Owner, uid)
207207
if not owner:
208208
response.status_code = 404
209209
return StatusSchema(code=404, msg='The owner was not found')
@@ -250,15 +250,15 @@ async def create_owner(data: OwnerInputSchema,
250250
async def modify_owner(uid: str,
251251
data: OwnerInputSchema,
252252
response: Response,
253-
db: Session = Depends(get_db)):
253+
session: Session = Depends(get_db)):
254254
try:
255-
owner = db.query(Owner).get(uid)
255+
owner = session.get(Owner, uid)
256256
if not owner:
257257
response.status_code = 404
258258
return StatusSchema(code=404, msg='The owner was not found')
259259
owner.name = data.name
260-
db.add(owner)
261-
db.commit()
260+
session.add(owner)
261+
session.commit()
262262
return OwnerSchema(uid=owner.uid, name=owner.name)
263263
except SQLAlchemyError as e:
264264
raise HTTPException(status_code=500, detail="A database error occurred") from e
@@ -280,11 +280,14 @@ async def modify_owner(uid: str,
280280
})
281281
async def remove_owner(uid: str,
282282
response: Response,
283-
db: Session = Depends(get_db)):
284-
owner = db.query(Owner).get(uid)
285-
if not owner:
286-
response.status_code = status.HTTP_410_GONE
287-
return
288-
db.delete(owner)
289-
db.commit()
290-
response.status_code = status.HTTP_204_NO_CONTENT
283+
session: Session = Depends(get_db)):
284+
try:
285+
owner = session.get(Owner, uid)
286+
if not owner:
287+
response.status_code = status.HTTP_410_GONE
288+
return
289+
session.delete(owner)
290+
session.commit()
291+
response.status_code = status.HTTP_204_NO_CONTENT
292+
except SQLAlchemyError as e:
293+
raise HTTPException(status_code=500, detail="A database error occurred") from e

src/mrmat_python_api_fastapi/apis/platform/v1/schema.py

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,31 +22,25 @@
2222

2323
import typing
2424

25-
from pydantic import BaseModel
25+
from mrmat_python_api_fastapi import BaseSchema
2626

27-
class OwnerInputSchema(BaseModel):
27+
28+
class OwnerInputSchema(BaseSchema):
2829
name: str
2930

3031
class OwnerSchema(OwnerInputSchema):
3132
uid: str
3233

33-
class Config:
34-
from_attributes = True
35-
36-
class OwnerListSchema(BaseModel):
34+
class OwnerListSchema(BaseSchema):
3735
owners: typing.List[OwnerSchema]
3836

39-
class ResourceInputSchema(BaseModel):
37+
class ResourceInputSchema(BaseSchema):
4038
name: str
4139
owner_uid: str
4240

43-
4441
class ResourceSchema(ResourceInputSchema):
4542
uid: str
4643
name: str
4744

48-
class Config:
49-
from_attributes = True
50-
51-
class ResourceListSchema(BaseModel):
52-
resources: typing.List[ResourceSchema]
45+
class ResourceListSchema(BaseSchema):
46+
resources: typing.List[ResourceSchema]

src/mrmat_python_api_fastapi/db.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
@lru_cache
3232
def get_db() -> Session:
3333
if app_config.db_url.startswith('sqlite'):
34-
engine = create_engine(url=app_config.db_url, connect_args={'check_same_thread': False}, echo=True)
34+
engine = create_engine(url=app_config.db_url, connect_args={'check_same_thread': False})
3535
else:
3636
engine = create_engine(url=app_config.db_url)
3737
session_local = sessionmaker(bind=engine)

0 commit comments

Comments
 (0)