def test_with_distinct_counts_raises_when_queryset_includes_unsupported_options( self): """ Verify that an error is raised if the original queryset includes options that are not supported by our custom Search class. """ dc_queryset = DistinctCountsSearchQuerySet.from_queryset( DSLFacetedSearch()) with pytest.raises(RuntimeError) as err: facet_field = 'start' agg_filter = ESDSLQ('match_all') agg = DateHistogramFacet(field=facet_field, interval='month') dc_queryset.aggs.bucket('_filter_' + facet_field, 'filter', filter=agg_filter).bucket( facet_field, agg.get_aggregation()) dc_queryset.with_distinct_counts('aggregation_key') assert str( err.value ) == 'DistinctCountsSearchQuerySet does not support date facets.' dc_queryset = DistinctCountsSearchQuerySet.from_queryset( DSLFacetedSearch()) with pytest.raises(RuntimeError) as err: facet_field = 'pacing_type' agg_filter = ESDSLQ('match_all') agg = TermsFacet(field=facet_field, order='term') dc_queryset.aggs.bucket('_filter_' + facet_field, 'filter', filter=agg_filter).bucket( facet_field, agg.get_aggregation()) dc_queryset.with_distinct_counts('aggregation_key') assert 'DistinctCountsSearchQuerySet only supports a limited set of field facet options.' in str( err.value)
def test_search_raises_when_called_with_date_facet(self): queryset = DistinctCountsSearchQuerySet( index=CourseRunDocument._index._name) facet_field = 'start' agg_filter = ESDSLQ('match_all') agg = DateHistogramFacet(field=facet_field, interval='month') queryset.aggs.bucket('_filter_' + facet_field, 'filter', filter=agg_filter).bucket(facet_field, agg.get_aggregation()) backend = DistinctCountsElasticsearchQueryWrapper( queryset, 'aggregation_key') querystring = queryset.to_dict() with pytest.raises(RuntimeError) as err: backend.search(querystring) assert 'does not support date facets' in str(err.value)
def test_validate_raises_when_configured_with_date_facet(self): """ Verify that validate raises when Query configured with date facet.""" # The add date facet action on DistinctCountsSearchQuerySet raises, so configure a date facet # on a normal FacetedSearch or Search and then clone it to a DistinctCountsSearchQuerySet. queryset = FacetedSearch(index=CourseRunDocument._index._name) facet_field = 'start' agg_filter = ESDSLQ('match_all') agg = DateHistogramFacet(field=facet_field, interval='month') queryset.aggs.bucket('_filter_' + facet_field, 'filter', filter=agg_filter).bucket(facet_field, agg.get_aggregation()) queryset = queryset._clone(klass=DistinctCountsSearchQuerySet) queryset.aggregation_key = 'aggregation_key' with pytest.raises(RuntimeError) as err: queryset.validate() assert 'does not support date facets' in str(err.value)