Skip to content

Commit

Permalink
update test for created SPARQL INSERT queries
Browse files Browse the repository at this point in the history
  • Loading branch information
heinpa committed Apr 16, 2024
1 parent 7b21f3a commit be710bc
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 18 deletions.
4 changes: 3 additions & 1 deletion qanary-component-MT-Python-MBart/pytest.ini
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
[pytest]
log_cli = True
log_cli = 1
log_cli_level = INFO
log_cli_format = %(asctime)s [%(levelname)8s] [%(filename)s:%(lineno)s] %(message)s
log_cli_date_format=%Y-%m-%d %H:%M:%S
env =
SERVER_PORT=40120
SPRING_BOOT_ADMIN_URL=http://qanary-pipeline-host:40111
Expand Down
45 changes: 28 additions & 17 deletions qanary-component-MT-Python-MBart/tests/test_mt_mbart_nlp.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
from component.mt_mbart_nlp import *
from component import app
from unittest.mock import patch
import mock
import re
from unittest import TestCase

Expand All @@ -16,16 +15,16 @@ class TestComponent(TestCase):
out_graph = "urn:qanary#test-outGraph"

source_language = "de"
question_translation = "what is a test?"
target_language = "en"

request_data = '''{
"values": {
"urn:qanary#endpoint": "urn:qanary#test-endpoint",
"urn:qanary#inGraph": "urn:qanary#test-inGraph",
"urn:qanary#endpoint": "urn:qanary#test-endpoint",
"urn:qanary#inGraph": "urn:qanary#test-inGraph",
"urn:qanary#outGraph": "urn:qanary#test-outGraph"
},
"endpoint": "urn:qanary#test-endpoint",
"inGraph": "urn:qanary#test-inGraph",
"endpoint": "urn:qanary#test-endpoint",
"inGraph": "urn:qanary#test-inGraph",
"outGrpah": "urn:qanary#test-outGraph"
}'''

Expand All @@ -47,20 +46,32 @@ def test_qanary_service(self):
# when a call to /annotatequestion is made
response_json = client.post("/annotatequestion", headers = self.headers, data = self.request_data)

# then
# the text question is retrieved from the triplestore
# then the text question is retrieved from the triplestore
mocked_get_text_question_in_graph.assert_called_with(triplestore_endpoint=self.endpoint, graph=self.in_graph)

# new information is pushed to the triplestore
mocked_insert_into_triplestore.assert_called()
# get arguments of the (2) separate insert calls
arg_list = mocked_insert_into_triplestore.call_args_list
# get the call arguments for question translation
call_args_translation = [a.args for a in arg_list if "AnnotationOfQuestionTranslation" in a.args[1]]
assert len(call_args_translation) == 1
# get the call arguments for question language
call_args_language = [a.args for a in arg_list if "AnnotationOfQuestionLanguage" in a.args[1]]
assert len(call_args_language) == 1

args = mocked_insert_into_triplestore.call_args.args
query_stored = re.sub(r"(\\n\W*|\n\W*)", " ", args[1])
# clean query strings
query_translation = re.sub(r"(\\n\W*|\n\W*)", " ", call_args_translation[0][1])
query_language = re.sub(r"(\\n\W*|\n\W*)", " ", call_args_language[0][1])

# the source language is correctly identified and annotated
self.assertRegex(query_stored, r".*AnnotationOfQuestionLanguage(.*;\W?)*oa:hasBody \""+self.source_language+r"\".*\.")
# the question is translated and the result is annotated
assert self.question_translation in query_stored.lower()
# then the triplestore is updated twice
# (question language and translation)
assert mocked_insert_into_triplestore.call_count == 2

# the response is not empty
# then the source language is correctly identified and annotated
self.assertRegex(query_language, r".*AnnotationOfQuestionLanguage(.*;\W?)*oa:hasBody \""+self.source_language+r"\".*\.")

# then the question is translated and the result is annotated
self.assertRegex(query_translation, r".*AnnotationOfQuestionTranslation(.*;\W?)*oa:hasBody \".*\"@" + self.target_language + r".*\.")
assert "@"+self.target_language in query_translation.lower()

# then the response is not empty
assert response_json != None

0 comments on commit be710bc

Please sign in to comment.