Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions web/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

from django.test import TestCase
from django.urls import reverse
from web.models import LookupData


class TestViews(TestCase):
Expand Down Expand Up @@ -301,4 +302,58 @@ def test_concepts_view_legacy_params(self):
self.assertEqual(response.status_code, HTTPStatus.OK)
self.assertTemplateUsed(response, 'concepts.html')

def test_concepts_view_logging(self):
"""test if the concepts view correctly logs to the database"""
# test single language
url = reverse('index') + '?concept=data_types&lang=python%3B3'
self.client.get(url)
lookup = LookupData.objects.last()
self.assertEqual(lookup.language1, 'python')
self.assertEqual(lookup.version1, '3')
self.assertEqual(lookup.language2, '')
self.assertEqual(lookup.version2, '')
self.assertEqual(lookup.structure, 'data_types')

# test two languages
url = reverse('index') + '?concept=data_types&lang=python%3B3&lang=javascript%3BECMAScript%202023'
self.client.get(url)
lookup = LookupData.objects.last()
self.assertEqual(lookup.language1, 'python')
self.assertEqual(lookup.version1, '3')
self.assertEqual(lookup.language2, 'javascript')
self.assertEqual(lookup.version2, 'ECMAScript 2023')
self.assertEqual(lookup.structure, 'data_types')

def test_api_logging(self):
"""test if the API calls correctly log to the database"""
# test api_reference
url = reverse('api.reference', kwargs={
'structure_key': 'data_types',
'lang': 'python',
'version': '3'
})
self.client.get(url)
lookup = LookupData.objects.last()
self.assertEqual(lookup.language1, 'python')
self.assertEqual(lookup.version1, '3')
self.assertEqual(lookup.language2, '')
self.assertEqual(lookup.version2, '')
self.assertEqual(lookup.structure, 'data_types')

# test api_compare
url = reverse('api.compare', kwargs={
'structure_key': 'data_types',
'lang1': 'python',
'version1': '3',
'lang2': 'javascript',
'version2': 'ECMAScript 2009'
})
self.client.get(url)
lookup = LookupData.objects.last()
self.assertEqual(lookup.language1, 'python')
self.assertEqual(lookup.version1, '3')
self.assertEqual(lookup.language2, 'javascript')
self.assertEqual(lookup.version2, 'ECMAScript 2009')
self.assertEqual(lookup.structure, 'data_types')


27 changes: 23 additions & 4 deletions web/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -432,18 +432,27 @@ def api_reference(request, structure_key, lang, version):
:param version: version
:return: HttpResponse filled template of concept
"""
store_url_info(request)
visit = store_url_info(request)

lang = Language(lang, "")
lang_obj = Language(lang, "")

try:
response = lang.load_filled_concepts(structure_key, version)
response = lang_obj.load_filled_concepts(structure_key, version)
except Exception as e:
return error_handler_404_not_found(request, e)

if response is False:
return HttpResponseNotFound()

store_lookup_info(
request,
visit,
lang,
version,
"",
"",
structure_key
)

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

Expand All @@ -459,11 +468,21 @@ def api_compare(request, structure_key, lang1, version1, lang2, version2):
:param version2: version 2
:return: HttpResponse response
"""
store_url_info(request)
visit = store_url_info(request)

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

if response is False:
return HttpResponseNotFound()

store_lookup_info(
request,
visit,
lang1,
version1,
lang2,
version2,
structure_key
)

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