Files
api/tests/resolvers/test_aircraft.py
T
2024-04-02 06:13:23 +02:00

50 lines
1.4 KiB
Python

from collections import namedtuple
from typing import Optional
import pytest
from database import models
from graphql_schema.entities.resolvers.aircraft import AircraftQueryResolver
from tests.factories import create_pilot
from utils.str_utils import random_str
AircraftData = namedtuple('AircraftData', ["aircraft", "user"])
async def create_aircraft(db, data: Optional[dict] = None) -> AircraftData:
if not data:
data = {}
if not data.get("created_by_id"):
pilot = await create_pilot(db)
data["created_by_id"] = pilot.id
else:
pilot = await models.User.get_one(db, id=data['created_by_id'])
return AircraftData(
aircraft=await models.Aircraft.create(
db,
{
"call_sign": data.pop("call_sign", f"OK-{random_str(4)}"),
"is_public": data.pop("is_public", False),
"created_by_id": data.pop('created_by_id'),
"seats": data.pop("seats", 2),
**data
}
),
user=pilot
)
async def test_private_aircraft(db):
aircraft_data = await create_aircraft(db)
resolver = AircraftQueryResolver()
params =[
{"id": aircraft_data.aircraft.id, "created_by_id": 234}
]
for param in params:
aircraft = await resolver.get_one(**param)
assert aircraft.id == aircraft_data.aircraft.id