Skip to content

Commit 1e90f10

Browse files
Add tests around Compare/Reference page visit logging
1 parent d38c2f4 commit 1e90f10

File tree

2 files changed

+78
-4
lines changed

2 files changed

+78
-4
lines changed

web/tests/test_views.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
from django.test import TestCase
55
from django.urls import reverse
6+
from web.models import LookupData
67

78

89
class TestViews(TestCase):
@@ -301,4 +302,58 @@ def test_concepts_view_legacy_params(self):
301302
self.assertEqual(response.status_code, HTTPStatus.OK)
302303
self.assertTemplateUsed(response, 'concepts.html')
303304

305+
def test_concepts_view_logging(self):
306+
"""test if the concepts view correctly logs to the database"""
307+
# test single language
308+
url = reverse('index') + '?concept=data_types&lang=python%3B3'
309+
self.client.get(url)
310+
lookup = LookupData.objects.last()
311+
self.assertEqual(lookup.language1, 'python')
312+
self.assertEqual(lookup.version1, '3')
313+
self.assertEqual(lookup.language2, '')
314+
self.assertEqual(lookup.version2, '')
315+
self.assertEqual(lookup.structure, 'data_types')
316+
317+
# test two languages
318+
url = reverse('index') + '?concept=data_types&lang=python%3B3&lang=javascript%3BECMAScript%202023'
319+
self.client.get(url)
320+
lookup = LookupData.objects.last()
321+
self.assertEqual(lookup.language1, 'python')
322+
self.assertEqual(lookup.version1, '3')
323+
self.assertEqual(lookup.language2, 'javascript')
324+
self.assertEqual(lookup.version2, 'ECMAScript 2023')
325+
self.assertEqual(lookup.structure, 'data_types')
326+
327+
def test_api_logging(self):
328+
"""test if the API calls correctly log to the database"""
329+
# test api_reference
330+
url = reverse('api.reference', kwargs={
331+
'structure_key': 'data_types',
332+
'lang': 'python',
333+
'version': '3'
334+
})
335+
self.client.get(url)
336+
lookup = LookupData.objects.last()
337+
self.assertEqual(lookup.language1, 'python')
338+
self.assertEqual(lookup.version1, '3')
339+
self.assertEqual(lookup.language2, '')
340+
self.assertEqual(lookup.version2, '')
341+
self.assertEqual(lookup.structure, 'data_types')
342+
343+
# test api_compare
344+
url = reverse('api.compare', kwargs={
345+
'structure_key': 'data_types',
346+
'lang1': 'python',
347+
'version1': '3',
348+
'lang2': 'javascript',
349+
'version2': 'ECMAScript 2009'
350+
})
351+
self.client.get(url)
352+
lookup = LookupData.objects.last()
353+
self.assertEqual(lookup.language1, 'python')
354+
self.assertEqual(lookup.version1, '3')
355+
self.assertEqual(lookup.language2, 'javascript')
356+
self.assertEqual(lookup.version2, 'ECMAScript 2009')
357+
self.assertEqual(lookup.structure, 'data_types')
358+
304359

web/views.py

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -432,18 +432,27 @@ def api_reference(request, structure_key, lang, version):
432432
:param version: version
433433
:return: HttpResponse filled template of concept
434434
"""
435-
store_url_info(request)
435+
visit = store_url_info(request)
436436

437-
lang = Language(lang, "")
437+
lang_obj = Language(lang, "")
438438

439439
try:
440-
response = lang.load_filled_concepts(structure_key, version)
440+
response = lang_obj.load_filled_concepts(structure_key, version)
441441
except Exception as e:
442442
return error_handler_404_not_found(request, e)
443443

444444
if response is False:
445445
return HttpResponseNotFound()
446446

447+
store_lookup_info(
448+
request,
449+
visit,
450+
lang,
451+
version,
452+
"",
453+
"",
454+
structure_key
455+
)
447456

448457
return HttpResponse(response, content_type="application/json")
449458

@@ -459,11 +468,21 @@ def api_compare(request, structure_key, lang1, version1, lang2, version2):
459468
:param version2: version 2
460469
:return: HttpResponse response
461470
"""
462-
store_url_info(request)
471+
visit = store_url_info(request)
463472

464473
response = Language(lang1, "").load_comparison(structure_key, lang2, version2, version1)
465474

466475
if response is False:
467476
return HttpResponseNotFound()
468477

478+
store_lookup_info(
479+
request,
480+
visit,
481+
lang1,
482+
version1,
483+
lang2,
484+
version2,
485+
structure_key
486+
)
487+
469488
return HttpResponse(response, content_type="application/json")

0 commit comments

Comments
 (0)