Skip to content

Commit 053dcad

Browse files
committed
Consume all descendants on deletion
1 parent 0964da7 commit 053dcad

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

sqlalchemy_mptt/tests/test_stateful.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from hypothesis.stateful import Bundle, RuleBasedStateMachine, consumes, invariant, rule
44
from sqlalchemy import Column, Integer, Boolean, create_engine
55
from sqlalchemy.ext.declarative import declarative_base
6-
from sqlalchemy.orm import sessionmaker
6+
from sqlalchemy.orm import sessionmaker, was_deleted
77

88
from sqlalchemy_mptt import BaseNestedSets, mptt_sessionmaker
99

@@ -44,6 +44,14 @@ def add_root_node(self, visible):
4444
@rule(node=consumes(node))
4545
def delete_node(self, node):
4646
assume(node in self.session)
47+
# Consume all descendants of the node
48+
for name, value in self.names_to_values.copy().items():
49+
if node.is_ancestor_of(value):
50+
for var_reference in self.bundles["node"][:]:
51+
if var_reference.name == name:
52+
self.bundles["node"].remove(var_reference)
53+
# Remove the object as well for garbage collection
54+
del self.names_to_values[name]
4755
self.session.delete(node)
4856
self.session.flush()
4957

0 commit comments

Comments
 (0)