This commit is contained in:
Cédric Krier committed 2009-06-05 18:52:39 +02:00
commit 3587629a4a
2 files changed
+91 -49

No files matched your search

+4
View File
@@ -15,6 +15,7 @@ class MPTT(ModelSQL, ModelView):
left = fields.Integer('Left', required=True, select=1)
right = fields.Integer('Right', required=True, select=1)
childs = fields.One2Many('tests.mptt', 'parent', 'Children')
active = fields.Boolean('Active')
def __init__(self):
super(MPTT, self).__init__()
@@ -26,4 +27,7 @@ class MPTT(ModelSQL, ModelView):
'recursive_mptt': 'You can not create recursive Tree!',
})
def default_active(self, cursor, user, context=None):
return True
MPTT()
+87 -49
View File
@@ -574,6 +574,56 @@ class MPTTTestCase(unittest.TestCase):
(child['id'] , child['right'], previous_right))
previous_right = child['left']
def ReParent(self, parent_id=False):
record_ids = self.mptt.search([
('parent', '=', parent_id),
], CONTEXT)
if not record_ids:
return
for record_id in record_ids:
for record2_id in record_ids:
if record_id != record2_id:
self.mptt.write(record_id, {
'parent': record2_id,
}, CONTEXT)
self.assertRaises(Exception, self.CheckTree())
self.mptt.write(record_id, {
'parent': parent_id,
}, CONTEXT)
self.assertRaises(Exception, self.CheckTree())
for record_id in record_ids:
self.ReParent(record_id)
def ReOrder(self, parent_id=False):
record_ids = self.mptt.search([
('parent', '=', parent_id),
], CONTEXT)
if not record_ids:
return
i = len(record_ids)
for record_id in record_ids:
self.mptt.write(record_id, {
'sequence': i,
}, CONTEXT)
i -= 1
self.assertRaises(Exception, self.CheckTree())
i = 0
for record_id in record_ids:
self.mptt.write(record_id, {
'sequence': i,
}, CONTEXT)
i += 1
self.assertRaises(Exception, self.CheckTree())
for record_id in record_ids:
self.ReOrder(record_id)
record_ids = self.mptt.search([], CONTEXT)
self.mptt.write(record_ids, {
'sequence': 0,
}, CONTEXT)
self.assertRaises(Exception, self.CheckTree())
def test0010create(self):
'''
Create tree.
@@ -597,61 +647,49 @@ class MPTTTestCase(unittest.TestCase):
'''
Re-order.
'''
def reorder(parent_id=False):
record_ids = self.mptt.search([
('parent', '=', parent_id),
], CONTEXT)
if not record_ids:
return
i = len(record_ids)
for record_id in record_ids:
self.mptt.write(record_id, {
'sequence': i,
}, CONTEXT)
i -= 1
self.assertRaises(Exception, self.CheckTree())
i = 0
for record_id in record_ids:
self.mptt.write(record_id, {
'sequence': i,
}, CONTEXT)
i += 1
self.assertRaises(Exception, self.CheckTree())
for record_id in record_ids:
reorder(record_id)
reorder()
record_ids = self.mptt.search([], CONTEXT)
self.mptt.write(record_ids, {
'sequence': 0,
}, CONTEXT)
self.assertRaises(Exception, self.CheckTree())
self.ReOrder()
def test0030reparent(self):
'''
Re-parent.
'''
def reparent(parent_id=False):
record_ids = self.mptt.search([
('parent', '=', parent_id),
], CONTEXT)
if not record_ids:
return
for record_id in record_ids:
for record2_id in record_ids:
if record_id != record2_id:
self.mptt.write(record_id, {
'parent': record2_id,
}, CONTEXT)
self.assertRaises(Exception, self.CheckTree())
self.mptt.write(record_id, {
'parent': parent_id,
}, CONTEXT)
self.assertRaises(Exception, self.CheckTree())
for record_id in record_ids:
reparent(record_id)
reparent()
self.ReParent()
def test0040delete(self):
def test0040active(self):
record_ids = self.mptt.search([], CONTEXT)
for record_id in record_ids:
if record_id % 2:
self.mptt.write(record_id, {
'active': False
}, CONTEXT)
self.assertRaises(Exception, self.CheckTree())
self.ReParent()
self.ReOrder()
record_ids = self.mptt.search([], CONTEXT)
self.mptt.write(record_ids[:len(record_ids)/2], {
'active': False
}, CONTEXT)
self.assertRaises(Exception, self.CheckTree())
record_ids = self.mptt.search([], CONTEXT)
self.mptt.write(record_ids, {
'active': False
}, CONTEXT)
self.ReParent()
self.ReOrder()
record_ids = self.mptt.search([
('active', '=', False),
], CONTEXT)
self.mptt.write(record_ids, {
'active': False
}, CONTEXT)
self.assertRaises(Exception, self.CheckTree())
def test0050delete(self):
'''
Delete.
'''