From 09281db6e75005635f496159c793e968559bc278 Mon Sep 17 00:00:00 2001
From: dcz <dcz@ipipan.waw.pl>
Date: Tue, 14 Nov 2023 19:13:19 +0100
Subject: [PATCH] Tests

---
 shellvalier/settings-test.py         |  1 +
 vertical_relations/tests/__init__.py |  0
 vertical_relations/tests/test.py     | 81 ++++++++++++++++++++++++++++
 3 files changed, 82 insertions(+)
 create mode 100644 vertical_relations/tests/__init__.py
 create mode 100644 vertical_relations/tests/test.py

diff --git a/shellvalier/settings-test.py b/shellvalier/settings-test.py
index dd60eac..32221ea 100644
--- a/shellvalier/settings-test.py
+++ b/shellvalier/settings-test.py
@@ -35,6 +35,7 @@ INSTALLED_APPS = [
     'unifier.apps.UnifierConfig',
     'financial_settlement.apps.FinStatementConfig',
     'freelus.apps.FreeLusConfig',
+    'vertical_relations.apps.VerticalRelationsConfig',
 ]
 
 SECRET_KEY = get_environment('SECRET_KEY')
diff --git a/vertical_relations/tests/__init__.py b/vertical_relations/tests/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/vertical_relations/tests/test.py b/vertical_relations/tests/test.py
new file mode 100644
index 0000000..34ec807
--- /dev/null
+++ b/vertical_relations/tests/test.py
@@ -0,0 +1,81 @@
+from django.test import Client
+from django.test import RequestFactory, TestCase
+
+# initialize the APIClient app
+from semantics.models import ArgumentRole, SemanticRole
+from unifier.models import UnifiedFrame, UnifiedFrameArgument
+from vertical_relations.models import MainVerticalRelation, UnifiedFrameVerticalRelation, VerticalRelationNegation, \
+    TemporalVerticalRelation
+from vertical_relations.views import save_main_vertical_relation, save_vertical_relation_negation, save_iter_relation
+
+client = Client()
+
+
+class ApiTest(TestCase):
+
+    def tearDown(self) -> None:
+        pass
+
+    @classmethod
+    def tearDownClass(cls):
+        pass
+
+    def setUp(self):
+        self.factory = RequestFactory()
+
+        self.unified_frame1 = UnifiedFrame.objects.create(status='status1', title='title1')
+        self.unified_frame2 = UnifiedFrame.objects.create(status='status2', title='title2')
+
+        self.semantic_role = SemanticRole.objects.create(role='test_role', priority=1)
+        self.argument_role = ArgumentRole.objects.create(role=self.semantic_role)
+        self.unified_frame_argument = UnifiedFrameArgument.objects.create(unified_frame=self.unified_frame1,
+                                                                          role=self.argument_role)
+
+        self.main_relation = MainVerticalRelation.objects.create(name='main-relation', priority=1)
+        self.neg = VerticalRelationNegation.objects.create(name='neg', priority=1)
+        self.temporal = TemporalVerticalRelation.objects.create(name='temp', priority=1)
+
+
+    def create_new_vertical_relation(self):
+        request = self.factory.post("/pl/vertical_relations/save_main_vertical_relation/",
+                                    HTTP_X_REQUESTED_WITH='XMLHttpRequest',
+                                    data={'source_unified_frame_id': self.unified_frame1.pk,
+                                          'target_unified_frame_id': self.unified_frame2.pk,
+                                          'main_vertical_relation_id': self.main_relation.pk})
+        response = save_main_vertical_relation(request)
+
+    def test_create_new_vertical_relation(self):
+        self.create_new_vertical_relation()
+        self.assertEqual(1, UnifiedFrameVerticalRelation.objects.all().count())
+        relation = UnifiedFrameVerticalRelation.objects.all()[0]
+        self.assertEqual(self.unified_frame1.pk, relation.source_unified_frame.id)
+        self.assertEqual(self.unified_frame2.pk, relation.target_unified_frame.id)
+
+        unified_frame = UnifiedFrame.objects.get(id=self.unified_frame1.pk)
+        self.assertEqual(True, unified_frame.has_vertical_relations)
+
+    def test_save_vertical_relation_negation(self):
+        self.create_new_vertical_relation()
+        request = self.factory.post("/pl/vertical_relations/save_vertical_relation_negation/",
+                                    HTTP_X_REQUESTED_WITH='XMLHttpRequest',
+                                    data={'source_unified_frame_id': self.unified_frame1.pk,
+                                          'target_unified_frame_id': self.unified_frame2.pk,
+                                          'vertical_relation_id': self.main_relation.pk,
+                                          'unified_frame_argument_id': self.unified_frame_argument.pk,
+                                          'negation_id': self.neg.pk})
+        response = save_vertical_relation_negation(request)
+        relation = UnifiedFrameVerticalRelation.objects.all()[0]
+        self.assertEqual(self.neg.pk, relation.negation.id)
+        self.assertEqual(self.unified_frame_argument.pk, relation.negation_argument.id)
+
+    def test_save_iter_relation(self):
+        self.create_new_vertical_relation()
+        request = self.factory.post("/pl/vertical_relations/save_iter_relation/",
+                                    HTTP_X_REQUESTED_WITH='XMLHttpRequest',
+                                    data={'source_unified_frame_id': self.unified_frame1.pk,
+                                          'target_unified_frame_id': self.unified_frame2.pk,
+                                          'vertical_relation_id': self.main_relation.pk,
+                                          'temporal_vertical_relation_id': self.temporal.pk})
+        response = save_iter_relation(request)
+        relation = UnifiedFrameVerticalRelation.objects.all()[0]
+        self.assertEqual(self.temporal.pk, relation.iter_temporal_vertical_relation.id)
-- 
GitLab