diff options
author | Philip Sargent <philip.sargent@gmail.com> | 2023-03-12 16:21:31 +0000 |
---|---|---|
committer | Philip Sargent <philip.sargent@gmail.com> | 2023-03-12 16:21:31 +0000 |
commit | 45fcaac47d2fefd5ab764c1be88a896a2ac6be9a (patch) | |
tree | c234b686f34015e633b8a43b0ea3b0cbed3f665e /core/TESTS/test_caves.py | |
parent | 35e9eb558d0ef7fb34d8ed7140a684cdce0998cf (diff) | |
download | troggle-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.py | 177 |
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 |