From ae89a707ece67bc89eb165d86aaf46e55411eb3f Mon Sep 17 00:00:00 2001
From: Philip Sargent <philip.sargent@klebos.com>
Date: Wed, 3 Jun 2020 21:57:05 +0100
Subject: [PATCH] Unit tests outline implemented

---
 core/TESTS/__init__.py |  0
 core/TESTS/tests.py    | 62 ++++++++++++++++++++++++++++++++++++++++++
 databaseReset.py       | 17 ++++++++----
 flatpages/tests.py     | 23 ----------------
 4 files changed, 73 insertions(+), 29 deletions(-)
 create mode 100644 core/TESTS/__init__.py
 create mode 100644 core/TESTS/tests.py
 delete mode 100644 flatpages/tests.py

diff --git a/core/TESTS/__init__.py b/core/TESTS/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/core/TESTS/tests.py b/core/TESTS/tests.py
new file mode 100644
index 0000000..aa92210
--- /dev/null
+++ b/core/TESTS/tests.py
@@ -0,0 +1,62 @@
+"""
+This file demonstrates two different styles of tests (one doctest and one
+unittest). These will both pass when you run "manage.py test".
+
+Replace these with more appropriate tests for your application.
+
+https://docs.python.org/3.8/library/doctest.html
+
+https://docs.djangoproject.com/en/3.0/topics/testing/tools/
+"""
+
+from django.test import TestCase, SimpleTestCase
+
+class SimpleTest(SimpleTestCase):
+    def test_basic_addition(self):
+        """
+        Tests that 1 + 1 always equals 2.
+        """
+        self.assertEqual(1 + 1, 2)
+    def test_import_TroggleModel(self):
+        from troggle.core.models import TroggleModel
+    def test_import_Cave(self):
+        from troggle.core.models_caves import Cave
+    def test_import_parsers_surveys(self):
+        from PIL import Image
+        from utils import save_carefully
+        from functools import reduce
+    def test_import_parsers_survex(self):
+        import troggle.settings as settings
+        import troggle.core.models as models
+        import troggle.core.models_caves as models_caves
+        import troggle.core.models_survex as models_survex
+        from troggle.parsers.people import GetPersonExpeditionNameLookup
+        from troggle.core.views_caves import MapLocations
+    def test_import_parsers_QMs(self):
+        from troggle.core.models_caves import QM, Cave, LogbookEntry
+        from utils import save_carefully
+    def test_import_parsers_people(self):
+        from html.parser import HTMLParser
+        from unidecode import unidecode
+    def test_import_parsers_logbooks(self):
+        from django.template.defaultfilters import slugify
+        from django.utils.timezone import get_current_timezone, make_aware
+        from troggle.core.models import DataIssue, Expedition
+        from troggle.core.models_caves import Cave, OtherCaveName, getCaveByReference, LogbookEntry, PersonTrip
+        from parsers.people import GetPersonExpeditionNameLookup
+    def test_import_core_views_caves(self):
+        from django.http import HttpResponse, HttpResponseRedirect
+        from django.shortcuts import get_object_or_404, render
+        from troggle.core.models import Expedition
+        from troggle.core.models_caves import CaveSlug, Cave, CaveAndEntrance, Survey, QM, CaveDescription, EntranceSlug, Entrance, Area, SurvexStation
+        from troggle.core.forms import CaveForm, CaveAndEntranceFormSet, VersionControlCommentForm, EntranceForm, EntranceLetterForm
+        from troggle.helper import login_required_if_public
+
+
+__test__ = {"doctest": """
+Another way to test that 1 + 1 is equal to 2.
+
+>>> 1 + 1 == 2
+True
+"""}
+
diff --git a/databaseReset.py b/databaseReset.py
index 31ea102..2319827 100644
--- a/databaseReset.py
+++ b/databaseReset.py
@@ -32,6 +32,9 @@ expouser=settings.EXPOUSER
 expouserpass=settings.EXPOUSERPASS
 expouseremail=settings.EXPOUSER_EMAIL
 
+def call_django_tests(n):
+    management.call_command('test', verbosity=n)
+
 def reinit_db():
     """Rebuild database from scratch. Deletes the file first if sqlite is used,
     otherwise it drops the database and creates it.
@@ -89,6 +92,11 @@ def import_QMs():
     print("Importing QMs (old caves)")
     import troggle.parsers.QMs
     # import process itself runs on qm.csv in only 3 old caves, not the modern ones!
+
+def import_surveyscans():
+    import troggle.parsers.surveys
+    print("Importing Survey Scans")
+    troggle.parsers.surveys.LoadListScans()
     
 def import_survexblks():
     import troggle.parsers.survex
@@ -108,11 +116,6 @@ def import_surveyimgs():
     print("NOT Importing survey images")
     #troggle.parsers.surveys.parseSurveys(logfile=settings.LOGFILE)
 
-def import_surveyscans():
-    import troggle.parsers.surveys
-    print("Importing Survey Scans")
-    troggle.parsers.surveys.LoadListScans()
-
 def import_tunnelfiles():
     import troggle.parsers.surveys
     print("Importing Tunnel files")
@@ -415,13 +418,15 @@ if __name__ == "__main__":
         runlabel = sys.argv[len(sys.argv)-1]
     else: 
         runlabel=None
-        
+
+    call_django_tests(1)
     jq = JobQueue(runlabel)
     
     if len(sys.argv)==1:
         usage()
         exit()
     elif "test" in sys.argv:
+        call_django_tests(2)
         jq.enq("caves",import_caves)
         jq.enq("people",import_people)
     elif "caves" in sys.argv:
diff --git a/flatpages/tests.py b/flatpages/tests.py
deleted file mode 100644
index c7c4668..0000000
--- a/flatpages/tests.py
+++ /dev/null
@@ -1,23 +0,0 @@
-"""
-This file demonstrates two different styles of tests (one doctest and one
-unittest). These will both pass when you run "manage.py test".
-
-Replace these with more appropriate tests for your application.
-"""
-
-from django.test import TestCase
-
-class SimpleTest(TestCase):
-    def test_basic_addition(self):
-        """
-        Tests that 1 + 1 always equals 2.
-        """
-        self.assertEqual(1 + 1, 2)
-
-__test__ = {"doctest": """
-Another way to test that 1 + 1 is equal to 2.
-
->>> 1 + 1 == 2
-True
-"""}
-