def test_has_filters_return_false(self) -> None:
     """
     Returns false if called with a dictionary that has no values for a valid filter category
     :return:
     """
     self.assertFalse(has_filters(filters={'fake_category': ['db1']}))
     self.assertFalse(has_filters(filters={'tag': []}))
     self.assertFalse(has_filters())
def _search_table(*, search_term: str, page_index: int, filters: Dict,
                  search_type: str) -> Dict[str, Any]:
    """
    Call the search service endpoint and return matching results
    Search service logic defined here:
    https://github.com/lyft/amundsensearchlibrary/blob/master/search_service/api/table.py

    :return: a json output containing search results array as 'results'
    """
    # Default results
    tables = {
        'page_index': int(page_index),
        'results': [],
        'total_results': 0,
    }

    results_dict = {
        'search_term': search_term,
        'msg': '',
        'tables': tables,
    }

    try:
        if has_filters(filters=filters):
            query_json = generate_query_json(filters=filters,
                                             page_index=page_index,
                                             search_term=search_term)
            url_base = app.config[
                'SEARCHSERVICE_BASE'] + SEARCH_TABLE_FILTER_ENDPOINT
            response = request_search(
                url=url_base,
                headers={'Content-Type': 'application/json'},
                method='POST',
                data=json.dumps(query_json))
        else:
            url_base = app.config['SEARCHSERVICE_BASE'] + SEARCH_TABLE_ENDPOINT
            url = f'{url_base}?query_term={search_term}&page_index={page_index}'
            response = request_search(url=url)

        status_code = response.status_code
        if status_code == HTTPStatus.OK:
            results_dict['msg'] = 'Success'
            results = response.json().get('results')
            tables['results'] = [
                map_table_result(result) for result in results
            ]
            tables['total_results'] = response.json().get('total_results')
        else:
            message = 'Encountered error: Search request failed'
            results_dict['msg'] = message
            logging.error(message)

        results_dict['status_code'] = status_code
        return results_dict
    except Exception as e:
        message = 'Encountered exception: ' + str(e)
        results_dict['msg'] = message
        logging.exception(message)
        return results_dict
 def test_has_filters_return_true(self) -> None:
     """
     Returns true if called with a dictionary that has values for a valid filter category
     :return:
     """
     self.assertTrue(
         has_filters(filters=self.expected_transformed_filters,
                     resource='table'))