fix coverage, bump version, update relaese, update docs
This commit is contained in:
@ -11,6 +11,25 @@ database = databases.Database(DATABASE_URL)
|
||||
metadata = sqlalchemy.MetaData()
|
||||
|
||||
|
||||
class Band(ormar.Model):
|
||||
class Meta:
|
||||
tablename = "bands"
|
||||
metadata = metadata
|
||||
database = database
|
||||
|
||||
id: int = ormar.Integer(primary_key=True)
|
||||
name: str = ormar.String(max_length=100)
|
||||
|
||||
|
||||
class ArtistsBands(ormar.Model):
|
||||
class Meta:
|
||||
tablename = "artists_x_bands"
|
||||
metadata = metadata
|
||||
database = database
|
||||
|
||||
id: int = ormar.Integer(primary_key=True)
|
||||
|
||||
|
||||
class Artist(ormar.Model):
|
||||
class Meta:
|
||||
tablename = "artists"
|
||||
@ -19,6 +38,7 @@ class Artist(ormar.Model):
|
||||
|
||||
id: int = ormar.Integer(primary_key=True)
|
||||
name: str = ormar.String(max_length=100)
|
||||
bands = ormar.ManyToMany(Band, through=ArtistsBands)
|
||||
|
||||
|
||||
class Album(ormar.Model):
|
||||
@ -52,8 +72,16 @@ def create_test_database():
|
||||
metadata.drop_all(engine)
|
||||
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
async def cleanup():
|
||||
yield
|
||||
async with database:
|
||||
await Band.objects.delete(each=True)
|
||||
await Artist.objects.delete(each=True)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_simple_cascade():
|
||||
async def test_simple_cascade(cleanup):
|
||||
async with database:
|
||||
artist = await Artist(name="Dr Alban").save()
|
||||
await Album(name="Jamaica", artist=artist).save()
|
||||
@ -63,3 +91,66 @@ async def test_simple_cascade():
|
||||
|
||||
albums = await Album.objects.all()
|
||||
assert len(albums) == 0
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_nested_cascade(cleanup):
|
||||
async with database:
|
||||
artist = await Artist(name="Dr Alban").save()
|
||||
album = await Album(name="Jamaica", artist=artist).save()
|
||||
await Track(title="Yuhu", album=album).save()
|
||||
|
||||
await Artist.objects.delete(id=artist.id)
|
||||
|
||||
artists = await Artist.objects.all()
|
||||
assert len(artists) == 0
|
||||
|
||||
albums = await Album.objects.all()
|
||||
assert len(albums) == 0
|
||||
|
||||
tracks = await Track.objects.all()
|
||||
assert len(tracks) == 0
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_many_to_many_cascade(cleanup):
|
||||
async with database:
|
||||
artist = await Artist(name="Dr Alban").save()
|
||||
band = await Band(name="Scorpions").save()
|
||||
await artist.bands.add(band)
|
||||
|
||||
check = await Artist.objects.select_related("bands").get()
|
||||
assert check.bands[0].name == "Scorpions"
|
||||
|
||||
await Artist.objects.delete(id=artist.id)
|
||||
|
||||
artists = await Artist.objects.all()
|
||||
assert len(artists) == 0
|
||||
|
||||
bands = await Band.objects.all()
|
||||
assert len(bands) == 1
|
||||
|
||||
connections = await ArtistsBands.objects.all()
|
||||
assert len(connections) == 0
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_reverse_many_to_many_cascade(cleanup):
|
||||
async with database:
|
||||
artist = await Artist(name="Dr Alban").save()
|
||||
band = await Band(name="Scorpions").save()
|
||||
await artist.bands.add(band)
|
||||
|
||||
check = await Artist.objects.select_related("bands").get()
|
||||
assert check.bands[0].name == "Scorpions"
|
||||
|
||||
await Band.objects.delete(id=band.id)
|
||||
|
||||
artists = await Artist.objects.all()
|
||||
assert len(artists) == 1
|
||||
|
||||
connections = await ArtistsBands.objects.all()
|
||||
assert len(connections) == 0
|
||||
|
||||
bands = await Band.objects.all()
|
||||
assert len(bands) == 0
|
||||
|
||||
Reference in New Issue
Block a user