Example #1
0
class TestConceptSchemeView(unittest.TestCase):
    def setUp(self):
        self.config = testing.setUp()
        self.regis = Registry()
        self.regis.register_provider(trees)
        self.request = testing.DummyRequest()
        self.request.accept = 'text/html'
        self.request.data_managers = data_managers(self.request)
        self.request.skos_registry = self.regis

    def tearDown(self):
        testing.tearDown()

    def test_conceptschemes_view(self):
        atramhasisview = AtramhasisView(self.request)
        res = atramhasisview.conceptschemes_view()
        self.assertIn('conceptschemes', res)
        self.assertEqual(len(res['conceptschemes']), 1)
        cs = res['conceptschemes'][0]
        self.assertIn('id', cs)
        self.assertIn('conceptscheme', cs)

    def test_conceptscheme_view(self):
        self.request.matchdict['scheme_id'] = 'TREES'
        atramhasisview = AtramhasisView(self.request)
        res = atramhasisview.conceptscheme_view()
        self.assertIsNotNone(res)
        self.assertIsNotNone(res['conceptscheme'])
        self.assertEqual(res['conceptscheme']['title'], 'TREES')
        self.assertEqual(res['conceptscheme']['scheme_id'], 'TREES')
        self.assertEqual(res['conceptscheme']['uri'],
                         'urn:x-skosprovider:trees')
        self.assertIsNotNone(res['conceptscheme']['labels'])
        self.assertIsNotNone(res['conceptscheme']['notes'])
        self.assertIsNotNone(res['conceptscheme']['top_concepts'])
Example #2
0
class TestConceptSchemeView(unittest.TestCase):
    def setUp(self):
        self.config = testing.setUp()
        self.regis = Registry()
        self.regis.register_provider(trees)
        self.request = testing.DummyRequest()
        self.request.db = db(self.request)
        self.request.skos_registry = self.regis

    def tearDown(self):
        testing.tearDown()

    def test_conceptschemes_view(self):
        atramhasisview = AtramhasisView(self.request)
        res = atramhasisview.conceptschemes_view()
        self.assertEqual(
            {'conceptschemes': [{
                'id': u'TREES',
                'uri': 'urn:test:test'
            }]}, res)

    def test_conceptscheme_view(self):
        self.request.matchdict['scheme_id'] = 'TREES'
        atramhasisview = AtramhasisView(self.request)
        res = atramhasisview.conceptscheme_view()
        self.assertIsNotNone(res)
        self.assertIsNotNone(res['conceptscheme'])
        self.assertEqual(res['conceptscheme']['title'], 'TREES')
        self.assertEqual(res['conceptscheme']['scheme_id'], 'TREES')
        self.assertEqual(res['conceptscheme']['uri'],
                         'urn:x-skosprovider:trees')
        self.assertIsNotNone(res['conceptscheme']['labels'])
        self.assertIsNotNone(res['conceptscheme']['notes'])
        self.assertIsNotNone(res['conceptscheme']['top_concepts'])
class TestAdminView(unittest.TestCase):
    def setUp(self):
        self.config = testing.setUp()
        self.regis = Registry()
        self.regis.register_provider(trees)

    def tearDown(self):
        testing.tearDown()

    def test_no_registry(self):
        error_raised = False
        request = testing.DummyRequest()
        try:
            AtramhasisAdminView(request)
        except SkosRegistryNotFoundException as e:
            error_raised = True
            self.assertIsNotNone(e.__str__())
        self.assertTrue(error_raised)

    def test_passing_view(self):
        request = testing.DummyRequest()
        request.skos_registry = self.regis
        atramhasisAdminview = AtramhasisAdminView(request)
        info = atramhasisAdminview.admin_view()
        self.assertIsNotNone(info)
        self.assertTrue('admin' in info)

    def test_invalidate_scheme_tree(self):
        request = testing.DummyRequest()
        request.matchdict['scheme_id'] = 'TREES'
        request.skos_registry = self.regis
        atramhasisAdminview = AtramhasisAdminView(request)
        info = atramhasisAdminview.invalidate_scheme_tree()
        self.assertIsNotNone(info)
Example #4
0
class TestConceptSchemeView(unittest.TestCase):
    def setUp(self):
        self.config = testing.setUp()
        self.regis = Registry()
        self.regis.register_provider(trees)
        self.request = testing.DummyRequest()
        self.request.db = db(self.request)
        self.request.skos_registry = self.regis

    def tearDown(self):
        testing.tearDown()

    def test_conceptschemes_view(self):
        atramhasisview = AtramhasisView(self.request)
        res = atramhasisview.conceptschemes_view()
        self.assertEqual({'conceptschemes': [{'id': u'TREES', 'uri': 'urn:test:test'}]}, res)

    def test_conceptscheme_view(self):
        self.request.matchdict['scheme_id'] = 'TREES'
        atramhasisview = AtramhasisView(self.request)
        res = atramhasisview.conceptscheme_view()
        self.assertIsNotNone(res)
        self.assertIsNotNone(res['conceptscheme'])
        self.assertEqual(res['conceptscheme']['title'], 'TREES')
        self.assertEqual(res['conceptscheme']['scheme_id'], 'TREES')
        self.assertEqual(res['conceptscheme']['uri'], 'urn:x-skosprovider:trees')
        self.assertIsNotNone(res['conceptscheme']['labels'])
        self.assertIsNotNone(res['conceptscheme']['notes'])
        self.assertIsNotNone(res['conceptscheme']['top_concepts'])
Example #5
0
class TestAdminView(unittest.TestCase):
    def setUp(self):
        self.config = testing.setUp()
        self.regis = Registry()
        self.regis.register_provider(trees)

    def tearDown(self):
        testing.tearDown()

    def test_no_registry(self):
        error_raised = False
        request = testing.DummyRequest()
        try:
            AtramhasisAdminView(request)
        except SkosRegistryNotFoundException as e:
            error_raised = True
            self.assertIsNotNone(e.__str__())
        self.assertTrue(error_raised)

    def test_passing_view(self):
        request = testing.DummyRequest()
        request.skos_registry = self.regis
        atramhasisAdminview = AtramhasisAdminView(request)
        info = atramhasisAdminview.admin_view()
        self.assertIsNotNone(info)
        self.assertTrue('admin' in info)

    def test_invalidate_scheme_tree(self):
        request = testing.DummyRequest()
        request.matchdict['scheme_id'] = 'TREES'
        request.skos_registry = self.regis
        atramhasisAdminview = AtramhasisAdminView(request)
        info = atramhasisAdminview.invalidate_scheme_tree()
        self.assertIsNotNone(info)
Example #6
0
class TestConceptSchemeView(unittest.TestCase):
    def setUp(self):
        self.config = testing.setUp()
        self.regis = Registry()
        self.regis.register_provider(trees)
        self.request = testing.DummyRequest()
        self.request.accept = ['text/html']
        self.request.data_managers = data_managers(self.request)
        self.request.skos_registry = self.regis

    def tearDown(self):
        testing.tearDown()

    def test_conceptschemes_view(self):
        atramhasisview = AtramhasisView(self.request)
        res = atramhasisview.conceptschemes_view()
        self.assertIn('conceptschemes', res)
        self.assertEqual(len(res['conceptschemes']), 1)
        cs = res['conceptschemes'][0]
        self.assertIn('id', cs)
        self.assertIn('conceptscheme', cs)

    def test_conceptscheme_view(self):
        self.request.matchdict['scheme_id'] = 'TREES'
        atramhasisview = AtramhasisView(self.request)
        res = atramhasisview.conceptscheme_view()
        self.assertIsNotNone(res)
        self.assertIsNotNone(res['conceptscheme'])
        self.assertEqual(res['conceptscheme']['title'], 'TREES')
        self.assertEqual(res['conceptscheme']['scheme_id'], 'TREES')
        self.assertEqual(res['conceptscheme']['uri'], 'urn:x-skosprovider:trees')
        self.assertIsNotNone(res['conceptscheme']['labels'])
        self.assertIsNotNone(res['conceptscheme']['notes'])
        self.assertIsNotNone(res['conceptscheme']['top_concepts'])
Example #7
0
class TestLocaleView(unittest.TestCase):
    def setUp(self):
        self.config = testing.setUp()
        self.regis = Registry()
        self.regis.register_provider(trees)
        config = testing.setUp()
        config.add_route('home', 'foo')
        config.add_settings(settings)
        self.request = testing.DummyRequest()
        self.request.data_managers = {'skos_manager': None, 'conceptscheme_manager': None, 'audit_manager': None}

    def tearDown(self):
        testing.tearDown()

    def test_default_locale(self):
        config_default_lang = settings.get('pyramid.default_locale_name')
        self.request.referer = None
        self.request.skos_registry = self.regis
        atramhasisview = AtramhasisView(self.request)
        res = atramhasisview.set_locale_cookie()
        self.assertTrue((res.headers.get('Set-Cookie')).startswith('_LOCALE_=' + config_default_lang))

    def test_unsupported_lang(self):
        config_default_lang = settings.get('pyramid.default_locale_name')
        self.request.GET['language'] = 'XX'
        self.request.referer = None
        self.request.skos_registry = self.regis
        atramhasisview = AtramhasisView(self.request)
        res = atramhasisview.set_locale_cookie()
        self.assertTrue((res.headers.get('Set-Cookie')).startswith('_LOCALE_=' + config_default_lang))

    def test_locale(self):
        testlang = 'it'
        self.request.GET['language'] = testlang
        self.request.referer = None
        self.request.skos_registry = self.regis
        atramhasisview = AtramhasisView(self.request)
        res = atramhasisview.set_locale_cookie()
        self.assertTrue((res.headers.get('Set-Cookie')).startswith('_LOCALE_=' + testlang))

    def test_locale_uppercase(self):
        testlang = 'it'
        self.request.GET['language'] = testlang.upper()
        self.request.referer = None
        self.request.skos_registry = self.regis
        atramhasisview = AtramhasisView(self.request)
        res = atramhasisview.set_locale_cookie()
        self.assertTrue((res.headers.get('Set-Cookie')).startswith('_LOCALE_=' + testlang))

    def test_referer(self):
        testlang = 'it'
        testurl = 'http://www.foo.bar'
        self.request.GET['language'] = testlang.upper()
        self.request.referer = testurl
        self.request.skos_registry = self.regis
        atramhasisview = AtramhasisView(self.request)
        res = atramhasisview.set_locale_cookie()
        self.assertEqual(res.status, '302 Found')
        self.assertEqual(res.location, testurl)
Example #8
0
class TestLocaleView(unittest.TestCase):
    def setUp(self):
        self.config = testing.setUp()
        self.regis = Registry()
        self.regis.register_provider(trees)
        config = testing.setUp()
        config.add_route('home', 'foo')
        config.add_settings(settings)
        self.request = testing.DummyRequest()
        self.request.data_managers = {'skos_manager': None, 'conceptscheme_manager': None, 'audit_manager': None}

    def tearDown(self):
        testing.tearDown()

    def test_default_locale(self):
        config_default_lang = settings.get('pyramid.default_locale_name')
        self.request.referer = None
        self.request.skos_registry = self.regis
        atramhasisview = AtramhasisView(self.request)
        res = atramhasisview.set_locale_cookie()
        self.assertTrue((res.headers.get('Set-Cookie')).startswith('_LOCALE_=' + config_default_lang))

    def test_unsupported_lang(self):
        config_default_lang = settings.get('pyramid.default_locale_name')
        self.request.GET['language'] = 'XX'
        self.request.referer = None
        self.request.skos_registry = self.regis
        atramhasisview = AtramhasisView(self.request)
        res = atramhasisview.set_locale_cookie()
        self.assertTrue((res.headers.get('Set-Cookie')).startswith('_LOCALE_=' + config_default_lang))

    def test_locale(self):
        testlang = 'it'
        self.request.GET['language'] = testlang
        self.request.referer = None
        self.request.skos_registry = self.regis
        atramhasisview = AtramhasisView(self.request)
        res = atramhasisview.set_locale_cookie()
        self.assertTrue((res.headers.get('Set-Cookie')).startswith('_LOCALE_=' + testlang))

    def test_locale_uppercase(self):
        testlang = 'it'
        self.request.GET['language'] = testlang.upper()
        self.request.referer = None
        self.request.skos_registry = self.regis
        atramhasisview = AtramhasisView(self.request)
        res = atramhasisview.set_locale_cookie()
        self.assertTrue((res.headers.get('Set-Cookie')).startswith('_LOCALE_=' + testlang))

    def test_referer(self):
        testlang = 'it'
        testurl = 'http://www.foo.bar'
        self.request.GET['language'] = testlang.upper()
        self.request.referer = testurl
        self.request.skos_registry = self.regis
        atramhasisview = AtramhasisView(self.request)
        res = atramhasisview.set_locale_cookie()
        self.assertEqual(res.status, '302 Found')
        self.assertEqual(res.location, testurl)
Example #9
0
class TestSearchResultView(unittest.TestCase):
    def setUp(self):
        self.config = testing.setUp()
        self.regis = Registry()
        self.regis.register_provider(trees)
        self.request = testing.DummyRequest()
        self.request.data_managers = {
            'skos_manager': None,
            'conceptscheme_manager': None,
            'audit_manager': None
        }

    def tearDown(self):
        testing.tearDown()

    def test_find_by_label(self):
        self.request.matchdict['scheme_id'] = 'TREES'
        self.request.params = MultiDict()
        self.request.params.add('label', 'De Paardekastanje')
        self.request.params.add('_LOCALE_', 'nl')
        self.request.skos_registry = self.regis
        atramhasisview = AtramhasisView(self.request)
        info = atramhasisview.search_result()
        self.assertIsNotNone(info['concepts'])
        concept = info['concepts'][0]
        self.assertIsNotNone(concept)
        self.assertEqual(concept['label'], 'De Paardekastanje')
        self.assertEqual(info['scheme_id'], 'TREES')

    def test_find_by_concept(self):
        self.request.matchdict['scheme_id'] = 'TREES'
        self.request.params = MultiDict()
        self.request.params.add('ctype', 'concept')
        self.request.params.add('_LOCALE_', 'nl')
        self.request.skos_registry = self.regis
        atramhasisview = AtramhasisView(self.request)
        info = atramhasisview.search_result()
        self.assertIsNotNone(info['concepts'])
        concept = info['concepts'][0]
        self.assertIsNotNone(concept)
        self.assertEqual(info['scheme_id'], 'TREES')

    def test_no_querystring(self):
        self.request.matchdict['scheme_id'] = 'TREES'
        self.request.params = MultiDict()
        self.request.skos_registry = self.regis
        atramhasisview = AtramhasisView(self.request)
        info = atramhasisview.search_result()
        self.assertIsNotNone(info['concepts'])
        self.assertEqual(len(info['concepts']), 3)

    def test_no_schema(self):
        self.request.matchdict['scheme_id'] = 'GG'
        self.request.params = MultiDict()
        self.request.skos_registry = self.regis
        atramhasisview = AtramhasisView(self.request)
        info = atramhasisview.search_result()
        self.assertEqual(info.status_int, 404)
Example #10
0
class TestSearchResultView(unittest.TestCase):
    def setUp(self):
        self.config = testing.setUp()
        self.regis = Registry()
        self.regis.register_provider(trees)

    def tearDown(self):
        testing.tearDown()

    def test_find_by_label(self):
        request = testing.DummyRequest()
        request.matchdict['scheme_id'] = 'TREES'
        request.params = MultiDict()
        request.params.add('label', 'De Paardekastanje')
        request.params.add('_LOCALE_', 'nl')
        request.skos_registry = self.regis
        atramhasisview = AtramhasisView(request)
        info = atramhasisview.search_result()
        self.assertIsNotNone(info['concepts'])
        concept = info['concepts'][0]
        self.assertIsNotNone(concept)
        self.assertEqual(concept['label'], 'De Paardekastanje')
        self.assertEqual(info['scheme_id'], 'TREES')

    def test_find_by_concept(self):
        request = testing.DummyRequest()
        request.matchdict['scheme_id'] = 'TREES'
        request.params = MultiDict()
        request.params.add('ctype', 'concept')
        request.params.add('_LOCALE_', 'nl')
        request.skos_registry = self.regis
        atramhasisview = AtramhasisView(request)
        info = atramhasisview.search_result()
        self.assertIsNotNone(info['concepts'])
        concept = info['concepts'][0]
        self.assertIsNotNone(concept)
        self.assertEqual(info['scheme_id'], 'TREES')

    def test_no_querystring(self):
        request = testing.DummyRequest()
        request.matchdict['scheme_id'] = 'TREES'
        request.params = MultiDict()
        request.skos_registry = self.regis
        atramhasisview = AtramhasisView(request)
        info = atramhasisview.search_result()
        self.assertIsNotNone(info['concepts'])
        self.assertEqual(len(info['concepts']), 3)

    def test_no_schema(self):
        request = testing.DummyRequest()
        request.matchdict['scheme_id'] = 'GG'
        request.params = MultiDict()
        request.skos_registry = self.regis
        atramhasisview = AtramhasisView(request)
        info = atramhasisview.search_result()
        self.assertEqual(info.status_int, 404)
Example #11
0
class TestAdminView(unittest.TestCase):
    def setUp(self):
        self.config = testing.setUp()
        self.regis = Registry()
        self.regis.register_provider(trees)

    def tearDown(self):
        testing.tearDown()

    def test_no_registry(self):
        error_raised = False
        request = testing.DummyRequest()
        try:
            AtramhasisAdminView(request)
        except SkosRegistryNotFoundException as e:
            error_raised = True
            self.assertIsNotNone(e.__str__())
        self.assertTrue(error_raised)

    def test_passing_view(self):
        request = testing.DummyRequest()
        request.skos_registry = self.regis
        atramhasisAdminview = AtramhasisAdminView(request)
        info = atramhasisAdminview.admin_view()
        self.assertIsNotNone(info)
        self.assertTrue('admin' in info)

    def test_invalidate_scheme_tree(self):
        tree_cache_dictionary['foo |TREES nl'] = []
        tree_cache_dictionary['foo |TREES fr'] = []
        tree_cache_dictionary['bar |MATERIALS fr'] = []

        request = testing.DummyRequest()
        request.matchdict['scheme_id'] = 'TREES'
        request.skos_registry = self.regis
        atramhasisAdminview = AtramhasisAdminView(request)
        response = atramhasisAdminview.invalidate_scheme_tree()

        self.assertEqual(response.status_int, 200)
        self.assertIn('bar |MATERIALS fr', tree_cache_dictionary.keys())
        self.assertNotIn('foo |TREES nl', tree_cache_dictionary.keys())
        self.assertNotIn('foo |TREES fr', tree_cache_dictionary.keys())

    def test_invalidate_tree(self):
        tree_cache_dictionary['foo |TREES nl'] = []
        tree_cache_dictionary['foo |TREES fr'] = []
        tree_cache_dictionary['bar |MATERIALS fr'] = []

        request = testing.DummyRequest()
        request.skos_registry = self.regis
        atramhasisAdminview = AtramhasisAdminView(request)
        response = atramhasisAdminview.invalidate_tree()

        self.assertEqual(response.status_int, 200)
        self.assertEqual(len(tree_cache_dictionary), 0)
Example #12
0
class TestAdminView(unittest.TestCase):
    def setUp(self):
        self.config = testing.setUp()
        self.regis = Registry()
        self.regis.register_provider(trees)

    def tearDown(self):
        testing.tearDown()

    def test_no_registry(self):
        error_raised = False
        request = testing.DummyRequest()
        try:
            AtramhasisAdminView(request)
        except SkosRegistryNotFoundException as e:
            error_raised = True
            self.assertIsNotNone(e.__str__())
        self.assertTrue(error_raised)

    def test_passing_view(self):
        request = testing.DummyRequest()
        request.skos_registry = self.regis
        atramhasisAdminview = AtramhasisAdminView(request)
        info = atramhasisAdminview.admin_view()
        self.assertIsNotNone(info)
        self.assertTrue('admin' in info)

    def test_invalidate_scheme_tree(self):
        tree_cache_dictionary['foo |TREES nl'] = []
        tree_cache_dictionary['foo |TREES fr'] = []
        tree_cache_dictionary['bar |MATERIALS fr'] = []

        request = testing.DummyRequest()
        request.matchdict['scheme_id'] = 'TREES'
        request.skos_registry = self.regis
        atramhasisAdminview = AtramhasisAdminView(request)
        response = atramhasisAdminview.invalidate_scheme_tree()

        self.assertEqual(response.status_int, 200)
        self.assertIn('bar |MATERIALS fr', tree_cache_dictionary.keys())
        self.assertNotIn('foo |TREES nl', tree_cache_dictionary.keys())
        self.assertNotIn('foo |TREES fr', tree_cache_dictionary.keys())

    def test_invalidate_tree(self):
        tree_cache_dictionary['foo |TREES nl'] = []
        tree_cache_dictionary['foo |TREES fr'] = []
        tree_cache_dictionary['bar |MATERIALS fr'] = []

        request = testing.DummyRequest()
        request.skos_registry = self.regis
        atramhasisAdminview = AtramhasisAdminView(request)
        response = atramhasisAdminview.invalidate_tree()

        self.assertEqual(response.status_int, 200)
        self.assertEqual(len(tree_cache_dictionary), 0)
Example #13
0
class TestHomeView(unittest.TestCase):
    def setUp(self):
        self.config = testing.setUp()
        self.regis = Registry()
        self.regis.register_provider(trees)

    def tearDown(self):
        testing.tearDown()

    def test_passing_view(self):
        request = testing.DummyRequest()
        request.skos_registry = self.regis
        atramhasisview = AtramhasisView(request)
        info = atramhasisview.home_view()
        self.assertIsNotNone(info['conceptschemes'][0])
        self.assertEqual(info['conceptschemes'][0]['id'], 'TREES')
Example #14
0
class TestHomeView(unittest.TestCase):
    def setUp(self):
        self.config = testing.setUp()
        self.regis = Registry()
        self.regis.register_provider(trees)

    def tearDown(self):
        testing.tearDown()

    def test_passing_view(self):
        request = testing.DummyRequest()
        request.skos_registry = self.regis
        atramhasisview = AtramhasisView(request)
        info = atramhasisview.home_view()
        self.assertIsNotNone(info['conceptschemes'][0])
        self.assertEqual(info['conceptschemes'][0]['id'], 'TREES')
Example #15
0
class TestFavicoView(unittest.TestCase):
    def setUp(self):
        self.config = testing.setUp()
        self.regis = Registry()
        self.regis.register_provider(trees)

    def tearDown(self):
        testing.tearDown()

    def test_passing_view(self):
        request = testing.DummyRequest()
        request.skos_registry = self.regis
        atramhasisview = AtramhasisView(request)
        response = atramhasisview.favicon_view()
        self.assertEqual(response.status_int, 200)
        self.assertIn('image/x-icon', response.headers['Content-Type'])
        self.assertIsNotNone(response.body)
Example #16
0
class TestFavicoView(unittest.TestCase):
    def setUp(self):
        self.config = testing.setUp()
        self.regis = Registry()
        self.regis.register_provider(trees)

    def tearDown(self):
        testing.tearDown()

    def test_passing_view(self):
        request = testing.DummyRequest()
        request.skos_registry = self.regis
        atramhasisview = AtramhasisView(request)
        response = atramhasisview.favicon_view()
        self.assertEqual(response.status_int, 200)
        self.assertIn('image/x-icon', response.headers['Content-Type'])
        self.assertIsNotNone(response.body)
Example #17
0
class TestHtmlTreeView(unittest.TestCase):
    def setUp(self):
        self.config = testing.setUp()
        self.regis = Registry()
        self.regis.register_provider(trees)

    def tearDown(self):
        testing.tearDown()

    def test_passing_view(self):
        request = testing.DummyRequest()
        request.skos_registry = self.regis
        request.matchdict['scheme_id'] = 'TREES'
        atramhasisview = AtramhasisView(request)
        response = atramhasisview.results_tree_html()
        self.assertEqual(response['conceptType'], None)
        self.assertEqual(response['concept'], None)
        self.assertEqual(response['scheme_id'], 'TREES')
Example #18
0
class TestHtmlTreeView(unittest.TestCase):
    def setUp(self):
        self.config = testing.setUp()
        self.regis = Registry()
        self.regis.register_provider(trees)

    def tearDown(self):
        testing.tearDown()

    def test_passing_view(self):
        request = testing.DummyRequest()
        request.skos_registry = self.regis
        request.matchdict['scheme_id'] = 'TREES'
        atramhasisview = AtramhasisView(request)
        response = atramhasisview.results_tree_html()
        self.assertEqual(response['conceptType'], None)
        self.assertEqual(response['concept'], None)
        self.assertEqual(response['scheme_id'], 'TREES')
Example #19
0
class TestCsvView(unittest.TestCase):
    def setUp(self):
        self.config = testing.setUp()
        self.request = testing.DummyRequest()
        self.request.accept = '*/*'
        self.regis = Registry()
        self.regis.register_provider(provider(1))
        self.request.skos_registry = self.regis
        self.request.data_managers = data_managers(self.request)

    def tearDown(self):
        testing.tearDown()

    def test_csv(self):
        self.request.matchdict['scheme_id'] = 'TREES'
        self.request.params = MultiDict()
        atramhasisview = AtramhasisView(self.request)
        res = atramhasisview.results_csv()
        self.assertEqual(res['filename'], 'atramhasis_export')
        self.assertIsInstance(res['header'], list)
        self.assertIsInstance(res['rows'], list)
        self.assertEqual(2, len(res['rows']))

    def test_csv_label(self):
        self.request.matchdict['scheme_id'] = 'TREES'
        self.request.params = MultiDict()
        self.request.params.add('label', 'De Paardekastanje')
        atramhasisview = AtramhasisView(self.request)
        res = atramhasisview.results_csv()
        self.assertEqual(res['filename'], 'atramhasis_export')
        self.assertIsInstance(res['header'], list)
        self.assertIsInstance(res['rows'], list)
        self.assertEqual(2, len(res['rows']))

    def test_csv_ctype(self):
        self.request.matchdict['scheme_id'] = 'TREES'
        self.request.params = MultiDict()
        self.request.params.add('ctype', 'concept')
        atramhasisview = AtramhasisView(self.request)
        res = atramhasisview.results_csv()
        self.assertEqual(res['filename'], 'atramhasis_export')
        self.assertIsInstance(res['header'], list)
        self.assertIsInstance(res['rows'], list)
        self.assertEqual(2, len(res['rows']))
Example #20
0
class TestCsvView(unittest.TestCase):
    def setUp(self):
        self.config = testing.setUp()
        self.request = testing.DummyRequest()
        self.request.accept = '*/*'
        self.regis = Registry()
        self.regis.register_provider(provider(1))
        self.request.skos_registry = self.regis
        self.request.data_managers = data_managers(self.request)

    def tearDown(self):
        testing.tearDown()

    def test_csv(self):
        self.request.matchdict['scheme_id'] = 'TREES'
        self.request.params = MultiDict()
        atramhasisview = AtramhasisView(self.request)
        res = atramhasisview.results_csv()
        self.assertEqual(res['filename'], 'atramhasis_export')
        self.assertIsInstance(res['header'], list)
        self.assertIsInstance(res['rows'], list)
        self.assertEqual(2, len(res['rows']))

    def test_csv_label(self):
        self.request.matchdict['scheme_id'] = 'TREES'
        self.request.params = MultiDict()
        self.request.params.add('label', 'De Paardekastanje')
        atramhasisview = AtramhasisView(self.request)
        res = atramhasisview.results_csv()
        self.assertEqual(res['filename'], 'atramhasis_export')
        self.assertIsInstance(res['header'], list)
        self.assertIsInstance(res['rows'], list)
        self.assertEqual(2, len(res['rows']))

    def test_csv_ctype(self):
        self.request.matchdict['scheme_id'] = 'TREES'
        self.request.params = MultiDict()
        self.request.params.add('ctype', 'concept')
        atramhasisview = AtramhasisView(self.request)
        res = atramhasisview.results_csv()
        self.assertEqual(res['filename'], 'atramhasis_export')
        self.assertIsInstance(res['header'], list)
        self.assertIsInstance(res['rows'], list)
        self.assertEqual(2, len(res['rows']))
Example #21
0
class TestHomeView(unittest.TestCase):
    def setUp(self):
        self.config = testing.setUp()
        self.regis = Registry()
        self.regis.register_provider(trees)
        self.regis.register_provider(hidden_provider(2))
        self.request = testing.DummyRequest()
        self.request.data_managers = {'skos_manager': None, 'conceptscheme_manager': None, 'audit_manager': None}

    def tearDown(self):
        testing.tearDown()

    def test_passing_view(self):
        self.request.skos_registry = self.regis
        atramhasisview = AtramhasisView(self.request)
        info = atramhasisview.home_view()
        self.assertIsNotNone(info['conceptschemes'][0])
        self.assertEqual(info['conceptschemes'][0]['id'], 'TREES')
        self.assertEqual(1, len(info['conceptschemes']))
Example #22
0
class TestHomeView(unittest.TestCase):
    def setUp(self):
        self.config = testing.setUp()
        self.regis = Registry()
        self.regis.register_provider(trees)
        self.regis.register_provider(hidden_provider(2))
        self.request = testing.DummyRequest()
        self.request.data_managers = {'skos_manager': None, 'conceptscheme_manager': None, 'audit_manager': None}

    def tearDown(self):
        testing.tearDown()

    def test_passing_view(self):
        self.request.skos_registry = self.regis
        atramhasisview = AtramhasisView(self.request)
        info = atramhasisview.home_view()
        self.assertIsNotNone(info['conceptschemes'][0])
        self.assertEqual(info['conceptschemes'][0]['id'], 'TREES')
        self.assertEqual(1, len(info['conceptschemes']))
Example #23
0
class RegistryTests(unittest.TestCase):
    def setUp(self):
        self.reg = Registry()
        self.prov = trees
        self.prov2 = geo

    def tearDown(self):
        self.reg = None
        self.prov = None
        self.prov2 = None

    def test_default_metadata_is_dict(self):
        self.assertIsInstance(self.reg.get_metadata(), dict)

    def test_passed_metadata_is_dict(self):
        self.reg = Registry(metadata={'catalog': {'uri': 'http://my.data.org'}})
        assert 'catalog' in self.reg.get_metadata()
        assert 'uri' in self.reg.get_metadata().get('catalog')

    def test_set_instance_scope(self):
        self.reg = Registry(instance_scope='threaded_global')
        assert self.reg.instance_scope == 'threaded_global'

    def test_set_invalid_instance_scope(self):
        with pytest.raises(ValueError):
            Registry(instance_scope='bad_scope')

    def test_empty_register_provider(self):
        self.reg.register_provider(self.prov)
        self.assertEqual(self.reg.get_provider('TREES'), self.prov)

    def test_empty_register_removeProvider(self):
        self.assertFalse(self.reg.remove_provider('TREES'))

    def test_empty_getProviders(self):
        self.assertEqual(self.reg.get_providers(), [])
        self.assertEqual(self.reg.get_providers(ids=[]), [])

    def test_empty_getProviderById(self):
        self.assertFalse(self.reg.get_provider('TREES'))
        self.assertFalse(self.reg.get_provider('http://id.trees.org'))

    def test_empty_findConcepts(self):
        self.assertEqual(self.reg.find({}), [])

    def test_empty_getAllConcepts(self):
        self.assertEqual(self.reg.get_all(), [])

    def test_one_provider_register_provider(self):
        self.reg.register_provider(self.prov)
        self.assertEqual(self.reg.get_provider('TREES'), self.prov)
        self.assertEqual(
            self.reg.get_provider('http://id.trees.org'),
            self.prov
        )
        self.reg.register_provider(self.prov2)
        self.assertEqual(self.reg.get_provider('GEOGRAPHY'), self.prov2)
        self.assertEqual(
            self.reg.get_provider('urn:x-skosprovider:geography'),
            self.prov2
        )

    def test_one_provider_register_double_provider(self):
        self.reg.register_provider(self.prov)
        self.assertEqual(self.reg.get_provider('TREES'), self.prov)
        self.assertRaises(
            RegistryException,
            self.reg.register_provider,
            self.prov
        )
        #Change the id, but keep identical URIs
        self.prov.metadata['id'] = 'TREESTOO'
        self.assertRaises(
            RegistryException,
            self.reg.register_provider,
            self.prov
        )
        self.prov.metadata['id'] = 'TREES'

    def test_register_provider_wrong_scope(self):
        from skosprovider.skos import ConceptScheme
        from skosprovider.providers import DictionaryProvider
        trees = DictionaryProvider(
            {'id': 'TREES', 'default_language': 'nl'},
            [larch, chestnut, species],
            concept_scheme=ConceptScheme('urn:something'),
            allowed_instance_scopes = ['threaded_thread']
        )
        with pytest.raises(RegistryException):
            self.reg.register_provider(trees)

    def test_register_provider_no_uri(self):
        p = Mock()
        p.allowed_instance_scopes = ['single']
        p.get_vocabulary_id = MagicMock(return_value='MYID')
        del p.get_vocabulary_uri
        p.concept_scheme = MagicMock()
        p.concept_scheme.uri = 'http://my.id.org'
        self.reg.register_provider(p)
        assert p == self.reg.get_provider('MYID')
        assert p == self.reg.get_provider('http://my.id.org')

    def test_remove_provider_no_uri(self):
        p = Mock()
        p.allowed_instance_scopes = ['single']
        p.get_vocabulary_id = MagicMock(return_value='MYID')
        del p.get_vocabulary_uri
        p.concept_scheme = MagicMock()
        p.concept_scheme.uri = 'http://my.id.org'
        self.reg.register_provider(p)
        assert p == self.reg.get_provider('MYID')
        assert p == self.reg.get_provider('http://my.id.org')
        self.reg.remove_provider('http://my.id.org')
        assert not self.reg.get_provider('MYID')

    def test_one_provider_removeProvider(self):
        self.reg.register_provider(self.prov)
        self.assertEqual(self.reg.get_provider('TREES'), self.prov)
        self.reg.remove_provider('TREES')
        self.assertFalse(self.reg.get_provider('TREES'))

    def test_one_provider_removeProviderWithUri(self):
        self.reg.register_provider(self.prov)
        self.assertEqual(self.reg.get_provider('TREES'), self.prov)
        self.reg.remove_provider('http://id.trees.org')
        self.assertFalse(self.reg.get_provider('TREES'))

    def test_one_provider_getProviders(self):
        self.reg.register_provider(self.prov)
        self.assertEqual(self.reg.get_providers(), [self.prov])
        self.assertEqual(self.reg.get_providers(ids=['TREES']), [self.prov])

    def test_one_provider_getProvidersWithIds(self):
        self.reg.register_provider(self.prov)
        self.assertEqual(self.reg.get_providers(ids=['TREES']), [self.prov])
        self.assertEqual(self.reg.get_providers(), [self.prov])
        self.assertEqual(self.reg.get_providers(ids=['GEOGRAPHY']), [])

    def test_one_provider_getProvidersWithUris(self):
        self.reg.register_provider(self.prov)
        self.assertEqual(self.reg.get_providers(ids=['http://id.trees.org']), [self.prov])
        self.assertEqual(self.reg.get_providers(), [self.prov])
        self.assertEqual(self.reg.get_providers(ids=['urn:x-skosprovider:geography']), [])

    def test_one_provider_getProvidersWithSubject(self):
        self.reg.register_provider(self.prov)
        self.assertEqual(self.reg.get_providers(subject='something'), [])
        self.assertEqual(self.reg.get_providers(subject='biology'), [self.prov])

    def test_one_provider_getPoviderWithId(self):
        self.reg.register_provider(self.prov)
        self.assertEqual(self.reg.get_provider('TREES'), self.prov)

    def test_one_provider_getPoviderWithUri(self):
        self.reg.register_provider(self.prov)
        self.assertEqual(self.reg.get_provider('http://id.trees.org'), self.prov)

    def test_one_provider_findConcepts(self):
        self.reg.register_provider(self.prov)
        self.assertEqual(
            self.reg.find({'label': 'The Larch'}),
            [
                {
                    'id': 'TREES',
                    'concepts': [
                        {
                            'id': '1',
                            'uri': 'http://id.trees.org/1',
                            'type': 'concept',
                            'label': 'De Lariks'
                        }
                    ]
                }
            ]
        )

    def test_one_provider_getConceptByUri(self):
        self.reg.register_provider(self.prov)
        c = self.reg.get_by_uri('http://id.trees.org/1')
        self.assertEqual(c.id, '1')
        self.assertEqual(c.uri, 'http://id.trees.org/1')

    def test_one_provider_getConceptByUriDifferentFromConceptScheme(self):
        from skosprovider.skos import ConceptScheme
        from skosprovider.providers import DictionaryProvider
        trees = DictionaryProvider(
            {'id': 'TREES', 'default_language': 'nl'},
            [larch, chestnut, species],
            concept_scheme=ConceptScheme('urn:something')
        )
        self.reg.register_provider(trees)
        c = self.reg.get_by_uri('http://id.trees.org/1')
        self.assertEqual(c.id, '1')
        self.assertEqual(c.uri, 'http://id.trees.org/1')

    def test_one_provider_getConceptByUnexistingUri(self):
        self.reg.register_provider(self.prov)
        c = self.reg.get_by_uri('http://id.thingy.com/123456')
        self.assertFalse(c)

    def test_get_by_invalid_uri(self):
        self.assertRaises(
            ValueError,
            self.reg.get_by_uri,
            None
        )

    def test_one_provider_findConceptsWithProviderid(self):
        self.reg.register_provider(self.prov)
        self.assertEqual(
            self.reg.find({'label': 'The Larch'}, providers=['TREES']),
            [
                {
                    'id': 'TREES',
                    'concepts': [
                        {
                            'id': '1',
                            'uri': 'http://id.trees.org/1',
                            'type': 'concept',
                            'label': 'De Lariks'
                        }
                    ]
                }
            ]
        )
        self.assertEqual(
            self.reg.find({'label': 'The Larch'}, providers=[]),
            []
        )

    def test_one_provider_getAllConcepts(self):
        self.reg.register_provider(self.prov)
        self.assertEqual(
            self.reg.get_all(),
            [
                {
                    'id': 'TREES',
                    'concepts': [
                        {
                            'id': '1',
                            'uri': 'http://id.trees.org/1',
                            'type': 'concept',
                            'label': 'De Lariks'
                        }, {
                            'id': '2',
                            'uri': 'http://id.trees.org/2',
                            'type': 'concept',
                            'label': 'De Paardekastanje'
                        }, {
                            'id': 3,
                            'uri': 'http://id.trees.org/3',
                            'type': 'collection',
                            'label': 'Bomen per soort'
                        }
                    ]
                }
            ]
        )

    def test_one_provider_getAllConceptsDifferentLanguage(self):
        self.reg.register_provider(self.prov)
        self.assertEqual(
                self.reg.get_all(language="en"),
            [
                {
                    'id': 'TREES',
                    'concepts': [
                        {
                            'id': '1',
                            'uri': 'http://id.trees.org/1',
                            'type': 'concept',
                            'label': 'The Larch'
                        }, {
                            'id': '2',
                            'uri': 'http://id.trees.org/2',
                            'type': 'concept',
                            'label': 'The Chestnut'
                        }, {
                            'id': 3,
                            'uri': 'http://id.trees.org/3',
                            'type': 'collection',
                            'label': 'Trees by species'
                        }
                    ]
                }
            ]
        )

    def test_two_providers_findConceptsWithProviderIdAndUri(self):
        self.reg.register_provider(self.prov2)
        self.reg.register_provider(self.prov)
        self.assertEqual(
            self.reg.find({'label': 'The Larch'}, providers=['TREES']),
            self.reg.find({'label': 'The Larch'}, providers=['http://id.trees.org']),
        )

    def test_two_providers_findConceptsProvidersDictionarySyntax(self):
        self.reg.register_provider(self.prov2)
        self.reg.register_provider(self.prov)
        self.assertEqual(
            self.reg.find({'label': 'The Larch'}, providers=['TREES']),
            self.reg.find({'label': 'The Larch'}, providers={'ids': ['http://id.trees.org']}),
        )

    def test_two_providers_findConceptsProvidersDictionarySyntax(self):
        self.reg.register_provider(self.prov2)
        self.reg.register_provider(self.prov)
        self.assertEqual(
            self.reg.find({'label': 'The Larch'}, providers=['TREES']),
            self.reg.find({'label': 'The Larch'}, providers={'ids': ['http://id.trees.org']}),
        )

    def test_one_provider_findConceptsWithSubject(self):
        self.reg.register_provider(self.prov)
        provs = self.reg.get_providers(subject='biology')
        res = [{'id': p.get_vocabulary_id(), 'concepts': p.find({})} for p in provs]
        self.assertEqual(
            res,
            self.reg.find({},subject='biology')
        )

    def test_one_provider_findConceptsWithSubject_language_en(self):
        self.reg.register_provider(self.prov)
        provs = self.reg.get_providers(subject='biology')
        res = [{'id': p.get_vocabulary_id(), 'concepts': p.find({}, language='en')} for p in provs]
        self.assertEqual(
            res,
            self.reg.find({},subject='biology', language='en')
        )

    def test_one_provider_findConceptsWithSubject_language_nl(self):
        self.reg.register_provider(self.prov)
        provs = self.reg.get_providers(subject='biology')
        res = [{'id': p.get_vocabulary_id(), 'concepts': p.find({})} for p in provs]
        self.assertEqual(
            res,
            self.reg.find({},subject='biology', language='nl')
        )
Example #24
0
class ProviderViewTests(unittest.TestCase):

    def setUp(self):
        self.config = testing.setUp()
        self.config.include('pyramid_skosprovider')
        self.regis = Registry()
        self.regis.register_provider(trees)

    def tearDown(self):
        testing.tearDown()
        del self.config
        del self.regis

    def _get_dummy_request(self, *args, **kwargs):
        request = testing.DummyRequest(*args, **kwargs)
        request.accept = 'application/json'
        request.skos_registry = self.regis
        return request

    def _get_provider_view(self, request):
        from pyramid_skosprovider.views import ProviderView
        return ProviderView(request)

    def test_get_unexisting_uri(self):
        request = self._get_dummy_request()
        request.matchdict = {'uri': 'urn:x-skosprovider:rain'}
        pv = self._get_provider_view(request)
        u = pv.get_uri()
        self.assertIsInstance(u, HTTPNotFound)

    def test_get_uri_sets_jsonld(self):
        request = self._get_dummy_request()
        request.accept = 'application/ld+json'
        request.matchdict = {'uri': 'http://python.com/trees'}
        pv = self._get_provider_view(request)
        u = pv.get_uri()
        assert request.response.content_type == 'application/ld+json'

    def test_get_uri_conceptscheme(self):
        request = self._get_dummy_request()
        request.matchdict = {'uri': 'http://python.com/trees'}
        pv = self._get_provider_view(request)
        u = pv.get_uri()
        assert '@context' in u
        assert 'uri' in u['@context']
        assert 'id' in u['@context']
        assert 'type' in u['@context']
        assert u['uri'] == 'http://python.com/trees'
        assert u['id'] == 'TREES'
        assert u['type'] == 'concept_scheme'

    def test_get_uri_concept(self):
        request = self._get_dummy_request()
        request.matchdict = {'uri': 'http://python.com/trees/larch'}
        pv = self._get_provider_view(request)
        u = pv.get_uri()

        assert '@context' in u
        assert 'uri' in u['@context']
        assert 'id' in u['@context']
        assert 'type' in u['@context']
        assert 'concept_scheme' in u['@context']
        assert 'concept' in u['@context']
        assert 'collection' in u['@context']
        assert u['uri'] == 'http://python.com/trees/larch'
        assert u['id'] == 1
        assert u['type'] == 'concept'
        assert u['concept_scheme'] == {
            'id': 'TREES',
            'type': 'skos:ConceptScheme',
            'uri': 'http://python.com/trees',
        }

    def test_get_uri_collection(self):
        request = self._get_dummy_request()
        request.matchdict = {'uri': 'http://python.com/trees/species'}
        pv = self._get_provider_view(request)
        u = pv.get_uri()

        assert '@context' in u
        assert 'uri' in u['@context']
        assert 'id' in u['@context']
        assert 'type' in u['@context']
        assert 'concept_scheme' in u['@context']
        assert 'concept' in u['@context']
        assert 'collection' in u['@context']
        assert u['uri'] == 'http://python.com/trees/species'
        assert u['id'] == 3
        assert u['type'] == 'collection'
        assert u['concept_scheme'] == {
            'id': 'TREES',
            'type': 'skos:ConceptScheme',
            'uri': 'http://python.com/trees',
        }

    def test_get_conceptschemes(self):
        request = self._get_dummy_request()
        pv = self._get_provider_view(request)
        conceptschemes = pv.get_conceptschemes()
        self.assertIsInstance(conceptschemes, list)
        for cs in conceptschemes:
            assert isinstance(cs, dict)
            assert 'id' in cs
            assert 'uri' in cs
            assert 'label' in cs

    def test_get_conceptschemes_jsonld(self):
        request = self._get_dummy_request()
        request.accept = 'application/ld+json'
        pv = self._get_provider_view(request)
        conceptschemes = pv.get_conceptschemes()
        self.assertIsInstance(conceptschemes, list)
        for cs in conceptschemes:
            assert isinstance(cs, dict)
            assert 'id' in cs
            assert 'uri' in cs
            assert 'label' in cs
            assert '@context' in cs


    def test_get_conceptscheme(self):
        request = self._get_dummy_request()
        request.matchdict = {'scheme_id': 'TREES'}
        pv = self._get_provider_view(request)
        cs = pv.get_conceptscheme()
        self.assertEqual(
            {
                'id': 'TREES',
                'uri': 'http://python.com/trees',
                'label': 'Different types of trees',
                'subject': [],
                'labels': [
                    Label('Different types of trees', 'prefLabel', 'en'),
                    Label('Verschillende soorten bomen', 'prefLabel', 'nl')
                ],
                'notes': [],
                'sources': [],
                'languages': []
            },
            cs
        )

    def test_get_conceptscheme_jsonld(self):
        request = self._get_dummy_request()
        request.accept = 'application/ld+json'
        request.matchdict = {'scheme_id': 'TREES'}
        pv = self._get_provider_view(request)
        cs = pv.get_conceptscheme_jsonld()
        assert isinstance(cs, ConceptScheme)

    def test_get_unexisting_conceptscheme(self):
        request = self._get_dummy_request()
        request.matchdict = {'scheme_id': 'PARROTS'}
        pv = self._get_provider_view(request)
        cs = pv.get_conceptscheme()
        self.assertIsInstance(cs, HTTPNotFound)

    def test_get_unexisting_conceptscheme_jsonld(self):
        request = self._get_dummy_request()
        request.accept = 'application/ld+json'
        request.matchdict = {'scheme_id': 'PARROTS'}
        pv = self._get_provider_view(request)
        cs = pv.get_conceptscheme_jsonld()
        self.assertIsInstance(cs, HTTPNotFound)

    def test_get_concepts(self):
        request = self._get_dummy_request()
        pv = self._get_provider_view(request)
        concepts = pv.get_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual(3, len(concepts))
        for c in concepts:
            self.assertIsInstance(c, dict)
            self.assertIn('id', c)

    def test_get_concepts_language(self):
        request = self._get_dummy_request({
            'language': 'en'
        },
            locale_name='nl'
        )
        request.matchdict = {
            'scheme_id': 'TREES'
        }
        pv = self._get_provider_view(request)
        children = pv.get_concepts()
        request_locale = self._get_dummy_request(
            locale_name='nl'
        )
        request_locale.matchdict = {
            'scheme_id': 'TREES'
        }
        pv_locale = self._get_provider_view(request_locale)
        children_locale = pv_locale.get_concepts()
        self.assertEqual(children[0]['id'], children_locale[0]['id'])
        self.assertNotEqual(children[0]['label'], children_locale[0]['label'])

    def test_get_concepts_provider_subjects(self):
        request = self._get_dummy_request({
            'providers.subject': 'doesnt exist'
        })
        pv = self._get_provider_view(request)
        concepts = pv.get_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual(0, len(concepts))

    def test_get_concepts_provider_ids(self):
        request = self._get_dummy_request({
            'providers.ids': 'PARROTS'
        })
        pv = self._get_provider_view(request)
        concepts = pv.get_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual(0, len(concepts))

    def test_get_concepts_search_type_concept(self):
        request = self._get_dummy_request({
            'type': 'concept'
        })
        pv = self._get_provider_view(request)
        concepts = pv.get_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual(2, len(concepts))

    def test_get_concepts_search_type_concept(self):
        request = self._get_dummy_request({
            'label': 'De lariks'
        })
        pv = self._get_provider_view(request)
        concepts = pv.get_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual(1, len(concepts))

    def test_get_concepts_search_dfs_empty_label(self):
        request = self._get_dummy_request({
            'type': 'concept',
            'mode': 'dijitFilteringSelect',
            'label': ''
        })
        pv = self._get_provider_view(request)
        concepts = pv.get_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual(0, len(concepts))

    def test_get_concepts_search_dfs_all(self):
        request = self._get_dummy_request({
            'type': 'concept',
            'mode': 'dijitFilteringSelect',
            'label': '*'
        })
        pv = self._get_provider_view(request)
        concepts = pv.get_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual(2, len(concepts))

    def test_get_concepts_search_dfs_label_star(self):
        request = self._get_dummy_request({
            'type': 'concept',
            'mode': 'dijitFilteringSelect',
            'label': 'De *',
            'language': 'nl-BE'
        })
        pv = self._get_provider_view(request)
        concepts = pv.get_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual(2, len(concepts))

    def test_get_conceptscheme_concepts(self):
        request = self._get_dummy_request()
        request.matchdict = {'scheme_id': 'TREES'}
        pv = self._get_provider_view(request)
        concepts = pv.get_conceptscheme_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual(3, len(concepts))
        for c in concepts:
            self.assertIsInstance(c, dict)
            self.assertIn('id', c)

    def test_get_conceptscheme_concepts_complete_range(self):
        request = self._get_dummy_request()
        request.matchdict = {'scheme_id': 'TREES'}
        request.headers['Range'] = 'items=0-19'
        pv = self._get_provider_view(request)
        concepts = pv.get_conceptscheme_concepts()
        self.assertEqual(3, len(concepts))

    def test_get_conceptscheme_concepts_range_one_item(self):
        request = self._get_dummy_request()
        request.matchdict = {'scheme_id': 'TREES'}
        request.headers['Range'] = 'items=0-0'
        pv = self._get_provider_view(request)
        concepts = pv.get_conceptscheme_concepts()
        self.assertEqual(1, len(concepts))

    def test_get_conceptscheme_concepts_range_final_items(self):
        request = self._get_dummy_request()
        request.matchdict = {'scheme_id': 'TREES'}
        request.headers['Range'] = 'items=1-2'
        pv = self._get_provider_view(request)
        concepts = pv.get_conceptscheme_concepts()
        self.assertEqual(2, len(concepts))

    def test_get_conceptscheme_concepts_invalid_range(self):
        request = self._get_dummy_request()
        request.matchdict = {'scheme_id': 'TREES'}
        request.headers['Range'] = 'items=a-2'
        pv = self._get_provider_view(request)
        concepts = pv.get_conceptscheme_concepts()
        self.assertEqual(3, len(concepts))

    def test_get_unexisting_conceptscheme_concepts(self):
        request = self._get_dummy_request()
        request.matchdict = {'scheme_id': 'PARROTS'}
        pv = self._get_provider_view(request)
        concepts = pv.get_conceptscheme_concepts()
        self.assertIsInstance(concepts, HTTPNotFound)

    def test_get_conceptscheme_concepts_search_label(self):
        request = self._get_dummy_request({
            'label': 'Larc'
        })
        request.matchdict = {'scheme_id': 'TREES'}
        pv = self._get_provider_view(request)
        concepts = pv.get_conceptscheme_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual(1, len(concepts))
        self.assertEqual(1, concepts[0]['id'])

    def test_get_conceptscheme_concepts_search_type_concept(self):
        request = self._get_dummy_request({
            'type': 'concept'
        })
        request.matchdict = {'scheme_id': 'TREES'}
        pv = self._get_provider_view(request)
        concepts = pv.get_conceptscheme_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual(2, len(concepts))

    def test_get_conceptscheme_concepts_search_type_collection(self):
        request = self._get_dummy_request({
            'type': 'collection'
        })
        request.matchdict = {'scheme_id': 'TREES'}
        pv = self._get_provider_view(request)
        concepts = pv.get_conceptscheme_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual(1, len(concepts))

    def test_get_conceptscheme_concepts_search_in_collection(self):
        request = self._get_dummy_request({
            'collection': 3
        })
        request.matchdict = {'scheme_id': 'TREES'}
        pv = self._get_provider_view(request)
        concepts = pv.get_conceptscheme_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual(2, len(concepts))

    def test_get_conceptscheme_concepts_search_dfs_all(self):
        request = self._get_dummy_request({
            'type': 'concept',
            'mode': 'dijitFilteringSelect',
            'label': '*'
        })
        request.matchdict = {
            'scheme_id': 'TREES'
        }
        pv = self._get_provider_view(request)
        concepts = pv.get_conceptscheme_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual(2, len(concepts))

    def test_get_conceptscheme_concepts_search_dfs_empty_label(self):
        request = self._get_dummy_request({
            'type': 'concept',
            'mode': 'dijitFilteringSelect',
            'label': ''
        })
        request.matchdict = {
            'scheme_id': 'TREES'
        }
        pv = self._get_provider_view(request)
        concepts = pv.get_conceptscheme_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual(0, len(concepts))

    def test_get_conceptscheme_concepts_search_dfs_label_star(self):
        request = self._get_dummy_request({
            'type': 'concept',
            'mode': 'dijitFilteringSelect',
            'label': 'De *',
            'language': 'nl-BE'
        })
        request.matchdict = {
            'scheme_id': 'TREES'
        }
        pv = self._get_provider_view(request)
        concepts = pv.get_conceptscheme_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual(2, len(concepts))

    def test_get_conceptscheme_concepts_search_dfs_star_label(self):
        request = self._get_dummy_request({
            'type': 'concept',
            'mode': 'dijitFilteringSelect',
            'label': '*iks',
            'language': 'nl-BE'
        })
        request.matchdict = {
            'scheme_id': 'TREES'
        }
        pv = self._get_provider_view(request)
        concepts = pv.get_conceptscheme_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual(1, len(concepts))

    def test_get_conceptscheme_concepts_search_dfs_star_label_star(self):
        request = self._get_dummy_request({
            'type': 'concept',
            'mode': 'dijitFilteringSelect',
            'label': '*Larik*',
            'language': 'nl-BE'
        })
        request.matchdict = {
            'scheme_id': 'TREES'
        }
        pv = self._get_provider_view(request)
        concepts = pv.get_conceptscheme_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual(1, len(concepts))

    def test_get_concept(self):
        request = self._get_dummy_request()
        request.matchdict = {
            'scheme_id': 'TREES',
            'c_id': 1
        }
        pv = self._get_provider_view(request)
        concept = pv.get_concept()
        self.assertIsInstance(concept, Concept)
        self.assertEqual(1, concept.id)

    def test_get_unexsisting_concept(self):
        request = self._get_dummy_request()
        request.matchdict = {
            'scheme_id': 'TREES',
            'c_id': 123456789
        }
        pv = self._get_provider_view(request)
        concept = pv.get_concept()
        self.assertIsInstance(concept, HTTPNotFound)

    def test_get_concept_unexisting_conceptscheme(self):
        request = self._get_dummy_request()
        request.matchdict = {
            'scheme_id': 'PARROTS',
            'c_id': 1
        }
        pv = self._get_provider_view(request)
        concept = pv.get_concept()
        self.assertIsInstance(concept, HTTPNotFound)

    def test_get_concept_display_children(self):
        request = self._get_dummy_request()
        request.matchdict = {
            'scheme_id': 'TREES',
            'c_id': 1
        }
        request.params = {
            'language': 'nl-BE'
        }
        pv = self._get_provider_view(request)
        children = pv.get_concept_display_children()
        self.assertIsInstance(children, list)
        for c in children:
            self.assertIn('id', c)
            self.assertIn('uri', c)
            self.assertIn('label', c)
            self.assertIn('type', c)

    def test_get_concept_display_children_language(self):
        request = self._get_dummy_request({'language': 'nl-BE'})
        request.matchdict = {
            'scheme_id': 'TREES',
            'c_id': 3
        }
        pv = self._get_provider_view(request)
        children = pv.get_concept_display_children()
        request_locale= self._get_dummy_request()
        request_locale.locale_name = 'en'
        request_locale.matchdict = {
            'scheme_id': 'TREES',
            'c_id': 3
        }
        pv_locale = self._get_provider_view(request_locale)
        children_locale = pv_locale.get_concept_display_children()
        self.assertEqual(children[0]['id'], children_locale[0]['id'])
        self.assertNotEqual(children[0]['label'], children_locale[0]['label'])

    def test_get_unexsisting_concept_display_children(self):
        request = self._get_dummy_request()
        request.matchdict = {
            'scheme_id': 'TREES',
            'c_id': 123456789
        }
        pv = self._get_provider_view(request)
        concept = pv.get_concept_display_children()
        self.assertIsInstance(concept, HTTPNotFound)

    def test_get_concept_display_children_unexisting_conceptscheme(self):
        request = self._get_dummy_request()
        request.matchdict = {
            'scheme_id': 'PARROTS',
            'c_id': 1
        }
        pv = self._get_provider_view(request)
        concept = pv.get_concept_display_children()
        self.assertIsInstance(concept, HTTPNotFound)

    def test_get_concept_expand(self):
        request = self._get_dummy_request()
        request.matchdict = {
            'scheme_id': 'TREES',
            'c_id': 1
        }
        pv = self._get_provider_view(request)
        expanded = pv.get_expand()
        self.assertIsInstance(expanded, list)
        self.assertIn(1, expanded)

    def test_get_collection_expand(self):
        request = self._get_dummy_request()
        request.matchdict = {
            'scheme_id': 'TREES',
            'c_id': 3
        }
        pv = self._get_provider_view(request)
        expanded = pv.get_expand()
        self.assertIsInstance(expanded, list)
        self.assertIn(1, expanded)
        self.assertIn(2, expanded)
        self.assertNotIn(3, expanded)

    def test_get_expand_no_resource(self):
        request = self._get_dummy_request()
        request.matchdict = {
            'scheme_id': 'TREES',
            'c_id': 'no_resource'
        }
        pv = self._get_provider_view(request)
        expanded = pv.get_expand()
        self.assertIsInstance(expanded, HTTPNotFound)

    def test_get_expand_unexisting_conceptscheme(self):
        request = self._get_dummy_request()
        request.matchdict = {'scheme_id': 'PARROTS'}
        pv = self._get_provider_view(request)
        tc = pv.get_conceptscheme_top_concepts()
        self.assertIsInstance(tc, HTTPNotFound)

    def test_get_top_concepts_unexisting_conceptscheme(self):
        request = self._get_dummy_request()
        request.matchdict = {
            'scheme_id': 'PARROTS',
            'c_id': 1
        }
        pv = self._get_provider_view(request)
        expanded = pv.get_expand()
        self.assertIsInstance(expanded, HTTPNotFound)

    def test_get_top_concepts(self):
        request = self._get_dummy_request()
        request.matchdict = {'scheme_id': 'TREES'}
        pv = self._get_provider_view(request)
        tc = pv.get_conceptscheme_top_concepts()
        self.assertIsInstance(tc, list)
        self.assertEqual(2, len(tc))
        first = tc[0]
        for c in tc:
            self.assertIn('id', c)
            self.assertIn('uri', c)
            self.assertIn('label', c)
            self.assertEqual('concept', c['type'])

    def test_get_top_concepts_language(self):
        request = self._get_dummy_request({'language': 'nl-BE'})
        request.matchdict = {
            'scheme_id': 'TREES',
            'c_id': 1
        }
        pv = self._get_provider_view(request)
        children = pv.get_conceptscheme_top_concepts()
        request_locale= self._get_dummy_request()
        request_locale.locale_name = 'en'
        request_locale.matchdict = {
            'scheme_id': 'TREES',
            'c_id': 1
        }
        pv_locale = self._get_provider_view(request_locale)
        children_locale = pv_locale.get_conceptscheme_top_concepts()
        self.assertEqual(children[0]['id'], children_locale[0]['id'])
        self.assertNotEqual(children[0]['label'], children_locale[0]['label'])

    def test_get_display_top_unexisting_conceptscheme(self):
        request = self._get_dummy_request()
        request.matchdict = {'scheme_id': 'PARROTS'}
        pv = self._get_provider_view(request)
        tc = pv.get_conceptscheme_display_top()
        self.assertIsInstance(tc, HTTPNotFound)

    def test_get_display_top(self):
        request = self._get_dummy_request()
        request.matchdict = {'scheme_id': 'TREES'}
        request.params = {
            'language': 'nl-BE'
        }
        pv = self._get_provider_view(request)
        tc = pv.get_conceptscheme_display_top()
        self.assertIsInstance(tc, list)
        for c in tc:
            self.assertIn('id', c)
            self.assertIn('uri', c)
            self.assertIn('label', c)
            self.assertIn('type', c)

    def test_get_display_top_language(self):
        request = self._get_dummy_request({'language': 'nl-BE'})
        request.matchdict = {
            'scheme_id': 'TREES',
            'c_id': 1
        }
        pv = self._get_provider_view(request)
        children = pv.get_conceptscheme_display_top()
        request_locale= self._get_dummy_request()
        request_locale.locale_name = 'en'
        request_locale.matchdict = {
            'scheme_id': 'TREES',
            'c_id': 1
        }
        pv_locale = self._get_provider_view(request_locale)
        children_locale = pv_locale.get_conceptscheme_display_top()
        self.assertEqual(children[0]['id'], children_locale[0]['id'])
        self.assertNotEqual(children[0]['label'], children_locale[0]['label'])

    def test_get_conceptscheme_concepts_search_sort_id_asc(self):
        request = self._get_dummy_request({
            'sort': '+id',
            'language': 'nl-BE'
        })
        request.matchdict = {'scheme_id': 'TREES'}
        pv = self._get_provider_view(request)
        concepts = pv.get_conceptscheme_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual(1, concepts[0]['id'])

    def test_get_conceptscheme_concepts_search_sort_id_space_is_asc(self):
        request = self._get_dummy_request({
            'sort': ' id',
            'language': 'nl-BE'
        })
        request.matchdict = {'scheme_id': 'TREES'}
        pv = self._get_provider_view(request)
        concepts = pv.get_conceptscheme_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual(1, concepts[0]['id'])

    def test_get_conceptscheme_concepts_search_sort_id_undefined_is_asc(self):
        request = self._get_dummy_request({
            'sort': 'id',
            'language': 'nl-BE'
        })
        request.matchdict = {'scheme_id': 'TREES'}
        pv = self._get_provider_view(request)
        concepts = pv.get_conceptscheme_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual(1, concepts[0]['id'])

    def test_get_conceptscheme_concepts_search_sort_id_desc(self):
        request = self._get_dummy_request({
            'sort': '-id',
            'language': 'nl-BE'
        })
        request.matchdict = {'scheme_id': 'TREES'}
        pv = self._get_provider_view(request)
        concepts = pv.get_conceptscheme_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual(3, concepts[0]['id'])

    def test_get_conceptscheme_concepts_search_sort_label_default(self):
        request = self._get_dummy_request({
            'sort': 'label',
            'language': 'nl-BE'
        })
        request.matchdict = {'scheme_id': 'TREES'}
        pv = self._get_provider_view(request)
        concepts = pv.get_conceptscheme_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual("Bomen per soort", concepts[0]['label'])

    def test_get_conceptscheme_concepts_search_sort_label_asc(self):
        request = self._get_dummy_request({
            'sort': '+label',
            'language': 'nl-BE'
        })
        request.matchdict = {'scheme_id': 'TREES'}
        pv = self._get_provider_view(request)
        concepts = pv.get_conceptscheme_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual("Bomen per soort", concepts[0]['label'])

    def test_get_conceptscheme_concepts_search_sort_label_desc(self):
        request = self._get_dummy_request({
            'sort': '-label',
            'language': 'nl-BE'
        })
        request.matchdict = {'scheme_id': 'TREES'}
        pv = self._get_provider_view(request)
        concepts = pv.get_conceptscheme_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual("De Paardekastanje", concepts[0]['label'])

    def test_get_conceptscheme_concepts_search_sort_sortlabel_asc(self):
        request = self._get_dummy_request({
            'sort': '+sortlabel',
            'language': 'nl-BE'
        })
        request.matchdict = {'scheme_id': 'TREES'}
        pv = self._get_provider_view(request)
        concepts = pv.get_conceptscheme_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual("De Paardekastanje", concepts[0]['label'])

    def test_get_conceptscheme_concepts_search_sort_sortlabel_desc(self):
        request = self._get_dummy_request({
            'sort': '-sortlabel',
            'language': 'nl-BE'
        })
        request.matchdict = {'scheme_id': 'TREES'}
        pv = self._get_provider_view(request)
        concepts = pv.get_conceptscheme_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual("De Lariks", concepts[0]['label'])

    def test_get_conceptscheme_concepts_search_sort_unexisting_field(self):
        request = self._get_dummy_request({
            'sort': '-foo'
        })
        request.matchdict = {'scheme_id': 'TREES'}
        pv = self._get_provider_view(request)
        concepts = pv.get_conceptscheme_concepts()
        self.assertIsInstance(concepts, list)

    def test_get_concept_scheme_concepts_language(self):
        request = self._get_dummy_request({'language': 'nl-BE'})
        request.matchdict = {
            'scheme_id': 'TREES'
        }
        pv = self._get_provider_view(request)
        children = pv.get_conceptscheme_concepts()
        request_locale= self._get_dummy_request()
        request_locale.locale_name = 'en'
        request_locale.matchdict = {
            'scheme_id': 'TREES'
        }
        pv_locale = self._get_provider_view(request_locale)
        children_locale = pv_locale.get_conceptscheme_concepts()
        self.assertEqual(children[0]['id'], children_locale[0]['id'])
        self.assertNotEqual(children[0]['label'], children_locale[0]['label'])

    def test_get_conceptscheme_concepts_search_sort_empty_result(self):
        request = self._get_dummy_request({
            'sort': '-foo',
            'label': 'bar'
        })
        request.matchdict = {'scheme_id': 'TREES'}
        pv = self._get_provider_view(request)
        concepts = pv.get_conceptscheme_concepts()
        self.assertIsInstance(concepts, list)
        self.assertEqual(0, len(concepts))
Example #25
0
class TestConceptView(unittest.TestCase):
    def setUp(self):
        self.config = testing.setUp()
        self.request = testing.DummyRequest()
        self.regis = Registry()
        self.regis.register_provider(provider(1))
        self.request.db = db(self.request)

    def tearDown(self):
        testing.tearDown()

    def test_passing_view(self):
        request = self.request
        request.matchdict['scheme_id'] = 'TREES'
        request.matchdict['c_id'] = '1'
        request.skos_registry = self.regis
        atramhasisview = AtramhasisView(request)
        info = atramhasisview.concept_view()
        self.assertIsNotNone(info['concept'])
        self.assertEqual(info['conceptType'], 'Concept')
        self.assertEqual(info['scheme_id'], 'TREES')

    def test_passing_collection_view(self):
        request = self.request
        request.matchdict['scheme_id'] = 'TREES'
        request.matchdict['c_id'] = '3'
        request.skos_registry = self.regis
        atramhasisview = AtramhasisView(request)
        info = atramhasisview.concept_view()
        self.assertIsNotNone(info['concept'])
        self.assertEqual(info['conceptType'], 'Collection')
        self.assertEqual(info['scheme_id'], 'TREES')

    def test_provider_not_found(self):
        request = self.request
        request.matchdict['scheme_id'] = 'ZZ'
        request.matchdict['c_id'] = '1'
        request.skos_registry = self.regis
        error_raised = False
        try:
            atramhasisview = AtramhasisView(request)
            atramhasisview.concept_view()
        except ConceptSchemeNotFoundException as e:
            error_raised = True
            self.assertIsNotNone(e.__str__())
        self.assertTrue(error_raised)

    def test_not_found(self):
        request = self.request
        request.matchdict['scheme_id'] = 'TREES'
        request.matchdict['c_id'] = '666'
        request.skos_registry = self.regis
        error_raised = False
        try:
            atramhasisview = AtramhasisView(request)
            atramhasisview.concept_view()
        except ConceptNotFoundException as e:
            error_raised = True
            self.assertIsNotNone(e.__str__())
        self.assertTrue(error_raised)

    def test_no_type(self):
        request = self.request
        request.matchdict['scheme_id'] = 'TREES'
        request.matchdict['c_id'] = '555'
        request.skos_registry = self.regis
        atramhasisview = AtramhasisView(request)
        info = atramhasisview.concept_view()
        self.assertEqual(info.status_int, 500)
Example #26
0
class TestJsonRenderer(unittest.TestCase):

    def setUp(self):
        self.concept = Concept()
        self.concept.type = 'concept'
        self.concept.id = 11
        self.concept.concept_id = 101
        self.concept.uri = 'urn:x-atramhasis-demo:TREES:101'
        self.concept.conceptscheme_id = 1

        notes = []
        note = Note(note='test note', notetype_id='example', language_id='en')
        note2 = Note(note='note def', notetype_id='definition', language_id='en')
        notes.append(note)
        notes.append(note2)
        self.concept.notes = notes

        labels = []
        label = Label(label='een label', labeltype_id='prefLabel', language_id='nl')
        label2 = Label(label='other label', labeltype_id='altLabel', language_id='en')
        label3 = Label(label='and some other label', labeltype_id='altLabel', language_id='en')
        labels.append(label)
        labels.append(label2)
        labels.append(label3)
        self.concept.labels = labels

        sources = []
        source = Source('Van Daele K. 2009')
        sources.append(source)
        self.concept.sources = sources

        matches = []
        match = Match()
        match.matchtype = MatchType(name='closeMatch', description='test')
        match.uri = 'urn:somethingelse:st1'
        matches.append(match)
        match2 = Match()
        match2.matchtype = MatchType(name='closeMatch', description='test')
        match2.uri = 'urn:somethingelse:st2'
        matches.append(match2)
        match3 = Match()
        match3.matchtype = MatchType(name='exactMatch', description='test')
        match3.uri = 'urn:something:thingy'
        matches.append(match3)
        self.concept.matches = matches

        self.collection = Collection()
        self.collection.type = 'collection'
        self.collection.id = 12
        self.collection.concept_id = 102
        self.collection.uri = 'urn:x-atramhasis-demo:TREES:102'
        self.collection.conceptscheme_id = 1

        self.conceptscheme = ConceptScheme()
        self.conceptscheme.id = 1
        self.conceptscheme.labels = labels
        self.conceptscheme.notes = notes
        self.conceptscheme.sources = sources
        self.conceptscheme.uri = None

        self.regis = Registry()
        self.regis.register_provider(trees)
        self.request = testing.DummyRequest()
        self.request.skos_registry = self.regis
        self.request.matchdict = {'scheme_id': 'TREES'}

        self.concept.member_of.add(self.collection)
        self.collection.members.add(self.concept)

    def test_label_adapter(self):
        from atramhasis.renderers import label_adapter
        l = self.concept.labels[2]
        label = label_adapter(l, {})
        self.assertIsInstance(label, dict)
        self.assertEqual(label['label'], 'and some other label')
        self.assertEqual(label['type'], 'altLabel')
        self.assertEqual(label['language'], 'en')

    def test_note_adapter(self):
        from atramhasis.renderers import note_adapter
        n = self.concept.notes[0]
        note = note_adapter(n, {})
        self.assertIsInstance(note, dict)
        self.assertEqual(note['note'], 'test note')
        self.assertEqual(note['type'], 'example')
        self.assertEqual(note['language'], 'en')

    def test_source_adapter(self):
        from atramhasis.renderers import source_adapter
        s = self.concept.sources[0]
        source = source_adapter(s, {})
        self.assertIsInstance(source, dict)
        self.assertEqual(source['citation'], 'Van Daele K. 2009')

    def test_concept_adapter(self):
        from atramhasis.renderers import concept_adapter
        c = self.concept
        concept = concept_adapter(c, {})
        self.assertIsInstance(concept, dict)
        self.assertEqual(concept['id'], 101)
        self.assertEqual(concept['type'], 'concept')
        self.assertEqual(concept['uri'], 'urn:x-atramhasis-demo:TREES:101')
        self.assertIsNotNone(concept['label'], 'een label')
        self.assertIsInstance(concept['labels'], list)
        self.assertEqual(len(concept['labels']), 3)
        self.assertIsInstance(concept['notes'], list)
        self.assertEqual(len(concept['notes']), 2)
        self.assertIsInstance(concept['sources'], list)
        self.assertEqual(len(concept['sources']), 1)
        self.assertIsInstance(concept['member_of'], list)
        self.assertEqual(len(concept['member_of']), 1)
        self.assertIsInstance(concept['narrower'], list)
        self.assertEqual(len(concept['narrower']), 0)
        self.assertIsInstance(concept['broader'], list)
        self.assertEqual(len(concept['broader']), 0)
        self.assertIsInstance(concept['related'], list)
        self.assertEqual(len(concept['related']), 0)
        self.assertIsInstance(concept['matches'], dict)
        self.assertEqual(len(concept['matches']['exact']), 1)
        self.assertEqual(len(concept['matches']['close']), 2)

    def test_collection_adapter(self):
        from atramhasis.renderers import collection_adapter
        c = self.collection
        collection = collection_adapter(c, {})
        self.assertIsInstance(collection, dict)
        self.assertEqual(collection['id'], 102)
        self.assertEqual(collection['type'], 'collection')
        self.assertEqual(collection['uri'], 'urn:x-atramhasis-demo:TREES:102')
        self.assertIsNone(collection['label'])
        self.assertIsInstance(collection['labels'], list)
        self.assertEqual(len(collection['labels']), 0)
        self.assertIsInstance(collection['member_of'], list)
        self.assertEqual(len(collection['member_of']), 0)
        self.assertIsInstance(collection['members'], list)
        self.assertEqual(len(collection['members']), 1)

    def test_map_relation_concept(self):
        from atramhasis.renderers import map_relation
        c = self.concept
        relation = map_relation(c)
        self.assertIsInstance(relation, dict)
        self.assertEqual(relation['id'], 101)
        self.assertEqual(relation['type'], 'concept')
        self.assertEqual(relation['uri'], 'urn:x-atramhasis-demo:TREES:101')
        self.assertIsNotNone(relation['label'], 'een label')
        self.assertIsInstance(relation['labels'], list)
        self.assertEqual(len(relation['labels']), 3)
        self.assertRaises(KeyError, lambda: relation['notes'])
        self.assertRaises(KeyError, lambda: relation['member_of'])
        self.assertRaises(KeyError, lambda: relation['narrower'])
        self.assertRaises(KeyError, lambda: relation['broader'])
        self.assertRaises(KeyError, lambda: relation['related'])

    def test_map_relation_collection(self):
        from atramhasis.renderers import map_relation
        c = self.collection
        relation = map_relation(c)
        self.assertIsInstance(relation, dict)
        self.assertEqual(relation['id'], 102)
        self.assertEqual(relation['type'], 'collection')
        self.assertEqual(relation['uri'], 'urn:x-atramhasis-demo:TREES:102')
        self.assertIsNone(relation['label'])
        self.assertIsInstance(relation['labels'], list)
        self.assertEqual(len(relation['labels']), 0)
        self.assertRaises(KeyError, lambda: relation['members'])
        self.assertRaises(KeyError, lambda: relation['member_of'])

    def test_language_adaptor(self):
        from atramhasis.renderers import language_adaptor
        l = Language(id='af', name='Afrikaans')
        res = language_adaptor(l, None)
        self.assertIsNotNone(res)
        self.assertIsInstance(res, dict)
        self.assertEqual(res['id'], 'af')
        self.assertEqual(res['name'], 'Afrikaans')

    def test_conceptscheme_adapter(self):
        from atramhasis.renderers import conceptscheme_adapter
        c = self.conceptscheme
        conceptscheme = conceptscheme_adapter(c, self.request)
        self.assertGreater(len(conceptscheme['notes']), 0)
        self.assertGreater(len(conceptscheme['labels']), 0)
        self.assertGreater(len(conceptscheme['sources']), 0)
        self.assertIsNone(conceptscheme['uri'])
        self.assertEqual('een label', conceptscheme['label'])
        self.assertEqual(1, conceptscheme['id'])
        self.assertEqual(0, len(conceptscheme['subject']))
        self.assertIsInstance(conceptscheme, dict)
class TestJsonRenderer(unittest.TestCase):
    def setUp(self):
        self.concept = Concept()
        self.concept.type = 'concept'
        self.concept.id = 11
        self.concept.concept_id = 101
        self.concept.uri = 'urn:x-atramhasis-demo:TREES:101'
        self.concept.conceptscheme_id = 1

        notes = []
        note = Note(note='test note', notetype_id='example', language_id='en')
        note2 = Note(note='note def',
                     notetype_id='definition',
                     language_id='en')
        notes.append(note)
        notes.append(note2)
        self.concept.notes = notes

        labels = []
        label = Label(label='een label',
                      labeltype_id='prefLabel',
                      language_id='nl')
        label2 = Label(label='other label',
                       labeltype_id='altLabel',
                       language_id='en')
        label3 = Label(label='and some other label',
                       labeltype_id='altLabel',
                       language_id='en')
        labels.append(label)
        labels.append(label2)
        labels.append(label3)
        self.concept.labels = labels

        sources = []
        source = Source('Van Daele K. 2009')
        sources.append(source)
        self.concept.sources = sources

        matches = []
        match = Match()
        match.matchtype = MatchType(name='closeMatch', description='test')
        match.uri = 'urn:somethingelse:st1'
        matches.append(match)
        match2 = Match()
        match2.matchtype = MatchType(name='closeMatch', description='test')
        match2.uri = 'urn:somethingelse:st2'
        matches.append(match2)
        match3 = Match()
        match3.matchtype = MatchType(name='exactMatch', description='test')
        match3.uri = 'urn:something:thingy'
        matches.append(match3)
        self.concept.matches = matches

        self.collection = Collection()
        self.collection.type = 'collection'
        self.collection.id = 12
        self.collection.concept_id = 102
        self.collection.uri = 'urn:x-atramhasis-demo:TREES:102'
        self.collection.conceptscheme_id = 1

        self.conceptscheme = ConceptScheme()
        self.conceptscheme.id = 1
        self.conceptscheme.labels = labels
        self.conceptscheme.notes = notes
        self.conceptscheme.sources = sources
        self.conceptscheme.uri = None

        self.regis = Registry()
        self.regis.register_provider(trees)
        self.request = testing.DummyRequest()
        self.request.skos_registry = self.regis
        self.request.matchdict = {'scheme_id': 'TREES'}
        self.request.locale_name = 'nl'

        self.concept.member_of.add(self.collection)
        self.collection.members.add(self.concept)

    def test_label_adapter(self):
        from atramhasis.renderers import label_adapter
        l = self.concept.labels[2]
        label = label_adapter(l, {})
        self.assertIsInstance(label, dict)
        self.assertEqual(label['label'], 'and some other label')
        self.assertEqual(label['type'], 'altLabel')
        self.assertEqual(label['language'], 'en')

    def test_note_adapter(self):
        from atramhasis.renderers import note_adapter
        n = self.concept.notes[0]
        note = note_adapter(n, {})
        self.assertIsInstance(note, dict)
        self.assertEqual(note['note'], 'test note')
        self.assertEqual(note['type'], 'example')
        self.assertEqual(note['language'], 'en')

    def test_source_adapter(self):
        from atramhasis.renderers import source_adapter
        s = self.concept.sources[0]
        source = source_adapter(s, {})
        self.assertIsInstance(source, dict)
        self.assertEqual(source['citation'], 'Van Daele K. 2009')

    def test_concept_adapter(self):
        from atramhasis.renderers import concept_adapter
        c = self.concept
        concept = concept_adapter(c, self.request)
        self.assertIsInstance(concept, dict)
        self.assertEqual(concept['id'], 101)
        self.assertEqual(concept['type'], 'concept')
        self.assertEqual(concept['uri'], 'urn:x-atramhasis-demo:TREES:101')
        self.assertIsNotNone(concept['label'], 'een label')
        self.assertIsInstance(concept['labels'], list)
        self.assertEqual(len(concept['labels']), 3)
        self.assertIsInstance(concept['notes'], list)
        self.assertEqual(len(concept['notes']), 2)
        self.assertIsInstance(concept['sources'], list)
        self.assertEqual(len(concept['sources']), 1)
        self.assertIsInstance(concept['member_of'], list)
        self.assertEqual(len(concept['member_of']), 1)
        self.assertIsInstance(concept['narrower'], list)
        self.assertEqual(len(concept['narrower']), 0)
        self.assertIsInstance(concept['broader'], list)
        self.assertEqual(len(concept['broader']), 0)
        self.assertIsInstance(concept['related'], list)
        self.assertEqual(len(concept['related']), 0)
        self.assertIsInstance(concept['matches'], dict)
        self.assertEqual(len(concept['matches']['exact']), 1)
        self.assertEqual(len(concept['matches']['close']), 2)

    def test_collection_adapter(self):
        from atramhasis.renderers import collection_adapter
        c = self.collection
        collection = collection_adapter(c, self.request)
        self.assertIsInstance(collection, dict)
        self.assertEqual(collection['id'], 102)
        self.assertEqual(collection['type'], 'collection')
        self.assertEqual(collection['uri'], 'urn:x-atramhasis-demo:TREES:102')
        self.assertIsNone(collection['label'])
        self.assertIsInstance(collection['labels'], list)
        self.assertEqual(len(collection['labels']), 0)
        self.assertIsInstance(collection['member_of'], list)
        self.assertEqual(len(collection['member_of']), 0)
        self.assertIsInstance(collection['members'], list)
        self.assertEqual(len(collection['members']), 1)

    def test_map_relation_concept(self):
        from atramhasis.renderers import map_relation
        c = self.concept
        relation = map_relation(c)
        self.assertIsInstance(relation, dict)
        self.assertEqual(relation['id'], 101)
        self.assertEqual(relation['type'], 'concept')
        self.assertEqual(relation['uri'], 'urn:x-atramhasis-demo:TREES:101')
        self.assertIsNotNone(relation['label'], 'een label')
        self.assertRaises(KeyError, lambda: relation['notes'])
        self.assertRaises(KeyError, lambda: relation['member_of'])
        self.assertRaises(KeyError, lambda: relation['narrower'])
        self.assertRaises(KeyError, lambda: relation['broader'])
        self.assertRaises(KeyError, lambda: relation['related'])

    def test_map_relation_collection(self):
        from atramhasis.renderers import map_relation
        c = self.collection
        relation = map_relation(c)
        self.assertIsInstance(relation, dict)
        self.assertEqual(relation['id'], 102)
        self.assertEqual(relation['type'], 'collection')
        self.assertEqual(relation['uri'], 'urn:x-atramhasis-demo:TREES:102')
        self.assertIsNone(relation['label'])
        self.assertRaises(KeyError, lambda: relation['members'])
        self.assertRaises(KeyError, lambda: relation['member_of'])

    def test_language_adaptor(self):
        from atramhasis.renderers import language_adaptor
        l = Language(id='af', name='Afrikaans')
        res = language_adaptor(l, None)
        self.assertIsNotNone(res)
        self.assertIsInstance(res, dict)
        self.assertEqual(res['id'], 'af')
        self.assertEqual(res['name'], 'Afrikaans')

    def test_conceptscheme_adapter(self):
        from atramhasis.renderers import conceptscheme_adapter
        c = self.conceptscheme
        conceptscheme = conceptscheme_adapter(c, self.request)
        self.assertGreater(len(conceptscheme['notes']), 0)
        self.assertGreater(len(conceptscheme['labels']), 0)
        self.assertGreater(len(conceptscheme['sources']), 0)
        self.assertIsNone(conceptscheme['uri'])
        self.assertEqual('een label', conceptscheme['label'])
        self.assertEqual(1, conceptscheme['id'])
        self.assertEqual(0, len(conceptscheme['subject']))
        self.assertIsInstance(conceptscheme, dict)

    def test_conceptscheme_language_handling(self):
        from atramhasis.renderers import conceptscheme_adapter
        c = self.conceptscheme
        conceptscheme = conceptscheme_adapter(c, self.request)
        self.assertEqual('een label', conceptscheme['label'])
        self.request.locale_name = 'en'
        conceptscheme = conceptscheme_adapter(c, self.request)
        self.assertIn(conceptscheme['label'],
                      ['other label', 'and some other label'])
Example #28
0
class RegistryTests(unittest.TestCase):
    def setUp(self):
        self.reg = Registry()
        self.prov = trees
        self.prov2 = geo

    def tearDown(self):
        self.reg = None
        self.prov = None
        self.prov2 = None

    def test_empty_register_provider(self):
        self.reg.register_provider(self.prov)
        self.assertEquals(self.reg.get_provider('TREES'), self.prov)

    def test_empty_register_removeProvider(self):
        self.assertFalse(self.reg.remove_provider('TREES'))

    def test_empty_getProviders(self):
        self.assertEquals(self.reg.get_providers(), [])
        self.assertEquals(self.reg.get_providers(ids=[]), [])

    def test_empty_getProviderById(self):
        self.assertFalse(self.reg.get_provider('TREES'))
        self.assertFalse(self.reg.get_provider('http://id.trees.org'))

    def test_empty_findConcepts(self):
        self.assertEquals(self.reg.find({}), [])

    def test_empty_getAllConcepts(self):
        self.assertEquals(self.reg.get_all(), [])

    def test_one_provider_register_provider(self):
        self.reg.register_provider(self.prov)
        self.assertEquals(self.reg.get_provider('TREES'), self.prov)
        self.assertEquals(
            self.reg.get_provider('http://id.trees.org'),
            self.prov
        )
        self.reg.register_provider(self.prov2)
        self.assertEquals(self.reg.get_provider('GEOGRAPHY'), self.prov2)
        self.assertEquals(
            self.reg.get_provider('urn:x-skosprovider:geography'),
            self.prov2
        )

    def test_one_provider_register_double_provider(self):
        self.reg.register_provider(self.prov)
        self.assertEquals(self.reg.get_provider('TREES'), self.prov)
        self.assertRaises(
            RegistryException,
            self.reg.register_provider,
            self.prov
        )
        #Change the id, but keep identical URIs
        self.prov.metadata['id'] = 'TREESTOO'
        self.assertRaises(
            RegistryException,
            self.reg.register_provider,
            self.prov
        )
        self.prov.metadata['id'] = 'TREES'

    def test_one_provider_removeProvider(self):
        self.reg.register_provider(self.prov)
        self.assertEquals(self.reg.get_provider('TREES'), self.prov)
        self.reg.remove_provider('TREES')
        self.assertFalse(self.reg.get_provider('TREES'))

    def test_one_provider_removeProviderWithUri(self):
        self.reg.register_provider(self.prov)
        self.assertEquals(self.reg.get_provider('TREES'), self.prov)
        self.reg.remove_provider('http://id.trees.org')
        self.assertFalse(self.reg.get_provider('TREES'))

    def test_one_provider_getProviders(self):
        self.reg.register_provider(self.prov)
        self.assertEquals(self.reg.get_providers(), [self.prov])
        self.assertEquals(self.reg.get_providers(ids=['TREES']), [self.prov])

    def test_one_provider_getProvidersWithIds(self):
        self.reg.register_provider(self.prov)
        self.assertEquals(self.reg.get_providers(ids=['TREES']), [self.prov])
        self.assertEquals(self.reg.get_providers(), [self.prov])
        self.assertEquals(self.reg.get_providers(ids=['GEOGRAPHY']), [])

    def test_one_provider_getProvidersWithUris(self):
        self.reg.register_provider(self.prov)
        self.assertEquals(self.reg.get_providers(ids=['http://id.trees.org']), [self.prov])
        self.assertEquals(self.reg.get_providers(), [self.prov])
        self.assertEquals(self.reg.get_providers(ids=['urn:x-skosprovider:geography']), [])

    def test_one_provider_getProvidersWithSubject(self):
        self.reg.register_provider(self.prov)
        self.assertEquals(self.reg.get_providers(subject='something'), [])
        self.assertEquals(self.reg.get_providers(subject='biology'), [self.prov])

    def test_one_provider_getPoviderWithId(self):
        self.reg.register_provider(self.prov)
        self.assertEquals(self.reg.get_provider('TREES'), self.prov)

    def test_one_provider_getPoviderWithUri(self):
        self.reg.register_provider(self.prov)
        self.assertEquals(self.reg.get_provider('http://id.trees.org'), self.prov)

    def test_one_provider_findConcepts(self):
        self.reg.register_provider(self.prov)
        self.assertEquals(
            self.reg.find({'label': 'The Larch'}),
            [
                {
                    'id': 'TREES',
                    'concepts': [
                        {
                            'id': '1',
                            'uri': 'http://id.trees.org/1',
                            'type': 'concept',
                            'label': 'De Lariks'
                        }
                    ]
                }
            ]
        )

    def test_one_provider_getConceptByUri(self):
        self.reg.register_provider(self.prov)
        c = self.reg.get_by_uri('http://id.trees.org/1')
        self.assertEqual(c.id, '1')
        self.assertEqual(c.uri, 'http://id.trees.org/1')

    def test_one_provider_getConceptByUriDifferentFromConceptScheme(self):
        from skosprovider.skos import ConceptScheme
        from skosprovider.providers import DictionaryProvider
        trees = DictionaryProvider(
            {'id': 'TREES', 'default_language': 'nl'},
            [larch, chestnut, species],
            concept_scheme=ConceptScheme('urn:something')
        )
        self.reg.register_provider(trees)
        c = self.reg.get_by_uri('http://id.trees.org/1')
        self.assertEqual(c.id, '1')
        self.assertEqual(c.uri, 'http://id.trees.org/1')

    def test_one_provider_getConceptByUnexistingUri(self):
        self.reg.register_provider(self.prov)
        c = self.reg.get_by_uri('http://id.thingy.com/123456')
        self.assertFalse(c)

    def test_get_by_invalid_uri(self):
        self.assertRaises(
            ValueError,
            self.reg.get_by_uri,
            None
        )

    def test_one_provider_findConceptsWithProviderid(self):
        self.reg.register_provider(self.prov)
        self.assertEquals(
            self.reg.find({'label': 'The Larch'}, providers=['TREES']),
            [
                {
                    'id': 'TREES',
                    'concepts': [
                        {
                            'id': '1',
                            'uri': 'http://id.trees.org/1',
                            'type': 'concept',
                            'label': 'De Lariks'
                        }
                    ]
                }
            ]
        )
        self.assertEquals(
            self.reg.find({'label': 'The Larch'}, providers=[]),
            []
        )

    def test_one_provider_getAllConcepts(self):
        self.reg.register_provider(self.prov)
        self.assertEquals(
            self.reg.get_all(),
            [
                {
                    'id': 'TREES',
                    'concepts': [
                        {
                            'id': '1',
                            'uri': 'http://id.trees.org/1',
                            'type': 'concept',
                            'label': 'De Lariks'
                        }, {
                            'id': '2',
                            'uri': 'http://id.trees.org/2',
                            'type': 'concept',
                            'label': 'De Paardekastanje'
                        }, {
                            'id': 3,
                            'uri': 'http://id.trees.org/3',
                            'type': 'collection',
                            'label': 'Bomen per soort'
                        }
                    ]
                }
            ]
        )

    def test_one_provider_getAllConceptsDifferentLanguage(self):
        self.reg.register_provider(self.prov)
        self.assertEquals(
                self.reg.get_all(language="en"),
            [
                {
                    'id': 'TREES',
                    'concepts': [
                        {
                            'id': '1',
                            'uri': 'http://id.trees.org/1',
                            'type': 'concept',
                            'label': 'The Larch'
                        }, {
                            'id': '2',
                            'uri': 'http://id.trees.org/2',
                            'type': 'concept',
                            'label': 'The Chestnut'
                        }, {
                            'id': 3,
                            'uri': 'http://id.trees.org/3',
                            'type': 'collection',
                            'label': 'Trees by species'
                        }
                    ]
                }
            ]
        )

    def test_two_providers_findConceptsWithProviderIdAndUri(self):
        self.reg.register_provider(self.prov2)
        self.reg.register_provider(self.prov)
        self.assertEquals(
            self.reg.find({'label': 'The Larch'}, providers=['TREES']),
            self.reg.find({'label': 'The Larch'}, providers=['http://id.trees.org']),
        )

    def test_two_providers_findConceptsProvidersDictionarySyntax(self):
        self.reg.register_provider(self.prov2)
        self.reg.register_provider(self.prov)
        self.assertEquals(
            self.reg.find({'label': 'The Larch'}, providers=['TREES']),
            self.reg.find({'label': 'The Larch'}, providers={'ids': ['http://id.trees.org']}),
        )

    def test_two_providers_findConceptsProvidersDictionarySyntax(self):
        self.reg.register_provider(self.prov2)
        self.reg.register_provider(self.prov)
        self.assertEquals(
            self.reg.find({'label': 'The Larch'}, providers=['TREES']),
            self.reg.find({'label': 'The Larch'}, providers={'ids': ['http://id.trees.org']}),
        )

    def test_one_provider_findConceptsWithSubject(self):
        self.reg.register_provider(self.prov)
        provs = self.reg.get_providers(subject='biology')
        res = [{'id': p.get_vocabulary_id(), 'concepts': p.find({})} for p in provs]
        self.assertEquals(
            res,
            self.reg.find({},subject='biology')
        )

    def test_one_provider_findConceptsWithSubject_language_en(self):
        self.reg.register_provider(self.prov)
        provs = self.reg.get_providers(subject='biology')
        res = [{'id': p.get_vocabulary_id(), 'concepts': p.find({}, language='en')} for p in provs]
        self.assertEquals(
            res,
            self.reg.find({},subject='biology', language='en')
        )

    def test_one_provider_findConceptsWithSubject_language_nl(self):
        self.reg.register_provider(self.prov)
        provs = self.reg.get_providers(subject='biology')
        res = [{'id': p.get_vocabulary_id(), 'concepts': p.find({})} for p in provs]
        self.assertEquals(
            res,
            self.reg.find({},subject='biology', language='nl')
        )
Example #29
0
class TestConceptView(unittest.TestCase):
    def setUp(self):
        self.config = testing.setUp()
        self.config.add_route('concept', pattern='/conceptschemes/{scheme_id}/c/{c_id}', accept='text/html',
                              request_method="GET")
        self.request = testing.DummyRequest()
        self.request.accept = ['text/html']
        self.regis = Registry()
        self.regis.register_provider(provider(1))
        self.request.data_managers = data_managers(self.request)

    def tearDown(self):
        testing.tearDown()

    def test_passing_view(self):
        request = self.request
        request.matchdict['scheme_id'] = 'TREES'
        request.matchdict['c_id'] = '1'
        request.skos_registry = self.regis
        atramhasisview = AtramhasisView(request)
        info = atramhasisview.concept_view()
        self.assertIsNotNone(info['concept'])
        self.assertEqual(info['conceptType'], 'Concept')
        self.assertEqual(info['scheme_id'], 'TREES')

    def test_passing_collection_view(self):
        request = self.request
        request.matchdict['scheme_id'] = 'TREES'
        request.matchdict['c_id'] = '3'
        request.skos_registry = self.regis
        atramhasisview = AtramhasisView(request)
        info = atramhasisview.concept_view()
        self.assertIsNotNone(info['concept'])
        self.assertEqual(info['conceptType'], 'Collection')
        self.assertEqual(info['scheme_id'], 'TREES')

    def test_provider_not_found(self):
        request = self.request
        request.matchdict['scheme_id'] = 'ZZ'
        request.matchdict['c_id'] = '1'
        request.skos_registry = self.regis
        error_raised = False
        try:
            atramhasisview = AtramhasisView(request)
            atramhasisview.concept_view()
        except ConceptSchemeNotFoundException as e:
            error_raised = True
            self.assertIsNotNone(e.__str__())
        self.assertTrue(error_raised)

    def test_not_found(self):
        request = self.request
        request.matchdict['scheme_id'] = 'TREES'
        request.matchdict['c_id'] = '666'
        request.skos_registry = self.regis
        error_raised = False
        try:
            atramhasisview = AtramhasisView(request)
            atramhasisview.concept_view()
        except ConceptNotFoundException as e:
            error_raised = True
            self.assertIsNotNone(e.__str__())
        self.assertTrue(error_raised)

    def test_no_type(self):
        request = self.request
        request.matchdict['scheme_id'] = 'TREES'
        request.matchdict['c_id'] = '555'
        request.skos_registry = self.regis
        atramhasisview = AtramhasisView(request)
        info = atramhasisview.concept_view()
        self.assertEqual(info.status_int, 500)
Example #30
0
class RegistryTests(unittest.TestCase):
    def setUp(self):
        self.reg = Registry()
        self.prov = trees
        self.prov2 = geo

    def tearDown(self):
        self.reg = None
        self.prov = None
        self.prov2 = None

    def test_empty_register_provider(self):
        self.reg.register_provider(self.prov)
        self.assertEquals(self.reg.get_provider('TREES'), self.prov)

    def test_empty_register_removeProvider(self):
        self.assertFalse(self.reg.remove_provider('TREES'))

    def test_empty_getProviders(self):
        self.assertEquals(self.reg.get_providers(), [])
        self.assertEquals(self.reg.get_providers(ids=[]), [])

    def test_empty_getProviderById(self):
        self.assertFalse(self.reg.get_provider('TREES'))

    def test_empty_findConcepts(self):
        self.assertEquals(self.reg.find({}), [])

    def test_empty_getAllConcepts(self):
        self.assertEquals(self.reg.get_all(), [])

    def test_one_provider_register_provider(self):
        self.reg.register_provider(self.prov)
        self.assertEquals(self.reg.get_provider('TREES'), self.prov)
        self.reg.register_provider(self.prov2)
        self.assertEquals(self.reg.get_provider('GEOGRAPHY'), self.prov2)

    def test_one_provider_register_double_provider(self):
        self.reg.register_provider(self.prov)
        self.assertEquals(self.reg.get_provider('TREES'), self.prov)
        self.assertRaises(
            RegistryException,
            self.reg.register_provider,
            self.prov
        )

    def test_one_provider_removeProvider(self):
        self.reg.register_provider(self.prov)
        self.assertEquals(self.reg.get_provider('TREES'), self.prov)
        self.reg.remove_provider('TREES')
        self.assertFalse(self.reg.get_provider('TREES'))

    def test_one_provider_getProviders(self):
        self.reg.register_provider(self.prov)
        self.assertEquals(self.reg.get_providers(), [self.prov])
        self.assertEquals(self.reg.get_providers(ids=['TREES']), [self.prov])

    def test_one_provider_getProvidersWithIds(self):
        self.reg.register_provider(self.prov)
        self.assertEquals(self.reg.get_providers(ids=['TREES']), [self.prov])
        self.assertEquals(self.reg.get_providers(), [self.prov])
        self.assertEquals(self.reg.get_providers(ids=['GEOGRAPHY']), [])

    def test_one_provider_getPoviderWithId(self):
        self.reg.register_provider(self.prov)
        self.assertEquals(self.reg.get_provider('TREES'), self.prov)

    def test_one_provider_findConcepts(self):
        self.reg.register_provider(self.prov)
        self.assertEquals(
            self.reg.find({'label': 'The Larch'}),
            [
                {
                    'id': 'TREES',
                    'concepts': [
                        {
                            'id': '1',
                            'uri': 'http://id.trees.org/1',
                            'type': 'concept',
                            'label': 'De Lariks'
                        }
                    ]
                }
            ]
        )

    def test_one_provider_getConceptByUri(self):
        self.reg.register_provider(self.prov)
        c = self.reg.get_by_uri('http://id.trees.org/1')
        self.assertEqual(c.id, '1')
        self.assertEqual(c.uri, 'http://id.trees.org/1')

    def test_one_provider_getConceptByUnexistingUri(self):
        self.reg.register_provider(self.prov)
        c = self.reg.get_by_uri('http://id.thingy.com/123456')
        self.assertFalse(c)

    def test_one_provider_findConceptsWithProviderid(self):
        self.reg.register_provider(self.prov)
        self.assertEquals(
            self.reg.find({'label': 'The Larch'}, providers=['TREES']),
            [
                {
                    'id': 'TREES',
                    'concepts': [
                        {
                            'id': '1',
                            'uri': 'http://id.trees.org/1',
                            'type': 'concept',
                            'label': 'De Lariks'
                        }
                    ]
                }
            ]
        )
        self.assertEquals(
            self.reg.find({'label': 'The Larch'}, providers=[]),
            []
        )

    def test_one_provider_getAllConcepts(self):
        self.reg.register_provider(self.prov)
        self.assertEquals(
            self.reg.get_all(),
            [
                {
                    'id': 'TREES',
                    'concepts': [
                        {
                            'id': '1',
                            'uri': 'http://id.trees.org/1',
                            'type': 'concept',
                            'label': 'De Lariks'
                        }, {
                            'id': '2',
                            'uri': 'http://id.trees.org/2',
                            'type': 'concept',
                            'label': 'De Paardekastanje'
                        }, {
                            'id': 3,
                            'uri': 'http://id.trees.org/3',
                            'type': 'collection',
                            'label': 'Bomen per soort'
                        }
                    ]
                }
            ]
        )
Example #31
0
class TestConceptView(unittest.TestCase):
    def setUp(self):
        self.config = testing.setUp()
        self.request = testing.DummyRequest()
        self.regis = Registry()
        self.regis.register_provider(provider(1))
        self.request.db = db(self.request)

    def tearDown(self):
        testing.tearDown()

    def test_passing_view(self):
        request = self.request
        request.matchdict['scheme_id'] = 'TREES'
        request.matchdict['c_id'] = '1'
        request.skos_registry = self.regis
        atramhasisview = AtramhasisView(request)
        info = atramhasisview.concept_view()
        self.assertIsNotNone(info['concept'])
        self.assertEqual(info['conceptType'], 'Concept')
        self.assertEqual(info['scheme_id'], 'TREES')

    def test_passing_collection_view(self):
        request = self.request
        request.matchdict['scheme_id'] = 'TREES'
        request.matchdict['c_id'] = '3'
        request.skos_registry = self.regis
        atramhasisview = AtramhasisView(request)
        info = atramhasisview.concept_view()
        self.assertIsNotNone(info['concept'])
        self.assertEqual(info['conceptType'], 'Collection')
        self.assertEqual(info['scheme_id'], 'TREES')

    def test_provider_not_found(self):
        request = self.request
        request.matchdict['scheme_id'] = 'ZZ'
        request.matchdict['c_id'] = '1'
        request.skos_registry = self.regis
        error_raised = False
        try:
            atramhasisview = AtramhasisView(request)
            atramhasisview.concept_view()
        except ConceptSchemeNotFoundException as e:
            error_raised = True
            self.assertIsNotNone(e.__str__())
        self.assertTrue(error_raised)

    def test_not_found(self):
        request = self.request
        request.matchdict['scheme_id'] = 'TREES'
        request.matchdict['c_id'] = '666'
        request.skos_registry = self.regis
        error_raised = False
        try:
            atramhasisview = AtramhasisView(request)
            atramhasisview.concept_view()
        except ConceptNotFoundException as e:
            error_raised = True
            self.assertIsNotNone(e.__str__())
        self.assertTrue(error_raised)

    def test_no_type(self):
        request = self.request
        request.matchdict['scheme_id'] = 'TREES'
        request.matchdict['c_id'] = '555'
        request.skos_registry = self.regis
        atramhasisview = AtramhasisView(request)
        info = atramhasisview.concept_view()
        self.assertEqual(info.status_int, 500)
Example #32
0
class TestConceptView(unittest.TestCase):
    def setUp(self):
        self.config = testing.setUp()
        self.config.add_route('concept', pattern='/conceptschemes/{scheme_id}/c/{c_id}', accept='text/html',
                              request_method="GET")
        self.request = testing.DummyRequest()
        self.request.accept = ['text/html']
        self.regis = Registry()
        self.regis.register_provider(provider(1))
        self.request.data_managers = data_managers(self.request)

    def tearDown(self):
        testing.tearDown()

    def test_passing_view(self):
        request = self.request
        request.matchdict['scheme_id'] = 'TREES'
        request.matchdict['c_id'] = '1'
        request.skos_registry = self.regis
        atramhasisview = AtramhasisView(request)
        info = atramhasisview.concept_view()
        self.assertIsNotNone(info['concept'])
        self.assertEqual(info['conceptType'], 'Concept')
        self.assertEqual(info['scheme_id'], 'TREES')

    def test_passing_collection_view(self):
        request = self.request
        request.matchdict['scheme_id'] = 'TREES'
        request.matchdict['c_id'] = '3'
        request.skos_registry = self.regis
        atramhasisview = AtramhasisView(request)
        info = atramhasisview.concept_view()
        self.assertIsNotNone(info['concept'])
        self.assertEqual(info['conceptType'], 'Collection')
        self.assertEqual(info['scheme_id'], 'TREES')

    def test_provider_not_found(self):
        request = self.request
        request.matchdict['scheme_id'] = 'ZZ'
        request.matchdict['c_id'] = '1'
        request.skos_registry = self.regis
        error_raised = False
        try:
            atramhasisview = AtramhasisView(request)
            atramhasisview.concept_view()
        except ConceptSchemeNotFoundException as e:
            error_raised = True
            self.assertIsNotNone(e.__str__())
        self.assertTrue(error_raised)

    def test_not_found(self):
        request = self.request
        request.matchdict['scheme_id'] = 'TREES'
        request.matchdict['c_id'] = '666'
        request.skos_registry = self.regis
        error_raised = False
        try:
            atramhasisview = AtramhasisView(request)
            atramhasisview.concept_view()
        except ConceptNotFoundException as e:
            error_raised = True
            self.assertIsNotNone(e.__str__())
        self.assertTrue(error_raised)

    def test_no_type(self):
        request = self.request
        request.matchdict['scheme_id'] = 'TREES'
        request.matchdict['c_id'] = '555'
        request.skos_registry = self.regis
        atramhasisview = AtramhasisView(request)
        info = atramhasisview.concept_view()
        self.assertEqual(info.status_int, 500)