def test_build_key_for_instance(self): url_params = dict(graph_uri="graph", class_uri="Class", instance_uri="instance") handler = MockHandler(**url_params) params = ParamDict(handler, **url_params) computed = build_instance_key(params) expected = "_@@_@@instance@@expand_uri=1&instance_uri=instance&lang=pt##instance" self.assertEqual(computed, expected)
def test_instance_prefix_is_created_from_instance_id(self): handler = MockHandler() pd = { 'class_uri': None, 'instance_prefix': None, 'class_name': u'Activity', 'class_prefix': None, 'instance_id': u'AdministrationAndSupportService', 'context_name': u'organization', 'graph_uri': None, 'instance_uri': None } response = ParamDict(handler, **pd) self.assertEqual(response['class_uri'], 'http://semantica.globo.com/organization/Activity') self.assertEqual(response['instance_prefix'], 'http://semantica.globo.com/organization/') self.assertEqual(response['class_prefix'], 'http://semantica.globo.com/organization/') self.assertEqual(response['instance_id'], u'AdministrationAndSupportService') self.assertEqual( response['instance_uri'], 'http://semantica.globo.com/organization/Activity/AdministrationAndSupportService' )
def test_assemble_list_json_with_class_prefix(self): handler = MockHandler(uri="http://poke.oioi/company/") params = ParamDict(handler, context_name="company", **LIST_PARAMS) item = { u'class': { u'type': u'uri', u'value': u'http://dbpedia.org/ontology/Company' }, u'label': { u'type': u'literal', u'value': u'Company' } } query_result_dict = {'results': {'bindings': [item]}} computed = get_context.assemble_list_json(params, query_result_dict) expected_context = {'@language': settings.DEFAULT_LANG} expected_items = [{ '@id': u'http://dbpedia.org/ontology/Company', 'resource_id': u'Company', 'title': u'Company', 'class_prefix': u'http://dbpedia.org/ontology/' }] self.assertEqual(computed['@context'], expected_context) self.assertEqual(computed['items'], expected_items) self.assertEqual("http://poke.oioi/company", computed['_base_url'])
def test_do_suggest_with_data(self, mock_get_predicate_ranges, mock_get_subproperties, mock_run_analyze, mock_run_search, mock_build_items, mock_decorate): handler = MockHandler() params = { 'lang': 'pt', 'expand_uri': '0', 'do_item_count': '0', 'per_page': '10', 'page': '0' } query_params = ParamDict(handler, **params) suggest_params = { u'search': { u'target': u'http://semantica.globo.com/upper/isPartOf', u'pattern': u'Globoland', u'graphs': [u'http://semantica.globo.com/place/'], u'classes': [u'http://semantica.globo.com/place/City'], u'fields': [u'http://semantica.globo.com/upper/name', u'http://semantica.globo.com/upper/fullName'] } } computed = suggest.do_suggest(query_params, suggest_params) expected = { '@context': {'@language': 'pt'}, '_base_url': 'http://mock.test.com/', 'items': [ { '@id': u'http://semantica.globo.com/place/City/bc9e708f-35c4-4067-836d-48aaa51d746d', '@type': u'http://semantica.globo.com/place/City', 'title': u'Globoland: is the best', 'type_title': u'Cidade' } ] } self.assertEqual(computed, expected)
def test_without_item_count(self): base_url = "http://api.semantica.dev.globoi.com" param_dict = {"do_item_count": "0", "per_page": "30", "page": "0"} handler = MockHandler(uri=base_url) params = ParamDict(handler, **param_dict) computed = list_all_contexts(params) self.assertTrue("item_count" not in computed)
def test_crud_links_with_params_ok(self): params = { 'instance_id': 'instance', 'context_name': 'context', 'class_name': 'Class' } handler = MockHandler(uri="http://any.uri/context/Class/instance", querystring="lang=en", **params) query_params = ParamDict(handler, **params) class_url = 'http://any.uri/context/Class' computed = crud_links(query_params, class_url) expected = [{ 'href': 'http://any.uri/context/Class/{_resource_id}?instance_prefix={_instance_prefix}&lang=en', 'method': 'DELETE', 'rel': 'delete' }, { 'href': 'http://any.uri/context/Class/{_resource_id}?instance_prefix={_instance_prefix}&lang=en', 'method': 'PUT', 'rel': 'update', 'schema': { '$ref': 'http://any.uri/context/Class/_schema' } }] self.assertEqual(sorted(computed), sorted(expected))
def test_no_context_found(self, mock1): param_dict = {"per_page": "3", "page": "1"} base_url = "http://api.semantica.dev.globoi.com" handler = MockHandler(uri=base_url) params = ParamDict(handler, **param_dict) result = list_all_contexts(params) self.assertEqual(result["items"], [])
def test_self_url(self): params = {'page': 1, 'per_page': 2} handler = MockHandler(uri="http://any.uri") query_params = ParamDict(handler, **params) computed = self_url(query_params) expected = 'http://any.uri' self.assertEqual(expected, computed)
def test_unspecified_context_with_class_uri_must_set_class_name_and_graph_uri( self): handler = MockHandler( querystring="class_uri=http://dbpedia.org/ontology/News") response = ParamDict(handler, context_name="_", class_uri="News") self.assertEqual(response['graph_uri'], 'http://dbpedia.org/ontology/') self.assertEqual(response['class_name'], 'News')
def test_defaults_with_basic_params(self): handler = MockHandler() params = ParamDict(handler, context_name='ctx_name', class_name='klass') self.assertEquals('ctx_name', params.get("context_name")) self.assertEquals('klass', params.get("class_name"))
def test_class_uri_sets_class_prefix_overriding_slug(self): handler = MockHandler() params = ParamDict(handler, context_name="glb", class_uri="base:Conteudo") self.assertEquals(u'http://semantica.globo.com/base/', params.get("class_prefix"))
def test_query_with_prev_and_next_args_with_sort_by_and_lang(self, mock_get_schema): handler = MockHandler(querystring="page=2&per_page=1&sort_by=rdfs:label&lang=en") params = ParamDict(handler, context_name="subject", class_name="Maths", **(LIST_PARAMS)) items = [] computed = build_json(items, params) self.assertQueryStringArgsEqual(computed["_previous_args"], 'per_page=1&page=1&sort_by=rdfs%3Alabel&lang=en') self.assertQueryStringArgsEqual(computed["_next_args"], 'per_page=1&page=3&sort_by=rdfs%3Alabel&lang=en')
def test_to_string_witn_non_default_params(self): url_params = dict(page="1", sort_by="rdfs:label", per_page="10") handler = MockHandler(**url_params) pd = ParamDict(handler, **url_params) self.assertEquals( pd.to_string(), "expand_uri=0&lang=pt&page=1&per_page=10&sort_by=rdfs:label")
def test_instance_uri_and_prefix(self): handler = MockHandler() params = ParamDict(handler, context_name='dbpedia', class_name='klass', instance_id='inst', instance_uri="http://this/should/be/used", instance_prefix="http://this/is/less/important/than/instance_uri") self.assertEquals(params["instance_uri"], "http://this/should/be/used")
def test_initialize(self): handler = MockHandler() pd = ParamDict(handler, context_name="context_name", class_name="class_name") self.assertIn("context_name", pd) self.assertIn("class_name", pd) self.assertEquals("context_name", pd.get("context_name")) self.assertEquals("class_name", pd.get("class_name"))
def test_arguments_o_o1_o2_o3(self): handler = MockHandler(querystring="o=0&o1=1&o2=2&o3=3") param_dict = params.ParamDict(handler) self.assertEqual(param_dict.arguments['o'], '0') self.assertEqual(param_dict.arguments['o1'], '1') self.assertEqual(param_dict.arguments['o2'], '2') self.assertEqual(param_dict.arguments['o3'], '3')
def test_invalid_request_missing_dependent_param(self): handler = MockHandler( querystring="class_prefix=http://someDomain.com/someContext/") self.assertRaises(RequiredParamMissing, ParamDict, handler, context_name='someContext')
def test_class_prefix(self): handler = MockHandler() params = ParamDict(handler, context_name='dbpedia', class_name='klass', class_prefix="http://this/should/be/used/") self.assertEquals(params["class_uri"], "http://this/should/be/used/klass")
def test_class_uri_from_context_and_class(self): handler = MockHandler() params = ParamDict(handler, context_name="dbpedia", class_name="Actor", class_uri=None) self.assertEquals(params["class_uri"], "http://dbpedia.org/ontology/Actor")
def test_override(self): handler = MockHandler( querystring="context_name=dbpedia&class_name=overriden_class_name") params = ParamDict(handler, context_name='dbpedia', class_name="default_class_name", class_prefix=None) self.assertEquals("overriden_class_name", params.get("class_name"))
def test_class_uri_from_context_and_class_with_class_prefix(self): handler = MockHandler(querystring="class_prefix=http://someprefix/") params = ParamDict(handler, context_name='dbpedia', class_name='Actor', class_prefix=None) self.assertEquals(params["class_prefix"], "http://someprefix/") self.assertEquals(params["class_uri"], "http://someprefix/Actor")
def test_invalid_argument_in_request(self): handler = MockHandler(querystring="inexistent_argument=whatever") self.assertRaises(InvalidParam, ParamDict, handler, context_name='dbpedia', class_name="default_class_name", class_prefix=None)
def test_list_classes_with_no_result(self, mocked_graph_exists): get_context.get_one_value = lambda x, y: "0" handler = MockHandler(page="1") params = ParamDict(handler, context_name="context_name", class_name="class_name", **LIST_PARAMS) result = get_context.list_classes(params) self.assertEqual(result["items"], [])
def test_class_name_from_class_uri(self): handler = MockHandler() pd = ParamDict( handler, class_uri='http://somedomain/someGraphName/someClassName') self.assertEquals(pd["class_uri"], "http://somedomain/someGraphName/someClassName") self.assertEquals(pd["class_name"], "someClassName") self.assertEquals(pd["class_prefix"], "http://somedomain/someGraphName/")
def test_ctx_class_inst_id(self): handler = MockHandler() params = ParamDict(handler, context_name='person', class_name='Gender', instance_id="Male", **INSTANCE_PARAMS) self.assertEquals(params["instance_uri"], "http://semantica.globo.com/person/Gender/Male")
def test_valid_json_schema_for_collection(self, mock_cached_schema, mock_settings): handler = MockHandler() query_params = ParamDict( handler, context_name='glb', class_name='Materia', class_prefix='http://semantica.globo.com/base/') schema = collection_json_schema.schema(query_params) self.validate_draft4(schema)
def test_query_with_extras(self, mock_get_schema): handler = MockHandler(querystring="class_prefix=Xubiru") params = ParamDict(handler, context_name="zoo", class_name="Lion", **(LIST_PARAMS)) items = [] something = build_json(items, params) self.assertEqual(something["@context"], {'@language': 'pt'}) self.assertEqual(something["items"], [])
def test_query_superclasses(self): handler = MockHandler() params = ParamDict(handler, class_uri="http://example.onto/City") expected_bindings = [{u'class': {u'type': u'uri', u'value': u'http://example.onto/City'}}, {u'class': {u'type': u'uri', u'value': u'http://example.onto/Place'}}] query = QUERY_SUPERCLASS % params response = self.query(query) self.assertEqual(response["results"]["bindings"], expected_bindings)
def test_last_link(self): params = {'page': 1, 'per_page': 2} handler = MockHandler(uri="http://any.uri") query_params = ParamDict(handler, **params) computed = last_link(query_params, 10) expected = [{ 'href': 'http://any.uri?per_page=2&page=5', 'method': 'GET', 'rel': 'last' }] self.assertEqual(computed, expected)
def test_pagination_without_previous_page(self): params = {'page': 0, 'per_page': 3} handler = MockHandler(uri="http://any.uri/", querystring="page=1&per_page=3") query_params = ParamDict(handler, **params) computed = pagination_items(query_params, 3) self.assertEqual(len(computed), 2) self.assertQueryStringArgsEqual(computed['_first_args'], 'per_page=3&page=1') self.assertQueryStringArgsEqual(computed['_next_args'], 'per_page=3&page=2')