def test_set_facets_negated_filter(): from collections import OrderedDict from encoded.search import set_facets facets = [ ('facet1', {'title': 'Facet 1'}), ] used_filters = OrderedDict(( ('field2!', ['value1']), )) principals = ['group.admin'] doc_types = ['Experiment'] aggs = set_facets(facets, used_filters, principals, doc_types) assert { 'facet1': { 'aggs': { 'facet1': { 'terms': { 'field': 'embedded.facet1.raw', 'min_doc_count': 0, 'size': 100, }, }, }, 'filter': { 'bool': { 'must': [ {'terms': {'principals_allowed.view': ['group.admin']}}, {'terms': {'*****@*****.**': ['Experiment']}}, {'not': {'terms': {'embedded.field2.raw': ['value1']}}}, ], }, }, } } == aggs
def test_set_facets_type_exists(): from collections import OrderedDict from encoded.search import set_facets facets = [ ('field1', {'title': 'Facet 1', 'type': 'exists'}), ('field2', {'title': 'Facet 2', 'type': 'exists'}), ] used_filters = OrderedDict(( ('field1', ['*']), ('field2!', ['*']), )) principals = ['group.admin'] doc_types = ['Experiment'] aggs = set_facets(facets, used_filters, principals, doc_types) assert { 'field1': { 'aggs': { 'field1': { 'filters': { 'filters': { 'yes': { 'exists': {'field': 'embedded.field1.raw'} }, 'no': { 'missing': {'field': 'embedded.field1.raw'} } }, }, }, }, 'filter': { 'bool': { 'must': [ {'terms': {'principals_allowed.view': ['group.admin']}}, {'terms': {'*****@*****.**': ['Experiment']}}, {'missing': {'field': 'embedded.field2.raw'}}, ], }, }, }, 'field2': { 'aggs': { 'field2': { 'filters': { 'filters': { 'yes': { 'exists': {'field': 'embedded.field2.raw'} }, 'no': { 'missing': {'field': 'embedded.field2.raw'} } }, }, }, }, 'filter': { 'bool': { 'must': [ {'terms': {'principals_allowed.view': ['group.admin']}}, {'terms': {'*****@*****.**': ['Experiment']}}, {'exists': {'field': 'embedded.field1.raw'}}, ], }, }, }, } == aggs
def test_set_facets(): from collections import OrderedDict from encoded.search import set_facets facets = [ ('type', {'title': 'Type'}), ('audit.foo', {'title': 'Audit'}), ('facet1', {'title': 'Facet 1'}), ] used_filters = OrderedDict(( ('facet1', ['value1']), ('audit.foo', ['value2']), )) principals = ['group.admin'] doc_types = ['Snowball'] aggs = set_facets(facets, used_filters, principals, doc_types) expected = { 'type': { 'aggs': { 'type': { 'terms': { 'field': 'embedded.@type', 'exclude': ['Item'], 'min_doc_count': 0, 'size': 200, }, }, }, 'filter': { 'bool': { 'must': [ {'terms': {'principals_allowed.view': ['group.admin']}}, {'terms': {'embedded.@type': ['Snowball']}}, {'terms': {'embedded.facet1': ['value1']}}, {'terms': {'audit.foo': ['value2']}}, ], 'must_not': [] }, }, }, 'audit-foo': { 'aggs': { 'audit-foo': { 'terms': { 'field': 'audit.foo', 'min_doc_count': 0, 'size': 200, }, }, }, 'filter': { 'bool': { 'must': [ {'terms': {'principals_allowed.view': ['group.admin']}}, {'terms': {'embedded.@type': ['Snowball']}}, {'terms': {'embedded.facet1': ['value1']}}, ], 'must_not': [] }, }, }, 'facet1': { 'aggs': { 'facet1': { 'terms': { 'field': 'embedded.facet1', 'min_doc_count': 0, 'size': 200, }, }, }, 'filter': { 'bool': { 'must': [ {'terms': {'principals_allowed.view': ['group.admin']}}, {'terms': {'embedded.@type': ['Snowball']}}, {'terms': {'audit.foo': ['value2']}}, ], 'must_not': [] }, }, } } assert(expected == aggs)