52 lines
1.4 KiB
Python
52 lines
1.4 KiB
Python
# type: ignore
|
|
|
|
import databases
|
|
import pytest
|
|
import sqlalchemy
|
|
|
|
import ormar
|
|
from ormar import ModelDefinitionError
|
|
from tests.settings import DATABASE_URL
|
|
|
|
database = databases.Database(DATABASE_URL, force_rollback=True)
|
|
metadata = sqlalchemy.MetaData()
|
|
|
|
|
|
def test_through_with_relation_fails():
|
|
class BaseMeta(ormar.ModelMeta):
|
|
database = database
|
|
metadata = metadata
|
|
|
|
class Category(ormar.Model):
|
|
class Meta(BaseMeta):
|
|
tablename = "categories"
|
|
|
|
id = ormar.Integer(primary_key=True)
|
|
name = ormar.String(max_length=40)
|
|
|
|
class Blog(ormar.Model):
|
|
class Meta(BaseMeta):
|
|
pass
|
|
|
|
id: int = ormar.Integer(primary_key=True)
|
|
title: str = ormar.String(max_length=200)
|
|
|
|
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)
|
|
param_name: str = ormar.String(default="Name", max_length=200)
|
|
blog = ormar.ForeignKey(Blog)
|
|
|
|
with pytest.raises(ModelDefinitionError):
|
|
|
|
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)
|