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