Skip to content

Commit b441e52

Browse files
committed
Add doctest for README
1 parent 79308a8 commit b441e52

3 files changed

Lines changed: 84 additions & 7 deletions

File tree

README.rst

Lines changed: 67 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,12 @@ Usage
3838

3939
Add mixin to model
4040

41-
.. code-block:: python
41+
.. testsetup:: *
42+
43+
engine = create_engine("sqlite:///:memory:")
44+
session = Session(engine)
45+
46+
.. testcode:: default,delete-node,update-node,move-inside,move-after,move-top
4247

4348
from sqlalchemy import Column, Integer, Boolean
4449
from sqlalchemy.ext.declarative import declarative_base
@@ -57,12 +62,40 @@ Add mixin to model
5762
def __repr__(self):
5863
return "<Node (%s)>" % self.id
5964

65+
.. testcode:: default,delete-node,update-node,move-inside,move-after,move-top
66+
:hide:
67+
68+
Base.metadata.create_all(engine)
69+
tree_manager.register_events(remove=True)
70+
instances = [
71+
Tree(id=1, parent_id=None),
72+
Tree(id=2, parent_id=1),
73+
Tree(id=3, parent_id=2),
74+
Tree(id=4, parent_id=1),
75+
Tree(id=5, parent_id=4),
76+
Tree(id=6, parent_id=4),
77+
Tree(id=7, parent_id=1),
78+
Tree(id=8, parent_id=7),
79+
Tree(id=9, parent_id=8),
80+
Tree(id=10, parent_id=7),
81+
Tree(id=11, parent_id=10)
82+
]
83+
for instance in instances:
84+
instance.left = 0
85+
instance.right = 0
86+
instance.visible = True
87+
instance.tree_id = 1
88+
session.add_all(instances)
89+
session.flush()
90+
tree_manager.register_events()
91+
Tree.rebuild_tree(session, tree_id=1)
92+
6093
Now you can add, move and delete obj!
6194

6295
Insert node
6396
-----------
6497

65-
.. code-block:: python
98+
.. testcode::
6699

67100
node = Tree(parent_id=6)
68101
session.add(node)
@@ -93,7 +126,7 @@ Insert node
93126
Delete node
94127
-----------
95128

96-
.. code:: python
129+
.. testcode:: delete-node
97130

98131
node = session.query(Tree).filter(Tree.id == 4).one()
99132
session.delete(node)
@@ -123,7 +156,7 @@ Delete node
123156
Update node
124157
-----------
125158

126-
.. code:: python
159+
.. testcode:: update-node
127160

128161
node = session.query(Tree).filter(Tree.id == 8).one()
129162
node.parent_id = 5
@@ -162,9 +195,36 @@ Move node (support multitree)
162195

163196
Nested sets multitree
164197

198+
.. testcode:: move-inside,move-top
199+
:hide:
200+
201+
tree_manager.register_events(remove=True)
202+
instances = [
203+
Tree(id=12, parent_id=None),
204+
Tree(id=13, parent_id=12),
205+
Tree(id=14, parent_id=13),
206+
Tree(id=15, parent_id=12),
207+
Tree(id=16, parent_id=15),
208+
Tree(id=17, parent_id=15),
209+
Tree(id=18, parent_id=12),
210+
Tree(id=19, parent_id=18),
211+
Tree(id=20, parent_id=19),
212+
Tree(id=21, parent_id=18),
213+
Tree(id=22, parent_id=21)
214+
]
215+
for instance in instances:
216+
instance.left = 0
217+
instance.right = 0
218+
instance.visible = True
219+
instance.tree_id = 2
220+
session.add_all(instances)
221+
session.flush()
222+
tree_manager.register_events()
223+
Tree.rebuild_tree(session, tree_id=2)
224+
165225
Move inside
166226

167-
.. code:: python
227+
.. testcode:: move-inside
168228

169229
node = session.query(Tree).filter(Tree.id == 4).one()
170230
node.move_inside("15")
@@ -194,7 +254,7 @@ Move inside
194254

195255
Move after
196256

197-
.. code:: python
257+
.. testcode:: move-after
198258

199259
node = session.query(Tree).filter(Tree.id == 8).one()
200260
node.move_after("5")
@@ -223,7 +283,7 @@ Move after
223283

224284
Move to top level
225285

226-
.. code:: python
286+
.. testcode:: move-top
227287

228288
node = session.query(Tree).filter(Tree.id == 15).one()
229289
node.move_after("1")

docs/README.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../README.rst

docs/conf.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,19 @@
6969
'github_user': 'uralbash',
7070
'github_repo': 'sqlalchemy_mptt',
7171
}
72+
73+
# -- Options for doctest extension ------------------------------------------
74+
doctest_global_setup = """
75+
from sqlalchemy import create_engine, Column, Integer, Boolean
76+
from sqlalchemy.ext.declarative import declarative_base
77+
from sqlalchemy.orm import Session
78+
79+
from sqlalchemy_mptt import tree_manager
80+
from sqlalchemy_mptt.mixins import BaseNestedSets
81+
"""
82+
doctest_global_cleanup = """
83+
try:
84+
session.flush()
85+
except NameError:
86+
pass
87+
"""

0 commit comments

Comments
 (0)