diff --git a/core/TESTS/test_parsers.py b/core/TESTS/test_parsers.py
index 9a77080..218e4fd 100644
--- a/core/TESTS/test_parsers.py
+++ b/core/TESTS/test_parsers.py
@@ -31,6 +31,8 @@ TEST_YEAR = "1986"
lbp.ENTRIES[TEST_YEAR] = 4 # number of entries in the test logbook
class ImportTest(TestCase):
+ # see test_logins.py for the tests to check that logged-in users work
+ fixtures = ["auth_users"] # contains user 'expotest' with a hash => password = 'secretword'
@classmethod
def setUpTestData(cls):
@@ -64,9 +66,13 @@ class ImportTest(TestCase):
dave = make_person("David", "Smartarse", "")
mike = make_person("Michael", "Wideboy", "WB", vfho=True)
# NOT created Kurt, as the whole point is that he is a guest.
-
- def setUp(self):
- pass
+
+ def setUp(self):
+ from django.contrib.auth.models import User
+
+ self.user = User.objects.get(username="expotest") # has password 'secretword' from fixture
+ self.client = Client()
+
def tearDown(self):
pass
@@ -75,7 +81,9 @@ class ImportTest(TestCase):
self.assertTrue(self.test_logbook.is_file())
def test_logbook_parse(self):
- lbp.LoadLogbook(self.test_expo)
+ """This is just testing the db not the web page
+ """
+ lbp.LoadLogbook(self.test_expo) # i.e. load the 1986 logbook
issues = DataIssue.objects.all()
messages = []
@@ -97,28 +105,73 @@ class ImportTest(TestCase):
with open('_test_response.txt', 'w') as f:
for m in messages:
f.write(m)
+ messages_text = ", ".join(messages)
for e in expected:
- self.assertIn(e, messages)
+ phmatch = re.search(e, messages_text)
+ self.assertIsNotNone(phmatch, f"Failed to find expected text: '{e}' in\n{messages_text}")
for e in not_expected:
- self.assertNotIn(e, messages)
+ phmatch = re.search(e, messages_text)
+ self.assertIsNone(phmatch, f"Found unexpected text: '{e}' in\n{messages_text}")
def test_lbe(self):
- lbp.LoadLogbook(self.test_expo)
+ lbp.LoadLogbook(self.test_expo) # i.e. load the 1986 logbook, which has this logbook entry
- response = self.client.get(f"/logbookentry/1986-07-27/1986-07-27b")
+ response = self.client.get(f"/logbookentry/1986-07-27/1986-07-27a")
self.assertEqual(response.status_code, HTTPStatus.OK)
content = response.content.decode()
- with open('_test_response.html', 'w') as f:
- f.write(content)
+ # with open('_test_response.html', 'w') as f:
+ # f.write(content)
expected = [
- "Logbook CUCC expo-test 1986 123 - 123 Wave 1",
+ "
Logbook CUCC expo-test 1986 123 - 123 Wave 1",
"Smartarse rig first section of new pitches. Second wave arrives and takes over rigging.",
]
for ph in expected:
phmatch = re.search(ph, content)
self.assertIsNotNone(phmatch, "Failed to find expected text: '" + ph + "'")
-
+
+ def test_lbe_new(self):
+ """This page requires the user to be logged in first, hence the extra shenanigans
+ """
+ c = self.client
+ u = self.user
+ c.login(username=u.username, password="secretword")
+
+ response = self.client.get(f"/logbookedit/")
+ self.assertEqual(response.status_code, HTTPStatus.OK)
+ content = response.content.decode()
+ with open('_test_response.html', 'w') as f:
+ f.write(content)
+ expected = [
+ "New Logbook Entry in ",
+ "Other names (comma separated)",
+ "Place: cave name, or 'plateau', 'topcamp' etc.",
+ ]
+ for ph in expected:
+ phmatch = re.search(ph, content)
+ self.assertIsNotNone(phmatch, f"({response.status_code}) Failed to find expected text: '" + ph + "'")
+
+
+ def test_lbe_edit(self):
+ c = self.client
+ u = self.user
+ c.login(username=u.username, password="secretword")
+
+ response = self.client.get(f"/logbookedit/1986-07-27a")
+ self.assertEqual(response.status_code, HTTPStatus.OK)
+ content = response.content.decode()
+ with open('_test_response_edit.html', 'w') as f:
+ f.write(content)
+ expected = [
+ "Edit Logbook Entry on 1986-07-27",
+ "Other names (comma separated)",
+ "Place: cave name, or 'plateau', 'topcamp' etc.",
+ ]
+ for ph in expected:
+ phmatch = re.search(ph, content)
+ self.assertIsNotNone(phmatch, f"({response.status_code}) Failed to find expected text: '" + ph + "'")
+
def test_aliases(self):
+ # FIX THIS
# Problem: '' empty string appears as valid alias for David Smartarse
response = self.client.get(f"/aliases/{TEST_YEAR}")
self.assertEqual(response.status_code, HTTPStatus.OK)
diff --git a/urls.py b/urls.py
index e88df3b..f9e1b84 100644
--- a/urls.py
+++ b/urls.py
@@ -109,7 +109,7 @@ trogglepatterns = [
path('dwgupload/', dwgupload, name='dwgupload'),
path('dwguploadnogit/', dwgupload, {'gitdisable': 'yes'}, name='dwguploadnogit'), # used in testing
path('dwguploadnogit/', dwgupload, {'gitdisable': 'yes'}, name='dwguploadnogit'), # used in testing
- path('logbookedit/', logbookedit, name='logbookedit'),
+ path('logbookedit/', logbookedit, name='logbookedit'),
path('logbookedit/', logbookedit, name='logbookedit'),
# Renaming an uploaded file