From 3f83191c17e017e32305a1389c4ce441c42bb8b7 Mon Sep 17 00:00:00 2001
From: borzechof99 <borzechof99@mi.fu-berlin.de>
Date: Mon, 14 Jun 2021 22:33:13 +0200
Subject: [PATCH] Add Testing for Modeltranslation

---
 unisportomat/quiz/tests.py | 103 +++++++++++++++++++++++++++++++++++++
 1 file changed, 103 insertions(+)

diff --git a/unisportomat/quiz/tests.py b/unisportomat/quiz/tests.py
index 26b095b..542d2c5 100644
--- a/unisportomat/quiz/tests.py
+++ b/unisportomat/quiz/tests.py
@@ -6,6 +6,7 @@ import tempfile
 
 from django.core.files.uploadedfile import SimpleUploadedFile
 from django.core.management import call_command
+from django.utils.translation import get_language, activate
 from django.test import TestCase, override_settings
 from django.conf import settings
 from .models import (
@@ -276,3 +277,105 @@ class SeedingTest(TestCase):
         self.assertEqual(Question.objects.count(), n_criteria)
         self.assertEqual(CallToMove.objects.count(), 3)
         self.assertEqual(KnowledgeSnack.objects.count(), 3)
+
+
+class ModeltranslationFallbackTest(TestCase):
+    """
+    Tests Behaviour of Modeltranslation when no translation is given
+    Also tests Default Language
+    """
+
+    def setUp(self):
+        """
+        Creates a Question and fills the german Translation
+        """
+        self.criterion = Criterion(name="test")
+        self.question = Question(text="", criterion=self.criterion)
+        self.criterion.save()
+        self.question.save()
+
+    def test_default_language(self):
+        """
+        Checks whether the Default Language is German
+        """
+        cur_language = get_language()
+        self.assertEqual(cur_language, "de")
+
+    def test_vallback_value(self):
+        """
+        Checks whether if no Translation is set, the Fallbackvalue is used
+        """
+        self.assertEqual(self.question.text, ("No Translation for this Field",))
+
+
+class Modeltranslation_One_Language_Test(TestCase):
+    """
+    Tests Behaviour when only one language is defined
+    """
+
+    def setUp(self):
+        """
+        Creates a Question and fills the german Translation
+        """
+        self.criterion = Criterion(name="test")
+        self.question = Question(text="", criterion=self.criterion)
+
+        self.question.text = "de_text"
+
+        self.criterion.save()
+        self.question.save()
+
+    def test_german_translation(self):
+        """
+        Check whether obj.text returns the German Translation
+        """
+        self.assertEqual(self.question.text, "de_text")
+
+    def test_fallback_value_translations(self):
+        """
+        English Translation is not filled out, check whether german text is returned
+        """
+
+        activate("en")
+        self.assertNotEqual(self.question.text, self.question.text_en)
+        self.assertEqual(self.question.text, self.question.text_de)
+
+
+class Modeltranslation_Two_Languages_Test(TestCase):
+    """
+    Tests Behaviour when two languages are defined
+    """
+
+    def setUp(self):
+        """
+        Creates a Question and fills both the german and english Translations
+        """
+        self.criterion = Criterion(name="test")
+        self.question = Question(text="", criterion=self.criterion)
+
+        activate("de")
+        self.question.text = "de_text"
+        activate("en")
+        self.question.text = "en_text"
+        activate("de")
+
+        self.criterion.save()
+        self.question.save()
+
+    def test_german_translation(self):
+        """
+        Tests whether German Translation is returned
+        """
+        activate("de")
+
+        self.assertEqual(self.question.text, self.question.text_de)
+        self.assertNotEqual(self.question.text, self.question.text_en)
+
+    def test_english_translation(self):
+        """
+        Tests whether English Translation is returned
+        """
+        activate("en")
+
+        self.assertEqual(self.question.text, self.question.text_en)
+        self.assertNotEqual(self.question.text, self.question.text_de)
-- 
GitLab