Source code for src.tests.decision

import unittest

from ..data_models import Decision


[docs] class DecisionTests(unittest.TestCase):
[docs] def setUp(self): from ..data_models import Annotation, Taxonomy, Label, User, Model, Article from ..sparql import RequestHandler from ..config import Config from ..utils import LoggingBase self.config = Config() self.logger = LoggingBase(self.config.logging).logger self.request_handler = RequestHandler(config=self.config, logger=self.logger) # Existing decision to verify loading self.user_decision = Decision( config=self.config.data_models, logger=self.logger, uri=r"https://data.gent.be/id/besluiten/69.6969.6969.6969", annotations=Annotation( date=1, config=self.config.data_models, logger=self.logger, taxonomy=Taxonomy( config=self.config.data_models, logger=self.logger, uri="<http://stad.gent/id/concepts/gent_words>" ), labels=[ Label( config=self.config.data_models, logger=self.logger, taxonomy_node_uri="<https://stad.gent/id/concepts/gent_words/3>" ), Label( config=self.config.data_models, logger=self.logger, taxonomy_node_uri="<https://stad.gent/id/concepts/gent_words/148>" ) ], user=User( config=self.config.data_models, logger=self.logger, username="ruben", email="ruben@ml2grow.cloud") ), articles=[ Article( config=self.config.data_models, logger=self.logger, uri="", number=1, content="Eerste article" ) ] ) self.model_decision = Decision( config=self.config.data_models, logger=self.logger, annotations=Annotation( date=1, config=self.config.data_models, logger=self.logger, taxonomy=Taxonomy( self.config.data_models, logger=self.logger, uri="<http://stad.gent/id/concepts/gent_words>" ), labels=[ Label( self.config.data_models, logger=self.logger, taxonomy_node_uri="<https://stad.gent/id/concepts/gent_words/3>", score=0.71 ), Label( self.config.data_models, logger=self.logger, taxonomy_node_uri="<https://stad.gent/id/concepts/gent_words/148>", score=0.55 ) ], model=Model( self.config.data_models, logger=self.logger, name="test_model_name", mlflow_reference="http://mlflow.probe.ml2grow.cloud/models/test_model_name", category="zero-shot-model", registered_model="test_model_name" ), ), uri=r"https://data.gent.be/id/besluiten/69.6969.6969.6969" )
[docs] def test_from_sparql_not_exists(self): decision = Decision.from_sparql( config=self.config.data_models, logger=self.logger, request_handler=self.request_handler, decision_uri="random_uri" ) self.assertEqual(decision, None)
[docs] def test_from_sparql_exists(self): self.decision = Decision.from_sparql( config=self.config.data_models, logger=self.logger, request_handler=self.request_handler, decision_uri="https://data.gent.be/id/besluiten/22.1123.3459.5994" ) self.assertTrue(isinstance(self.decision, Decision))
[docs] def test_decision_has_annotations(self): self.assertTrue(self.user_decision.annotations is not []) self.assertTrue(self.model_decision.annotations is not [])
[docs] def test_insert_query_model(self): correct_query: str = "PREFIX ext: <http://mu.semte.ch/vocabularies/ext/> INSERT DATA { GRAPH " \ "<http://mu.semte.ch/application/probe/model-annotations> { " \ "<https://data.gent.be/id/besluiten/69.6969.6969.6969> ext:hasAnnotation " \ "<https://lblod.data.gift/concepts/ml2grow/annotations/test> . " \ "<https://lblod.data.gift/concepts/ml2grow/annotations/test> ext:withTaxonomy " \ "<http://stad.gent/id/concepts/gent_words> . " \ "<https://lblod.data.gift/concepts/ml2grow/annotations/test> ext:creationDate 1 . " \ "<https://lblod.data.gift/concepts/ml2grow/annotations/test> ext:hasLabel " \ "<https://lblod.data.gift/concepts/ml2grow/label/test>, " \ "<https://lblod.data.gift/concepts/ml2grow/label/test> . " \ "<https://lblod.data.gift/concepts/ml2grow/annotations/test> ext:withModel " \ "<https://lblod.data.gift/concepts/ml2grow/model/test> . " \ "<https://lblod.data.gift/concepts/ml2grow/label/test> ext:isTaxonomy " \ "<https://stad.gent/id/concepts/gent_words/3> . " \ "<https://lblod.data.gift/concepts/ml2grow/label/test> ext:hasScore 0.71. " \ "<https://lblod.data.gift/concepts/ml2grow/label/test> ext:isTaxonomy " \ "<https://stad.gent/id/concepts/gent_words/148> . " \ "<https://lblod.data.gift/concepts/ml2grow/label/test> ext:hasScore 0.55. } }" query = self.model_decision.insert_query generated_query = (" ".join([q.lstrip().rstrip() for q in query.split("\n") if not q.lstrip().rstrip() == ""])) self.assertEqual(correct_query, generated_query)
[docs] def test_insert_query_user(self): correct_query: str = "PREFIX ext: <http://mu.semte.ch/vocabularies/ext/> INSERT DATA { GRAPH " \ "<http://mu.semte.ch/application/probe/user-annotations> { " \ "<https://data.gent.be/id/besluiten/69.6969.6969.6969> ext:hasAnnotation " \ "<https://lblod.data.gift/concepts/ml2grow/annotations/test> . " \ "<https://lblod.data.gift/concepts/ml2grow/annotations/test> ext:withTaxonomy " \ "<http://stad.gent/id/concepts/gent_words> . " \ "<https://lblod.data.gift/concepts/ml2grow/annotations/test> ext:creationDate 1 . " \ "<https://lblod.data.gift/concepts/ml2grow/annotations/test> ext:hasLabel " \ "<https://lblod.data.gift/concepts/ml2grow/label/test>, " \ "<https://lblod.data.gift/concepts/ml2grow/label/test> . " \ "<https://lblod.data.gift/concepts/ml2grow/annotations/test> ext:withUser " \ "<https://classifications.ghent.com/ml2grow/user/test> . " \ "<https://lblod.data.gift/concepts/ml2grow/label/test> ext:isTaxonomy " \ "<https://stad.gent/id/concepts/gent_words/3> . " \ "<https://lblod.data.gift/concepts/ml2grow/label/test> ext:hasScore 1.0. " \ "<https://lblod.data.gift/concepts/ml2grow/label/test> ext:isTaxonomy " \ "<https://stad.gent/id/concepts/gent_words/148> . " \ "<https://lblod.data.gift/concepts/ml2grow/label/test> ext:hasScore 1.0. } }" query = self.user_decision.insert_query generated_query = (" ".join([q.lstrip().rstrip() for q in query.split("\n") if not q.lstrip().rstrip() == ""])) self.assertEqual(correct_query, generated_query)
[docs] def test_last_human_annotation(self): from ..data_models import Annotation # TODO: add user annotations to test that aswel self.assertTrue(self.user_decision.last_human_annotation is not None, "User annotations are provided") self.assertTrue(self.model_decision.last_human_annotation is None, "Model has no user annotations")
[docs] def test_article_list_empty(self): self.assertTrue(self.model_decision.article_list is None)
[docs] def test_article_list_filled(self): self.assertEqual(self.user_decision.article_list, ["1: Eerste article"])
[docs] def test_train_record_no_decision_info(self): correct_response = { 'uri': 'https://data.gent.be/id/besluiten/69.6969.6969.6969', 'uuid': None, 'description': None, 'articles': ['1: Eerste article'], 'short_title': None, 'language': None, 'labels': [ '<https://stad.gent/id/concepts/gent_words/3>', '<https://stad.gent/id/concepts/gent_words/148>' ] } self.assertEqual(self.user_decision.train_record, correct_response)