diff options
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 |
commit | 25f23ed03ad48fb4e5ca2f14527c0bc381dc8c9b (patch) | |
tree | ba6cff80e3e426ac57cce299c36760fe87806bba /archaeological_context_records/tests.py | |
parent | a8349afc7ec5e7919108ceca7027cf054a23caff (diff) | |
download | Ishtar-25f23ed03ad48fb4e5ca2f14527c0bc381dc8c9b.tar.bz2 Ishtar-25f23ed03ad48fb4e5ca2f14527c0bc381dc8c9b.zip |
Context records: Optimize record relations - management command - tests
Diffstat (limited to 'archaeological_context_records/tests.py')
-rw-r--r-- | archaeological_context_records/tests.py | 122 |
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): |