|
1 | 1 | import pytest |
2 | | - |
3 | | - |
4 | | -async def test_can_delete_by_pk(repository_class, model_class, sa_manager): |
5 | | - model = model_class( |
6 | | - model_id=1, |
7 | | - name="Someone", |
8 | | - ) |
9 | | - model2 = model_class( |
10 | | - model_id=2, |
11 | | - name="SomeoneElse", |
12 | | - ) |
13 | | - repo = repository_class(sa_manager.get_bind()) |
14 | | - await repo.save_many({model, model2}) |
15 | | - |
16 | | - results = [x for x in await repo.find()] |
17 | | - assert len(results) == 2 |
18 | | - |
19 | | - await repo.delete(1) |
20 | | - results = [x for x in await repo.find()] |
21 | | - assert len(results) == 1 |
22 | | - assert results[0].model_id == 2 |
23 | | - assert results[0].name == "SomeoneElse" |
| 2 | +from sqlalchemy import select |
24 | 3 |
|
25 | 4 |
|
26 | 5 | async def test_can_delete_by_instance(repository_class, model_class, sa_manager): |
@@ -55,3 +34,26 @@ async def test_delete_inexistent_raises_exception( |
55 | 34 |
|
56 | 35 | with pytest.raises(Exception): |
57 | 36 | await repo.delete(4) |
| 37 | + |
| 38 | + |
| 39 | +async def test_relationships_are_respected( |
| 40 | + related_repository_class, related_model_classes, sa_manager |
| 41 | +): |
| 42 | + parent = related_model_classes[0]( |
| 43 | + name="A Parent", |
| 44 | + ) |
| 45 | + child = related_model_classes[1](name="A Child") |
| 46 | + child2 = related_model_classes[1](name="Another Child") |
| 47 | + parent.children.append(child) |
| 48 | + parent.children.append(child2) |
| 49 | + repo = related_repository_class(sa_manager.get_bind()) |
| 50 | + await repo.save(parent) |
| 51 | + |
| 52 | + retrieved_parent = await repo.get(parent.parent_model_id) |
| 53 | + assert len(retrieved_parent.children) == 2 |
| 54 | + |
| 55 | + await repo.delete(retrieved_parent) |
| 56 | + |
| 57 | + async with repo._get_session() as session: |
| 58 | + result = [x for x in (await session.execute(select(related_model_classes[1]))).scalars()] |
| 59 | + assert len(result) == 0 |
0 commit comments