def process_tpf_query_text(query_text, raw_repo_uri, call_name, extraMetadata): """Generates a swagger specification item based on the given TPF query file.""" query_metadata = gquery.get_yaml_decorators(query_text) tags = query_metadata['tags'] if 'tags' in query_metadata else [] glogger.debug("Read query tags: " + ', '.join(tags)) summary = query_metadata['summary'] if 'summary' in query_metadata else "" glogger.debug("Read query summary: " + summary) description = query_metadata['description'] if 'description' in query_metadata else "" glogger.debug("Read query description: " + description) method = query_metadata['method'].lower() if 'method' in query_metadata else "get" if method not in ['get', 'post', 'head', 'put', 'delete', 'options', 'connect']: method = "get" pagination = query_metadata['pagination'] if 'pagination' in query_metadata else "" glogger.debug("Read query pagination: " + str(pagination)) endpoint = query_metadata['endpoint'] if 'endpoint' in query_metadata else "" glogger.debug("Read query endpoint: " + endpoint) # If this query allows pagination, add page number as parameter params = [] if pagination: params.append(pageUtils.getSwaggerPaginationDef(pagination)) item = packItem('/' + call_name, method, tags, summary, description, params, query_metadata, extraMetadata) return item
def test_get_static_enumeration(self): rq, _ = self.loader.getTextForName('test-enum') metadata = gquery.get_yaml_decorators(rq) self.assertIn('enumerate', metadata, 'Should contain enumerate') enumeration = gquery.get_enumeration(rq, 'o', 'http://mock-endpoint/sparql', metadata) self.assertIsInstance(enumeration, list, 'Should return a list of values') self.assertEqual(len(enumeration), 2, 'Should have two elements')
def test_get_yaml_decorators(self): rq, _ = self.loader.getTextForName('test-sparql') decorators = gquery.get_yaml_decorators(rq) # Query always exist -- the rest must be present on the file. self.assertIn('query', decorators, 'Should have a query field') self.assertIn('summary', decorators, 'Should have a summary field') self.assertIn('pagination', decorators, 'Should have a pagination field') self.assertIn('enumerate', decorators, 'Should have a enumerate field') self.assertIsInstance( decorators['summary'], six.string_types, 'Summary should be text') self.assertIsInstance( decorators['pagination'], int, 'Pagination should be numeric') self.assertIsInstance( decorators['enumerate'], list, 'Enumerate should be a list')