48 lines
1.1 KiB
Python
48 lines
1.1 KiB
Python
import random
|
|
|
|
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()
|
|
|
|
|
|
def key():
|
|
return "".join(random.choice("abcdefgh123456") for _ in range(8))
|
|
|
|
|
|
class Model(ormar.Model):
|
|
class Meta:
|
|
tablename = "models"
|
|
metadata = metadata
|
|
database = database
|
|
|
|
id = ormar.String(primary_key=True, default=key, max_length=8)
|
|
name = ormar.String(max_length=32)
|
|
|
|
|
|
@pytest.fixture(autouse=True, scope="function")
|
|
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_pk_1():
|
|
async with database:
|
|
model = await Model.objects.create(name="NAME")
|
|
assert isinstance(model.id, str)
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_pk_2():
|
|
async with database:
|
|
model = await Model.objects.create(name="NAME")
|
|
assert await Model.objects.all() == [model]
|