1
1
from datetime import datetime
2
2
3
- from elasticsearch_dsl .faceted_search import FacetedSearch , TermsFacet , DateHistogramFacet
3
+ from elasticsearch_dsl .faceted_search import FacetedSearch , TermsFacet , DateHistogramFacet , RangeFacet
4
4
5
5
class CommitSearch (FacetedSearch ):
6
6
doc_types = ['commits' ]
@@ -9,6 +9,7 @@ class CommitSearch(FacetedSearch):
9
9
facets = {
10
10
'files' : TermsFacet (field = 'files' ),
11
11
'frequency' : DateHistogramFacet (field = 'authored_date' , interval = "day" ),
12
+ 'deletions' : RangeFacet (field = 'stats.deletions' , ranges = [('ok' , (None , 1 )), ('good' , (1 , 5 )), ('better' , (5 , None ))])
12
13
}
13
14
14
15
@@ -51,7 +52,13 @@ def test_empty_search_finds_everything(data_client):
51
52
(datetime (2014 , 5 , 2 , 0 , 0 ), 1 , False )
52
53
] == r .facets .frequency
53
54
54
- def test_filters_are_shown_as_selected_and_data_is_filtered (data_client ):
55
+ assert [
56
+ ('ok' , 19 , False ),
57
+ ('good' , 14 , False ),
58
+ ('better' , 19 , False )
59
+ ] == r .facets .deletions
60
+
61
+ def test_term_filters_are_shown_as_selected_and_data_is_filtered (data_client ):
55
62
cs = CommitSearch (filters = {'files' : 'test_elasticsearch_dsl' })
56
63
57
64
r = cs .execute ()
@@ -87,3 +94,16 @@ def test_filters_are_shown_as_selected_and_data_is_filtered(data_client):
87
94
(datetime (2014 , 5 , 1 , 0 , 0 ), 1 , False ),
88
95
(datetime (2014 , 5 , 2 , 0 , 0 ), 1 , False )
89
96
] == r .facets .frequency
97
+
98
+ assert [
99
+ ('ok' , 12 , False ),
100
+ ('good' , 10 , False ),
101
+ ('better' , 13 , False )
102
+ ] == r .facets .deletions
103
+
104
+ def test_range_filters_are_shown_as_selected_and_data_is_filtered (data_client ):
105
+ cs = CommitSearch (filters = {'deletions' : 'better' })
106
+
107
+ r = cs .execute ()
108
+
109
+ assert 19 == r .hits .total
0 commit comments