summaryrefslogtreecommitdiffstats
path: root/core/TESTS/test_caves.py
diff options
context:
space:
mode:
authorPhilip Sargent <philip.sargent@gmail.com>2023-03-12 16:21:31 +0000
committerPhilip Sargent <philip.sargent@gmail.com>2023-03-12 16:21:31 +0000
commit45fcaac47d2fefd5ab764c1be88a896a2ac6be9a (patch)
treec234b686f34015e633b8a43b0ea3b0cbed3f665e /core/TESTS/test_caves.py
parent35e9eb558d0ef7fb34d8ed7140a684cdce0998cf (diff)
downloadtroggle-45fcaac47d2fefd5ab764c1be88a896a2ac6be9a.tar.gz
troggle-45fcaac47d2fefd5ab764c1be88a896a2ac6be9a.tar.bz2
troggle-45fcaac47d2fefd5ab764c1be88a896a2ac6be9a.zip
test revers() function
Diffstat (limited to 'core/TESTS/test_caves.py')
-rw-r--r--core/TESTS/test_caves.py177
1 files changed, 177 insertions, 0 deletions
diff --git a/core/TESTS/test_caves.py b/core/TESTS/test_caves.py
new file mode 100644
index 0000000..baa4ffa
--- /dev/null
+++ b/core/TESTS/test_caves.py
@@ -0,0 +1,177 @@
+"""
+Modified for Expo April 2021.
+"""
+
+import re
+from http import HTTPStatus
+
+from django.test import Client, TestCase
+
+from troggle.core.models.caves import Area, Cave
+from troggle.core.models.troggle import Person, PersonExpedition
+
+
+class FixtureTests(TestCase):
+ """These just hit the database.
+ They do not exercise the GET and url functions
+ """
+
+ fixtures = ["auth_users", "expo_areas", "expo_caves", "expo_exped"]
+ ph = r"and leads in 800m of tortuous going to"
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def test_fix_person_loaded(self):
+ p = Person.objects.get(fullname="Michael Sargent")
+ self.assertEqual(str(p.first_name), "Michael")
+
+ def test_fix_person_loaded(self):
+ pe = PersonExpedition.objects.get(pk="681")
+ self.assertEqual(str(pe.person.fullname), "Michael Sargent")
+ self.assertEqual(str(pe.expedition.year), "2019")
+
+ def test_fix_area_loaded(self):
+ a = Area.objects.get(short_name="1623")
+ self.assertEqual(str(a.short_name), "1623")
+
+ def test_fix_cave_loaded115(self):
+ c = Cave.objects.get(kataster_number="115")
+ self.assertEqual(str(c.description_file), "1623/115.htm")
+ self.assertEqual(str(c.url), "1623/115.url") # intentional
+ self.assertEqual(str(c.filename), "1623-115.html")
+
+ # c.area is a 'ManyRelatedManager' object and not iterable
+ # self.assertEqual(str(c.[0].short_name), "1623")
+
+ ph = self.ph
+ phmatch = re.search(ph, c.underground_description)
+ self.assertIsNotNone(phmatch, "In fixture-loaded cave, failed to find expected text: '" + ph + "'")
+
+ def test_fix_cave_loaded284(self):
+ c = Cave.objects.get(kataster_number="284")
+ self.assertEqual(str(c.description_file), "")
+ self.assertEqual(str(c.url), "1623/284/284.html")
+ self.assertEqual(str(c.filename), "1623-284.html")
+
+ ph = r"at a depth of 72m, there are large round blocks"
+ phmatch = re.search(ph, c.notes)
+ self.assertIsNotNone(phmatch, "In fixture-loaded cave, failed to find expected text: '" + ph + "'")
+
+ def test_page_personexpedition(self):
+ response = self.client.get("/personexpedition/MichaelSargent/2019")
+ content = response.content.decode()
+ # with open('testresponse.html','w') as tr:
+ # tr.writelines(content)
+ self.assertEqual(response.status_code, HTTPStatus.OK)
+ for ph in [r"Michael Sargent", r"Table of all trips and surveys aligned by date"]:
+ phmatch = re.search(ph, content)
+ self.assertIsNotNone(phmatch, "Failed to find expected text: '" + ph + "'")
+ # Need to add a fixture so that this actually has a logbook entry and a trip/svx in it.
+
+
+class FixturePageTests(TestCase):
+ """Currently nothing that runs troggle works - all do 404. Must be something in a template rendering crash?
+ ordinary pages are OK, and expopages and expofiles are OK, even though they come through troggle.
+ """
+
+ # The fixtures have a password hash which is compatible with plain-text password 'secretword'
+ fixtures = ["auth_users", "expo_areas", "expo_caves", "expo_exped"]
+ ph = r"and leads in 800m of tortuous going to"
+
+ @classmethod
+ def setUpTestData(cls):
+ pass
+
+ def setUp(self):
+ from django.contrib.auth.models import User
+
+ self.user = User.objects.get(username="expotest")
+
+ # Every test needs a client.
+ self.client = Client()
+
+ def tearDown(self):
+ pass
+
+ def test_fix_expedition(self):
+ response = self.client.get("/expedition/2019")
+ self.assertEqual(response.status_code, HTTPStatus.OK)
+
+ ph = r"Michael Sargent"
+
+ content = response.content.decode()
+ phmatch = re.search(ph, content)
+ # with open('exped-op.html', 'w') as f:
+ # f.write(content)
+ self.assertIsNotNone(phmatch, "Failed to find expected text: '" + ph + "'")
+
+ def test_fix_personexped(self):
+ response = self.client.get("/personexpedition/MichaelSargent/2019")
+ self.assertEqual(response.status_code, HTTPStatus.OK)
+
+ ph = r"Table of all trips and surveys aligned by date"
+
+ content = response.content.decode()
+ phmatch = re.search(ph, content)
+ # with open('persexped-op.html', 'w') as f:
+ # f.write(content)
+ self.assertIsNotNone(phmatch, "Failed to find expected text: '" + ph + "'")
+
+ def test_fix_person(self):
+ response = self.client.get("/person/MichaelSargent")
+ self.assertEqual(response.status_code, HTTPStatus.OK)
+
+ ph = r"second-generation expo caver "
+
+ content = response.content.decode()
+ phmatch = re.search(ph, content)
+ # with open('person-op.html', 'w') as f:
+ # f.write(content)
+ self.assertIsNotNone(phmatch, "Failed to find expected text: '" + ph + "'")
+
+ def test_fix_cave_url115(self):
+ ph = self.ph
+ response = self.client.get("/1623/115.url") # yes this is intentional, see the inserted data above & fixture
+ self.assertEqual(response.status_code, HTTPStatus.OK)
+
+ content = response.content.decode()
+ phmatch = re.search(ph, content)
+ self.assertIsNotNone(phmatch, "Failed to find expected text: '" + ph + "'")
+
+ def test_fix_cave_url284(self):
+ response = self.client.get("/1623/284/284.html")
+ self.assertEqual(response.status_code, HTTPStatus.OK)
+
+ ph = r"at a depth of 72m, there are large round blocks"
+
+ content = response.content.decode()
+ phmatch = re.search(ph, content)
+ # with open('cave-op.html', 'w') as f:
+ # f.write(content)
+ self.assertIsNotNone(phmatch, "Failed to find expected text: '" + ph + "'")
+
+ def test_fix_cave_bare_url115(self):
+ """Expect to get Page Not Found and status 404"""
+ ph = self.ph
+ ph = "Probably a mistake."
+ response = self.client.get("/1623/115")
+ self.assertEqual(response.status_code, HTTPStatus.NOT_FOUND)
+
+ content = response.content.decode()
+ phmatch = re.search(ph, content)
+ self.assertIsNotNone(phmatch, "Failed to find expected text: '" + ph + "'") # 200 & Page Not Found
+
+ def test_fix_cave_slug115(self):
+ """Expect to get Page Not Found and status 404"""
+ ph = self.ph
+ ph = "Probably a mistake."
+ response = self.client.get("/1623-115")
+ self.assertEqual(response.status_code, HTTPStatus.NOT_FOUND)
+
+ content = response.content.decode()
+ phmatch = re.search(ph, content)
+ self.assertIsNotNone(phmatch, "Failed to find expected text: '" + ph + "'") # 200 & Page Not Found