summaryrefslogtreecommitdiff
path: root/archaeological_context_records/tests.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2021-06-16 13:34:38 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2021-06-17 15:17:09 +0200
commit323006e473ee3077cd91f9011090a4df1de5c0ae (patch)
treeba6cff80e3e426ac57cce299c36760fe87806bba /archaeological_context_records/tests.py
parent41e7699a3caa2344cbe93089f68dda0dc0d8a446 (diff)
downloadIshtar-323006e473ee3077cd91f9011090a4df1de5c0ae.tar.bz2
Ishtar-323006e473ee3077cd91f9011090a4df1de5c0ae.zip
Context records: Optimize record relations - management command - tests
Diffstat (limited to 'archaeological_context_records/tests.py')
-rw-r--r--archaeological_context_records/tests.py122
1 files changed, 110 insertions, 12 deletions
diff --git a/archaeological_context_records/tests.py b/archaeological_context_records/tests.py
index 1f919b5d9..553731542 100644
--- a/archaeological_context_records/tests.py
+++ b/archaeological_context_records/tests.py
@@ -943,8 +943,6 @@ class RecordRelationsTest(ContextRecordInit, TestCase):
)
def test_relation_view(self):
- ## TODO : branches multiples
- ## TODO : cyclique
profile = get_current_profile()
profile.parent_relations_engine = "V"
profile.save()
@@ -956,15 +954,15 @@ class RecordRelationsTest(ContextRecordInit, TestCase):
logical_relation='included'
)
"""
- 6 7 8 9 10
+ 6 7 8 9 10 = 11 = 12
| | | | |
------- -----
| |
- 4 5
+ 4 5 = 13
| |
---------
|
- 3
+ 3 = 14
|
---------
| |
@@ -991,13 +989,113 @@ class RecordRelationsTest(ContextRecordInit, TestCase):
self.assertTrue(models.ContextRecordTree.check_engine()) # change to table
q = models.ContextRecordTree.objects.filter(cr=crs[0], cr_parent=crs[1])
self.assertEqual(q.count(), 0) # empty table
- print("~~~ CR1 - child of all")
- models.ContextRecordTree.update(crs[0].id)
- print("~~~ CR2")
- models.ContextRecordTree.update(crs[1].id)
- print("~~~ CR3 - parent of all")
- models.ContextRecordTree.update(crs[2].id)
- # vérifier cr1 -> cr3
+ # verify tree generation
+ full_trees = [
+ [10, 5, 3, 2],
+ [10, 5, 3, 1],
+ [9, 5, 3, 2],
+ [9, 5, 3, 1],
+ [8, 4, 3, 2],
+ [8, 4, 3, 1],
+ [7, 4, 3, 2],
+ [7, 4, 3, 1],
+ [6, 4, 3, 2],
+ [6, 4, 3, 1],
+ ]
+ self._test_tree_generation(0, full_trees)
+ trees = [
+ [10, 5, 3, 2],
+ [10, 5, 3, 1],
+ [9, 5, 3, 2],
+ [9, 5, 3, 1],
+ [8, 4, 3, 2],
+ [8, 4, 3, 1],
+ [7, 4, 3, 2],
+ [7, 4, 3, 1],
+ [6, 4, 3, 2],
+ [6, 4, 3, 1],
+ ]
+ self._test_tree_generation(1, trees)
+ trees = [
+ [10, 5, 3, 2],
+ [10, 5, 3, 1],
+ [9, 5, 3, 2],
+ [9, 5, 3, 1],
+ [8, 4, 3, 2],
+ [8, 4, 3, 1],
+ [7, 4, 3, 2],
+ [7, 4, 3, 1],
+ [6, 4, 3, 2],
+ [6, 4, 3, 1],
+ ]
+ self._test_tree_generation(2, trees)
+ trees = [
+ [8, 4, 3, 2],
+ [8, 4, 3, 1],
+ [7, 4, 3, 2],
+ [7, 4, 3, 1],
+ [6, 4, 3, 2],
+ [6, 4, 3, 1],
+ ]
+ self._test_tree_generation(3, trees)
+ trees = [
+ [10, 5, 3, 2],
+ [10, 5, 3, 1],
+ [9, 5, 3, 2],
+ [9, 5, 3, 1],
+ ]
+ self._test_tree_generation(4, trees)
+ trees = [
+ [6, 4, 3, 2],
+ [6, 4, 3, 1],
+ ]
+ self._test_tree_generation(5, trees)
+ trees = [
+ [7, 4, 3, 2],
+ [7, 4, 3, 1],
+ ]
+ self._test_tree_generation(6, trees)
+ trees = [
+ [8, 4, 3, 2],
+ [8, 4, 3, 1],
+ ]
+ self._test_tree_generation(7, trees)
+ trees = [
+ [9, 5, 3, 2],
+ [9, 5, 3, 1],
+ ]
+ self._test_tree_generation(8, trees)
+ trees = [
+ [10, 5, 3, 2],
+ [10, 5, 3, 1],
+ ]
+ self._test_tree_generation(9, trees)
+ models.ContextRecordTree.objects.filter(pk__isnull=False).delete()
+ # test regenerate all
+ models.ContextRecordTree.regenerate_all()
+ self._test_tree_(full_trees, "'FULL GENERATION'")
+
+ # test remove a Node
+ # test EQUIV
+
+ def _test_tree_(self, test_trees, context_record):
+ crs = self.context_records
+ for tree in test_trees:
+ for tree_idx in range(len(tree) - 1):
+ q = models.ContextRecordTree.objects.filter(
+ cr_parent=crs[tree[tree_idx] - 1], cr=crs[tree[tree_idx + 1] - 1])
+ self.assertEqual(
+ q.count(), 1,
+ msg="Tree relation ({}, {}) is missing for context "
+ "record {}".format(tree[tree_idx + 1], tree[tree_idx],
+ context_record)
+ )
+
+ def _test_tree_generation(self, cr_idx, test_trees):
+ crs = self.context_records
+ models.ContextRecordTree.objects.filter(pk__isnull=False).delete()
+ models.ContextRecordTree.update(crs[cr_idx].id)
+ self._test_tree_(test_trees, cr_idx + 1)
class ContextRecordWizardCreationTest(WizardTest, ContextRecordInit, TestCase):