def test_build_search_query_with_empty_category(self):
        query = "eu gene"
        multi_match_fields = [1,2,3]
        category = ""

        request = testing.DummyRequest()
        request.context = testing.DummyResource()

        self.assertEqual(build_es_search_query(query, multi_match_fields), build_search_query(query, multi_match_fields, category, self.category_filters, request))
    def test_build_search_query_with_no_filters(self):
        query = "eu gene"
        multi_match_fields = [1,2,3]
        category = "locus"

        request = testing.DummyRequest()
        request.context = testing.DummyResource()

        self.assertEqual({
            'filtered': {
                'query': build_es_search_query(query, multi_match_fields),
                'filter': {
                    'bool': {
                        'must': [{'term': {'category': category}}]
                    }
                }
            }
        }, build_search_query(query, multi_match_fields, category, self.category_filters, request))
    def test_build_search_query_with_filters(self):
        query = "eu gene"
        multi_match_fields = [1,2,3]
        category = "locus"

        request = testing.DummyRequest()
        request.context = testing.DummyResource()
        request.params['feature type'] = 'type_1'

        item = self.category_filters[category][0]

        self.assertEqual({
            'filtered': {
                'query': build_es_search_query(query, multi_match_fields),
                'filter': {
                    'bool': {
                        'must': [{'term': {'category': category}}, {'term': {(item[1]+".raw"): request.params.get(item[0])}}]
                    }
                }
            }
        }, build_search_query(query, multi_match_fields, category, self.category_filters, request))