1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
|
"""
We are using unittest for troggle.
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/
"""
import unittest
import re
from django.test import TestCase, SimpleTestCase, Client
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, 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, QM, EntranceSlug, Entrance, Area, SurvexStation
from troggle.core.forms import CaveForm, CaveAndEntranceFormSet, VersionControlCommentForm, EntranceForm, EntranceLetterForm
from troggle.helper import login_required_if_public
from django.contrib.auth.decorators import login_required
from django.conf import settings
def test_import_parses_mix(self):
from troggle.parsers.logbooks import GetCaveLookup
import troggle.settings
#import troggle.flatpages.models
import troggle.logbooksdump
import troggle.parsers.caves
import troggle.parsers.people
import troggle.parsers.surveys
import troggle.parsers.logbooks
import troggle.parsers.QMs
import troggle.parsers.survex
def test_import_imports(self):
from django.core import management
from django.db import connection, close_old_connections, connections
from django.contrib.auth.models import User
from django.http import HttpResponse
from django.urls import reverse
def test_import_urls(self):
from django.conf import settings
from django.conf.urls import url, include
from django.views.generic.base import RedirectView
from django.views.generic.edit import UpdateView
from django.views.generic.list import ListView
from django.contrib import admin
from django.urls import reverse, resolve
#class SimplePageTest(unittest.TestCase):
class PageTests(TestCase):
@classmethod
def setUpTestData(cls):
# Set up data for the whole TestCase
#cls.foo = Foo.objects.create(bar="Test")
# Some test using self.foo in tests below..
# read in some SQL ?
pass
def setUp(self):
# Every test needs a client.
self.client = Client()
def test_page_admin(self):
# Issue a GET request.
response = self.client.get('/admin/login/')
content = response.content.decode()
self.assertEqual(response.status_code, 200)
h1 = re.search(r'<h1 id="site-name">Troggle administration</h1>', content)
def test_page_admindocs(self):
# Issue a GET request.
response = self.client.get('/admin/login/models/')
content = response.content.decode()
self.assertEqual(response.status_code, 200)
h1 = re.search(r'<h1>Model documentation</h1>', content)
# database not loaded yet? Or logon-problem?
# def test_page_admindocs_exped(self):
# # Issue a GET request.
# response = self.client.get('/admin/doc/models/core.expedition/')
# content = response.content.decode()
# self.assertEqual(response.status_code, 200)
# h1 = re.search(r'<td>logbookentry_set.all</td>', content)
def test_page_folk(self):
# This page is separately generated, so it has the full data content
response = self.client.get('/folk/')
content = response.content.decode()
self.assertEqual(response.status_code, 200)
# Check that the rendered context has the correct title
phrase = re.search(r'active contribution to the expedition', content)
phrase = re.search(r'Naomi Griffiths', content)
phrase = re.search(r'Gail Smith', content)
phrase = re.search(r'Phil Wigglesworth', content)
phrase = re.search(r'A more obscure record of longest gap between expos has', content)
def test_page_expofile_document(self):
# Flat file tests.
response = self.client.get('/expofiles/documents/surveying/tunnel-loefflerCP35-only.pdf')
if response.status_code != 200:
self.assertEqual(response.status_code, 302)
if response.status_code != 302:
self.assertEqual(response.status_code, 200)
self.assertEqual(len(response.content), 2299270) # fails, but is working manually!
def test_page_expofile_writeup(self):
# Flat file tests.
response = self.client.get('/expofiles/writeups/1982/logbook1982.pdf')
if response.status_code != 200:
self.assertEqual(response.status_code, 302)
if response.status_code != 302:
self.assertEqual(response.status_code, 200)
self.assertEqual(len(response.content), 12915413) # fails, but is working manually!
def test_page_ss(self):
# this gets an empty page as the database has not been loaded
response = self.client.get('/survey_scans/')
self.assertEqual(response.status_code, 200)
# database not loaded yet:
#response = self.client.get('/survey_scans/1991surveybook/page0002.png')
#response = self.client.get('/survey_scans/1991surveybook/')
#content = response.content.decode()
#print(content)
#png93 = re.search(r'/page0093.png">page0093.png</a></td>', content)
def test_page_tunnel(self):
# this fails as the database has not been loaded so there is no Tunnel file
#response = self.client.get('/tunneldataraw/107/107sketch-v2.xml')
response = self.client.get('/tunneldataraw/')
self.assertEqual(response.status_code, 200)
__test__ = {"doctest": """
Another way to test that 1 + 1 is equal to 2.
>>> 1 + 1 == 2
True
"""}
|