import databases import pytest import sqlalchemy import ormar from tests.settings import DATABASE_URL database = databases.Database(DATABASE_URL, force_rollback=True) metadata = sqlalchemy.MetaData() class BaseMeta(ormar.ModelMeta): database = database metadata = metadata class Category(ormar.Model): class Meta(BaseMeta): tablename = "categories" id: int = ormar.Integer(primary_key=True) name: str = ormar.String(max_length=40) class PostCategory(ormar.Model): class Meta(BaseMeta): tablename = "posts_x_categories" id: int = ormar.Integer(primary_key=True) sort_order: int = ormar.Integer(nullable=True) class Post(ormar.Model): class Meta(BaseMeta): pass id: int = ormar.Integer(primary_key=True) title: str = ormar.String(max_length=200) categories = ormar.ManyToMany(Category, through=PostCategory) # # @pytest.fixture(autouse=True, scope="module") # async def create_test_database(): # engine = sqlalchemy.create_engine(DATABASE_URL) # metadata.create_all(engine) # yield # metadata.drop_all(engine) # # # @pytest.mark.asyncio # async def test_setting_fields_on_through_model(): # async with database: # # TODO: check/ modify following # # loading the data into model instance of though model? # # <- attach to other side? both sides? access by through, or add to fields? # # creating while adding to relation (kwargs in add?) # # creating in query (dividing kwargs between final and through) # # updating in query # # sorting in filter (special __through__ notation?) # # ordering by in order_by # # accessing from instance (both sides?) # # modifying from instance (both sides?) # # including/excluding in fields? # # allowing to change fk fields names in through model? # pass