Completed
Push — master ( a78279...04d974 )
by
unknown
10s
created

QueryBuilderTestVersion6.setUp()   A

Complexity

Conditions 1

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
c 1
b 0
f 0
dl 0
loc 6
rs 9.4285
1
import unittest
2
3
from oe_utils.search.query_builder import QueryBuilder
4
5
6
class QueryBuilderTest(unittest.TestCase):
7
    def setUp(self):
8
        self.query_builder = QueryBuilder({
9
            'param1': 'dummy',
10
            'param2': 'dummy2',
11
            'list-param': ['list-item1', 'list-item2']
12
        })
13
14
    def test_if_there_are_no_query_params_a_match_all_query_can_be_built(self):
15
        query = QueryBuilder().build()
16
17
        self.assertIn('match_all', query)
18
19
    def test_if_there_is_a_query_param_named_query_a_query_string_can_be_build_on_all_fields(self):
20
        query = QueryBuilder({'query': 'dummy'}).build()
21
22
        self.assertEquals(query['query_string']['query'], 'dummy')
23
        self.assertEquals(query['query_string']['default_field'], '_all')
24
25
    def test_if_there_are_no_query_params_no_concept_filters_can_be_added(self):
26
        query_builder = QueryBuilder()
27
28
        self.assertRaises(AttributeError, query_builder.add_concept_filter, '')
29
30 View Code Duplication
    def test_if_there_are_query_params_concept_filters_can_be_added(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
31
        self.query_builder.add_concept_filters(['param1', 'param2'])
32
33
        self.assertEquals(len(self.query_builder.filters), 2)
34
        self.assertEquals(self.query_builder.filters[0]['term']['param1'], 'dummy')
35
        self.assertEquals(self.query_builder.filters[1]['term']['param2'], 'dummy2')
36
37
    def test_concept_filters_will_not_be_added_if_query_param_not_available(self):
38
        self.query_builder.add_concept_filters(['param_not_as_query_param'])
39
40
        self.assertEquals(len(self.query_builder.filters), 0)
41
42
    def test_if_there_are_query_params_named_concept_filters_can_be_added(self):
43
        self.query_builder.add_named_concept_filters({'param1': 'search_term1', 'param2': 'search_term2'})
44
45
        self.assertEquals(len(self.query_builder.filters), 2)
46
47
    def test_if_there_is_a_query_param_named_concept_filter_can_be_added(self):
48
        self.query_builder.add_named_concept_filters({'param1': 'search_term1'})
49
50
        self.assertEquals(len(self.query_builder.filters), 1)
51
        self.assertEquals(self.query_builder.filters[0]['term']['search_term1'], 'dummy')
52
53 View Code Duplication
    def test_if_there_is_a_query_param_as_list_an_or_filter_will_be_added(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
54
        self.query_builder.add_concept_filter('list-param')
55
56
        self.assertEquals(len(self.query_builder.filters), 1)
57
        self.assertEquals(self.query_builder.filters[0]['or'][0]['term']['list-param'], 'list-item1')
58
        self.assertEquals(self.query_builder.filters[0]['or'][1]['term']['list-param'], 'list-item2')
59
60
    def test_a_filtered_query_string_with_filters_can_be_built(self):
61
        self.query_builder.filters = 'dummy-filters'
62
        self.query_builder.query = 'dummy-query'
63
64
        query = self.query_builder.build()
65
66
        self.assertEquals(query['filtered']['filter']['and'], 'dummy-filters')
67
        self.assertEquals(query['filtered']['query'], 'dummy-query')
68
69
70
class QueryBuilderTestVersion6(unittest.TestCase):
71
    def setUp(self):
72
        self.query_builder = QueryBuilder({
73
            'param1': 'dummy',
74
            'param2': 'dummy2',
75
            'list-param': ['list-item1', 'list-item2']
76
        }, es_version='6')
77
78
    def test_if_there_are_no_query_params_a_match_all_query_can_be_built(self):
79
        query = QueryBuilder(es_version='6').build()
80
81
        self.assertEqual({'bool': {'must': {'match_all': {}}}}, query)
82
83
    def test_if_there_is_a_query_param_named_query_a_query_string_can_be_build_on_all_fields(self):
84
        query = QueryBuilder({'query': 'dummy'}, es_version='6').build()
85
86
        self.assertEquals(query['bool']['must']['query_string']['query'], 'dummy')
87
        self.assertEquals(query['bool']['must']['query_string']['default_field'], '*')
88
89
    def test_if_there_are_no_query_params_no_concept_filters_can_be_added(self):
90
        query_builder = QueryBuilder(es_version='6')
91
92
        self.assertRaises(AttributeError, query_builder.add_concept_filter, '')
93
94 View Code Duplication
    def test_if_there_are_query_params_concept_filters_can_be_added(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
95
        self.query_builder.add_concept_filters(['param1', 'param2'])
96
97
        self.assertEquals(len(self.query_builder.filters), 2)
98
        self.assertEquals(self.query_builder.filters[0]['term']['param1'], 'dummy')
99
        self.assertEquals(self.query_builder.filters[1]['term']['param2'], 'dummy2')
100
101
    def test_concept_filters_will_not_be_added_if_query_param_not_available(self):
102
        self.query_builder.add_concept_filters(['param_not_as_query_param'])
103
104
        self.assertEquals(len(self.query_builder.filters), 0)
105
106
    def test_if_there_are_query_params_named_concept_filters_can_be_added(self):
107
        self.query_builder.add_named_concept_filters({'param1': 'search_term1', 'param2': 'search_term2'})
108
109
        self.assertEquals(len(self.query_builder.filters), 2)
110
111
    def test_if_there_is_a_query_param_named_concept_filter_can_be_added(self):
112
        self.query_builder.add_named_concept_filters({'param1': 'search_term1'})
113
114
        self.assertEquals(len(self.query_builder.filters), 1)
115
        self.assertEquals(self.query_builder.filters[0]['term']['search_term1'], 'dummy')
116
117 View Code Duplication
    def test_if_there_is_a_query_param_as_list_an_or_filter_will_be_added(self):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
118
        self.query_builder.add_concept_filter('list-param')
119
120
        self.assertEquals(len(self.query_builder.filters), 1)
121
        self.assertEquals(self.query_builder.filters[0]['bool']['should'][0]['term']['list-param'], 'list-item1')
122
        self.assertEquals(self.query_builder.filters[0]['bool']['should'][1]['term']['list-param'], 'list-item2')
123
124
    def test_a_filtered_query_string_with_filters_can_be_built(self):
125
        self.query_builder.filters = 'dummy-filters'
126
        self.query_builder.query = 'dummy-query'
127
128
        query = self.query_builder.build()
129
130
        self.assertEquals(query['bool']['filter'], 'dummy-filters')
131
        self.assertEquals(query['bool']['must'], 'dummy-query')
132
133