Completed
Push — master ( ddc962...ab2a47 )
by
unknown
49s queued 25s
created

QueryBuilderTest   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 62
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 62
rs 10
wmc 10

10 Methods

Rating   Name   Duplication   Size   Complexity  
A test_if_there_is_a_query_param_as_list_an_or_filter_will_be_added() 0 6 1
A test_a_filtered_query_string_with_filters_can_be_built() 0 8 1
A test_if_there_is_a_query_param_named_concept_filter_can_be_added() 0 5 1
A test_if_there_are_query_params_named_concept_filters_can_be_added() 0 4 1
A test_if_there_are_no_query_params_no_concept_filters_can_be_added() 0 4 1
A test_concept_filters_will_not_be_added_if_query_param_not_available() 0 4 1
A setUp() 0 5 1
A test_if_there_is_a_query_param_named_query_a_query_string_can_be_build_on_all_fields() 0 5 1
A test_if_there_are_no_query_params_a_match_all_query_can_be_built() 0 4 1
A test_if_there_are_query_params_concept_filters_can_be_added() 0 6 1
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
    def test_if_there_are_query_params_concept_filters_can_be_added(self):
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
    def test_if_there_is_a_query_param_as_list_an_or_filter_will_be_added(self):
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