1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
|
import pytest
from beanie.odm.queries.delete import DeleteMany
from tests.odm.models import Sample
async def test_delete_many(preset_documents):
count_before = await Sample.count()
count_find = (
await Sample.find_many(Sample.integer > 1)
.find_many(Sample.nested.optional == None)
.count()
) # noqa
delete_result = (
await Sample.find_many(Sample.integer > 1)
.find_many(Sample.nested.optional == None)
.delete()
) # noqa
count_deleted = delete_result.deleted_count
count_after = await Sample.count()
assert count_before - count_find == count_after
assert count_after + count_deleted == count_before
assert isinstance(
Sample.find_many(Sample.integer > 1)
.find_many(Sample.nested.optional == None)
.delete_many(),
DeleteMany,
) # noqa
async def test_delete_all(preset_documents):
count_before = await Sample.count()
delete_result = await Sample.delete_all()
count_deleted = delete_result.deleted_count
count_after = await Sample.count()
assert count_after == 0
assert count_after + count_deleted == count_before
async def test_delete_self(preset_documents):
count_before = await Sample.count()
result = (
await Sample.find_many(Sample.integer > 1)
.find_many(Sample.nested.optional == None)
.to_list()
) # noqa
a = result[0]
delete_result = await a.delete()
count_deleted = delete_result.deleted_count
count_after = await Sample.count()
assert count_before == count_after + 1
assert count_deleted == 1
async def test_delete_one(preset_documents):
count_before = await Sample.count()
delete_result = (
await Sample.find_one(Sample.integer > 1)
.find_one(Sample.nested.optional == None)
.delete()
) # noqa
count_after = await Sample.count()
count_deleted = delete_result.deleted_count
assert count_before == count_after + 1
assert count_deleted == 1
count_before = await Sample.count()
delete_result = (
await Sample.find_one(Sample.integer > 1)
.find_one(Sample.nested.optional == None)
.delete_one()
) # noqa
count_deleted = delete_result.deleted_count
count_after = await Sample.count()
assert count_before == count_after + 1
assert count_deleted == 1
async def test_delete_many_with_session(preset_documents, session):
count_before = await Sample.count()
count_find = (
await Sample.find_many(Sample.integer > 1)
.find_many(Sample.nested.optional == None)
.count()
) # noqa
q = (
Sample.find_many(Sample.integer > 1)
.find_many(Sample.nested.optional == None)
.delete(session=session)
) # noqa
assert q.session == session
q = (
Sample.find_many(Sample.integer > 1)
.find_many(Sample.nested.optional == None)
.delete()
.set_session(session=session)
) # noqa
assert q.session == session
delete_result = await q
count_deleted = delete_result.deleted_count
count_after = await Sample.count()
assert count_before - count_find == count_after
assert count_after + count_deleted == count_before
async def test_delete_pymongo_kwargs(preset_documents):
with pytest.raises(TypeError):
await Sample.find_many(Sample.increment > 4).delete(wrong="integer_1")
delete_result = await Sample.find_many(Sample.increment > 4).delete(
hint="integer_1"
)
assert delete_result is not None
delete_result = await Sample.find_one(Sample.increment > 4).delete(
hint="integer_1"
)
assert delete_result is not None
|