77 lines
2.0 KiB
Python
77 lines
2.0 KiB
Python
import uuid
|
|
|
|
import pytest
|
|
from models import Foo
|
|
from tortoise.exceptions import IntegrityError
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_allow_duplicate() -> None:
|
|
await Foo.all().delete()
|
|
await Foo.create(name="foo")
|
|
obj = await Foo.create(name="foo")
|
|
assert (await Foo.all().count()) == 2
|
|
await obj.delete()
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_unique_is_true() -> None:
|
|
with pytest.raises(IntegrityError):
|
|
await Foo.create(name="foo")
|
|
await Foo.create(name="foo")
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_add_unique_field() -> None:
|
|
if not await Foo.filter(age=0).exists():
|
|
await Foo.create(name="0_" + uuid.uuid4().hex, age=0)
|
|
with pytest.raises(IntegrityError):
|
|
await Foo.create(name=uuid.uuid4().hex, age=0)
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_drop_unique_field() -> None:
|
|
name = "1_" + uuid.uuid4().hex
|
|
await Foo.create(name=name, age=0)
|
|
assert await Foo.filter(name=name).exists()
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_with_age_field() -> None:
|
|
name = "2_" + uuid.uuid4().hex
|
|
await Foo.create(name=name, age=0)
|
|
obj = await Foo.get(name=name)
|
|
assert obj.age == 0
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_without_age_field() -> None:
|
|
name = "3_" + uuid.uuid4().hex
|
|
await Foo.create(name=name, age=0)
|
|
obj = await Foo.get(name=name)
|
|
assert getattr(obj, "age", None) is None
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_m2m_with_custom_through() -> None:
|
|
from models import FooGroup, Group
|
|
|
|
name = "4_" + uuid.uuid4().hex
|
|
foo = await Foo.create(name=name)
|
|
group = await Group.create(name=name + "1")
|
|
await FooGroup.all().delete()
|
|
await foo.groups.add(group)
|
|
foo_group = await FooGroup.get(foo=foo, group=group)
|
|
assert not foo_group.is_active
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_add_m2m_field_after_init_db() -> None:
|
|
from models import Group
|
|
|
|
name = "5_" + uuid.uuid4().hex
|
|
foo = await Foo.create(name=name)
|
|
group = await Group.create(name=name + "1")
|
|
await foo.groups.add(group)
|
|
assert (await group.users.all().first()) == foo
|