Skip to content

Commit

Permalink
Merge d9b81ae into 76e1d9e
Browse files Browse the repository at this point in the history
  • Loading branch information
Wim-De-Clercq committed Mar 14, 2023
2 parents 76e1d9e + d9b81ae commit af7f99b
Show file tree
Hide file tree
Showing 2 changed files with 94 additions and 1 deletion.
7 changes: 6 additions & 1 deletion atramhasis/renderers.py
Expand Up @@ -201,11 +201,16 @@ def language_adaptor(obj, request):


def provider_adapter(provider: VocabularyProvider, *_):
if provider.uri_generator:
uri_pattern = provider.uri_generator.pattern
else:
uri_pattern = None

data = {
'id': provider.metadata['id'],
'type': provider.__class__.__name__,
'conceptscheme_uri': provider.concept_scheme.uri,
'uri_pattern': provider.uri_generator.pattern,
'uri_pattern': uri_pattern,
'default_language': provider.metadata.get("default_language"),
'subject': provider.metadata.get("subject"),
'force_display_language': provider.metadata.get("atramhasis.force_display_language"),
Expand Down
88 changes: 88 additions & 0 deletions tests/test_renderes.py
@@ -1,7 +1,11 @@
import unittest
from unittest.mock import MagicMock
from unittest.mock import Mock

from pyramid import testing
from skosprovider.providers import VocabularyProvider
from skosprovider.registry import Registry
from skosprovider_getty.providers import AATProvider
from skosprovider_sqlalchemy.models import Collection
from skosprovider_sqlalchemy.models import Concept
from skosprovider_sqlalchemy.models import ConceptScheme
Expand All @@ -11,7 +15,9 @@
from skosprovider_sqlalchemy.models import MatchType
from skosprovider_sqlalchemy.models import Note
from skosprovider_sqlalchemy.models import Source
from skosprovider_sqlalchemy.providers import SQLAlchemyProvider

from atramhasis import renderers
from fixtures.data import trees


Expand Down Expand Up @@ -208,3 +214,85 @@ def test_conceptscheme_language_handling(self):
self.request.locale_name = 'en'
conceptscheme = conceptscheme_adapter(c, self.request)
self.assertIn(conceptscheme['label'], ['other label', 'and some other label'])

def test_provider_adapter(self):
provider = VocabularyProvider(
metadata={
'id': 'provider-id',
'default_language': 'nl-be',
'subject': 'sub',
'atramhasis.force_display_language': 'force-nl'
}
)
result = renderers.provider_adapter(provider)
self.assertEqual(
{
'conceptscheme_uri': 'urn:x-skosprovider:provider-id',
'default_language': 'nl-be',
'force_display_language': 'force-nl',
'id': 'provider-id',
'subject': 'sub',
'type': 'VocabularyProvider',
'uri_pattern': 'urn:x-skosprovider:%s:%s'
},
result
)

def test_provider_adapter_aat_provider(self):
provider = AATProvider(
metadata={
'id': 'provider-id',
'default_language': 'nl-be',
'subject': 'sub',
'atramhasis.force_display_language': 'force-nl'
}
)
result = renderers.provider_adapter(provider)
self.assertEqual(
{
'conceptscheme_uri': 'http://vocab.getty.edu/aat/',
'default_language': 'nl-be',
'force_display_language': 'force-nl',
'id': 'provider-id',
'subject': 'sub',
'type': 'AATProvider',
'uri_pattern': None
},
result
)

def test_provider_adapter_sqlalchemy_provider(self):
sessionmaker = Mock()
session = sessionmaker()
session.get.return_value = ConceptScheme(
id=1,
uri='urn:x-skosprovider:trees',
labels=[
Label('Verschillende soorten bomen', 'prefLabel', 'nl'),
Label('Different types of trees', 'prefLabel', 'en')
]
)
provider = SQLAlchemyProvider(
metadata={
'id': 'provider-id',
'default_language': 'nl-be',
'subject': 'sub',
'atramhasis.force_display_language': 'force-nl',
'conceptscheme_id': 1,
},
session=sessionmaker,
)
result = renderers.sa_provider_adapter(provider)
self.assertEqual(
{
'conceptscheme_uri': 'urn:x-skosprovider:trees',
'default_language': 'nl-be',
'force_display_language': 'force-nl',
'id': 'provider-id',
'id_generation_strategy': 'NUMERIC',
'subject': 'sub',
'type': 'SQLAlchemyProvider',
'uri_pattern': 'urn:x-skosprovider:%s:%s'
},
result
)

0 comments on commit af7f99b

Please sign in to comment.