From b19dd1d2ed3e1a99c709c9a0b7280c497942083c Mon Sep 17 00:00:00 2001
From: Jan David Mol <mol@astron.nl>
Date: Mon, 15 Mar 2021 17:30:27 +0100
Subject: [PATCH] TMSS-601: Task connectors must point to a task template.

---
 .../src/tmss/tmssapp/migrations/0001_initial.py    |  4 ++--
 .../src/tmss/tmssapp/models/specification.py       |  2 +-
 .../test/t_tmssapp_specification_django_API.py     | 14 ++------------
 3 files changed, 5 insertions(+), 15 deletions(-)

diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/migrations/0001_initial.py b/SAS/TMSS/backend/src/tmss/tmssapp/migrations/0001_initial.py
index cf09f98a9ba..3d6ebc48b0b 100644
--- a/SAS/TMSS/backend/src/tmss/tmssapp/migrations/0001_initial.py
+++ b/SAS/TMSS/backend/src/tmss/tmssapp/migrations/0001_initial.py
@@ -1,4 +1,4 @@
-# Generated by Django 3.0.9 on 2021-03-12 12:33
+# Generated by Django 3.0.9 on 2021-03-15 16:29
 
 from django.conf import settings
 import django.contrib.postgres.fields
@@ -1003,7 +1003,7 @@ class Migration(migrations.Migration):
         migrations.AddField(
             model_name='taskconnectortype',
             name='task_template',
-            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='output_connector_types', to='tmssapp.TaskTemplate'),
+            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='output_connector_types', to='tmssapp.TaskTemplate'),
         ),
         migrations.AddField(
             model_name='taskblueprint',
diff --git a/SAS/TMSS/backend/src/tmss/tmssapp/models/specification.py b/SAS/TMSS/backend/src/tmss/tmssapp/models/specification.py
index 48dd7e6c90e..364066ebe6b 100644
--- a/SAS/TMSS/backend/src/tmss/tmssapp/models/specification.py
+++ b/SAS/TMSS/backend/src/tmss/tmssapp/models/specification.py
@@ -163,7 +163,7 @@ class TaskConnectorType(BasicCommon):
     role = ForeignKey('Role', null=False, on_delete=PROTECT)
     datatype = ForeignKey('Datatype', null=False, on_delete=PROTECT)
     dataformats = ManyToManyField('Dataformat', blank=True)
-    task_template = ForeignKey("TaskTemplate", related_name='output_connector_types', null=True, on_delete=CASCADE)
+    task_template = ForeignKey("TaskTemplate", related_name='output_connector_types', null=False, on_delete=CASCADE)
     output = BooleanField(null=False, help_text="True if this connector describes an output, False if this connector describes an input")
 
 
diff --git a/SAS/TMSS/backend/test/t_tmssapp_specification_django_API.py b/SAS/TMSS/backend/test/t_tmssapp_specification_django_API.py
index 7966ebf8041..7ace3e3ad11 100755
--- a/SAS/TMSS/backend/test/t_tmssapp_specification_django_API.py
+++ b/SAS/TMSS/backend/test/t_tmssapp_specification_django_API.py
@@ -268,21 +268,11 @@ class TaskRelationSelectionTemplateTest(unittest.TestCase):
 
 class TaskConnectorTest(unittest.TestCase):
 
-    def test_POST_TaskConnector_prevents_missing_input_of(self):
+    def test_POST_TaskConnector_prevents_missing_task_template(self):
 
         # setup
         test_data_1 = dict(TaskConnectorType_test_data())
-        test_data_1['input_of'] = None
-
-        # assert
-        with self.assertRaises(IntegrityError):
-            models.TaskConnectorType.objects.create(**test_data_1)
-
-    def test_POST_TaskConnector_prevents_missing_output_of(self):
-
-        # setup
-        test_data_1 = dict(TaskConnectorType_test_data())
-        test_data_1['output_of'] = None
+        test_data_1['task_template'] = None
 
         # assert
         with self.assertRaises(IntegrityError):
-- 
GitLab