tests.test_searching   A
last analyzed

Complexity

Total Complexity 20

Size/Duplication

Total Lines 195
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 20
eloc 151
dl 0
loc 195
rs 10
c 0
b 0
f 0

19 Functions

Rating   Name   Duplication   Size   Complexity  
A test_method_none() 0 7 1
A test_yadcf_range_number_lt() 0 7 1
A test_yadcf_range_number_range() 0 7 1
A test_method_numeric_lte() 0 7 1
A test_method_numeric_illegal_input() 0 11 2
A test_yadcf_multi_select() 0 8 1
A test_yadcf_range_number_gt() 0 8 1
A test_method_numeric_eq() 0 7 1
A test_method_numeric_gt() 0 7 1
A test_date_lt() 0 8 1
A test_yadcf_range_date() 0 8 1
A test_ilike() 0 7 1
A test_group_by() 0 14 1
A test_string_contains() 0 7 1
A test_method_numeric() 0 7 1
A test_yadcf_autocomplete() 0 8 1
A test_yadcf_select() 0 8 1
A test_like() 0 7 1
A get_result() 0 7 1
1
from sqlalchemy import func
0 ignored issues
show
Coding Style introduced by
This module should have a docstring.

The coding style of this project requires that you add a docstring to this code element. Below, you find an example for methods:

class SomeClass:
    def some_method(self):
        """Do x and return foo."""

If you would like to know more about docstrings, we recommend to read PEP-257: Docstring Conventions.

Loading history...
2
3
from datatables import ColumnDT, DataTables
4
5
from .helpers import create_dt_params
6
from .models import Address, User
7
8
9
def get_result(session, column, search_method, search_value):
0 ignored issues
show
Coding Style introduced by
This function should have a docstring.

The coding style of this project requires that you add a docstring to this code element. Below, you find an example for methods:

class SomeClass:
    def some_method(self):
        """Do x and return foo."""

If you would like to know more about docstrings, we recommend to read PEP-257: Docstring Conventions.

Loading history...
10
    columns = [ColumnDT(column, search_method=search_method)]
11
    query = session.query()
12
    params = create_dt_params(columns)
13
    params['columns[0][search][value]'] = search_value
14
    rowTable = DataTables(params, query, columns)
0 ignored issues
show
Coding Style Naming introduced by
The name rowTable does not conform to the variable naming conventions ((([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$).

This check looks for invalid names for a range of different identifiers.

You can set regular expressions to which the identifiers must conform if the defaults do not match your requirements.

If your project includes a Pylint configuration file, the settings contained in that file take precedence.

To find out more about Pylint, please refer to their site.

Loading history...
15
    return rowTable.output_result()
16
17
18
def test_method_none(session):
0 ignored issues
show
Coding Style introduced by
This function should have a docstring.

The coding style of this project requires that you add a docstring to this code element. Below, you find an example for methods:

class SomeClass:
    def some_method(self):
        """Do x and return foo."""

If you would like to know more about docstrings, we recommend to read PEP-257: Docstring Conventions.

Loading history...
19
    res = get_result(
20
        session=session,
21
        column=User.id,
22
        search_method='none',
23
        search_value='abc')
24
    assert res['recordsFiltered'] == '50'
25
26
27
def test_method_numeric(session):
0 ignored issues
show
Coding Style introduced by
This function should have a docstring.

The coding style of this project requires that you add a docstring to this code element. Below, you find an example for methods:

class SomeClass:
    def some_method(self):
        """Do x and return foo."""

If you would like to know more about docstrings, we recommend to read PEP-257: Docstring Conventions.

Loading history...
28
    res = get_result(
29
        session=session,
30
        column=User.id,
31
        search_method='numeric',
32
        search_value='10')
33
    assert res['recordsFiltered'] == '1'
34
35
36
def test_method_numeric_illegal_input(session):
0 ignored issues
show
Coding Style Naming introduced by
The name test_method_numeric_illegal_input does not conform to the function naming conventions ((([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$).

This check looks for invalid names for a range of different identifiers.

You can set regular expressions to which the identifiers must conform if the defaults do not match your requirements.

If your project includes a Pylint configuration file, the settings contained in that file take precedence.

To find out more about Pylint, please refer to their site.

Loading history...
Coding Style introduced by
This function should have a docstring.

The coding style of this project requires that you add a docstring to this code element. Below, you find an example for methods:

class SomeClass:
    def some_method(self):
        """Do x and return foo."""

If you would like to know more about docstrings, we recommend to read PEP-257: Docstring Conventions.

Loading history...
37
    res = get_result(
38
        session=session,
39
        column=User.id,
40
        search_method='numeric',
41
        search_value='abc')
42
    try:
43
        float('abc')
44
    except ValueError as exc:
45
        expectedError = str(exc)
0 ignored issues
show
Coding Style Naming introduced by
The name expectedError does not conform to the variable naming conventions ((([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$).

This check looks for invalid names for a range of different identifiers.

You can set regular expressions to which the identifiers must conform if the defaults do not match your requirements.

If your project includes a Pylint configuration file, the settings contained in that file take precedence.

To find out more about Pylint, please refer to their site.

Loading history...
46
    assert expectedError in res['error']
0 ignored issues
show
introduced by
The variable expectedError does not seem to be defined for all execution paths.
Loading history...
47
48
49
def test_method_numeric_eq(session):
0 ignored issues
show
Coding Style introduced by
This function should have a docstring.

The coding style of this project requires that you add a docstring to this code element. Below, you find an example for methods:

class SomeClass:
    def some_method(self):
        """Do x and return foo."""

If you would like to know more about docstrings, we recommend to read PEP-257: Docstring Conventions.

Loading history...
50
    res = get_result(
51
        session=session,
52
        column=User.id,
53
        search_method='numeric',
54
        search_value='=10')
55
    assert res['recordsFiltered'] == '1'
56
57
58
def test_method_numeric_gt(session):
0 ignored issues
show
Coding Style introduced by
This function should have a docstring.

The coding style of this project requires that you add a docstring to this code element. Below, you find an example for methods:

class SomeClass:
    def some_method(self):
        """Do x and return foo."""

If you would like to know more about docstrings, we recommend to read PEP-257: Docstring Conventions.

Loading history...
59
    res = get_result(
60
        session=session,
61
        column=User.id,
62
        search_method='numeric',
63
        search_value='>10')
64
    assert res['recordsFiltered'] == '40'
65
66
67
def test_method_numeric_lte(session):
0 ignored issues
show
Coding Style introduced by
This function should have a docstring.

The coding style of this project requires that you add a docstring to this code element. Below, you find an example for methods:

class SomeClass:
    def some_method(self):
        """Do x and return foo."""

If you would like to know more about docstrings, we recommend to read PEP-257: Docstring Conventions.

Loading history...
68
    res = get_result(
69
        session=session,
70
        column=User.id,
71
        search_method='numeric',
72
        search_value='<=10')
73
    assert res['recordsFiltered'] == '10'
74
75
76
def test_yadcf_range_number_gt(session):
0 ignored issues
show
Coding Style introduced by
This function should have a docstring.

The coding style of this project requires that you add a docstring to this code element. Below, you find an example for methods:

class SomeClass:
    def some_method(self):
        """Do x and return foo."""

If you would like to know more about docstrings, we recommend to read PEP-257: Docstring Conventions.

Loading history...
77
    res = get_result(
78
        session=session,
79
        column=User.id,
80
        search_method='yadcf_range_number',
81
        search_value='10-yadcf_delim-')
82
    assert res['recordsFiltered'] == '41'
83
    assert res['yadcf_data_0'] == (1, 50)
84
85
86
def test_yadcf_range_number_lt(session):
0 ignored issues
show
Coding Style introduced by
This function should have a docstring.

The coding style of this project requires that you add a docstring to this code element. Below, you find an example for methods:

class SomeClass:
    def some_method(self):
        """Do x and return foo."""

If you would like to know more about docstrings, we recommend to read PEP-257: Docstring Conventions.

Loading history...
87
    res = get_result(
88
        session=session,
89
        column=User.id,
90
        search_method='yadcf_range_number',
91
        search_value='-yadcf_delim-10')
92
    assert res['recordsFiltered'] == '10'
93
94
95
def test_yadcf_range_number_range(session):
0 ignored issues
show
Coding Style introduced by
This function should have a docstring.

The coding style of this project requires that you add a docstring to this code element. Below, you find an example for methods:

class SomeClass:
    def some_method(self):
        """Do x and return foo."""

If you would like to know more about docstrings, we recommend to read PEP-257: Docstring Conventions.

Loading history...
96
    res = get_result(
97
        session=session,
98
        column=User.id,
99
        search_method='yadcf_range_number',
100
        search_value='10-yadcf_delim-15')
101
    assert res['recordsFiltered'] == '6'
102
103
104
def test_string_contains(session):
0 ignored issues
show
Coding Style introduced by
This function should have a docstring.

The coding style of this project requires that you add a docstring to this code element. Below, you find an example for methods:

class SomeClass:
    def some_method(self):
        """Do x and return foo."""

If you would like to know more about docstrings, we recommend to read PEP-257: Docstring Conventions.

Loading history...
105
    res = get_result(
106
        session=session,
107
        column=Address.description,
108
        search_method='string_contains',
109
        search_value='street')
110
    assert res['recordsFiltered'] == '1'
111
112
113
def test_like(session):
0 ignored issues
show
Coding Style introduced by
This function should have a docstring.

The coding style of this project requires that you add a docstring to this code element. Below, you find an example for methods:

class SomeClass:
    def some_method(self):
        """Do x and return foo."""

If you would like to know more about docstrings, we recommend to read PEP-257: Docstring Conventions.

Loading history...
114
    res = get_result(
115
        session=session,
116
        column=Address.description,
117
        search_method='like',
118
        search_value='%Street%')
119
    assert res['recordsFiltered'] == '1'
120
121
122
def test_ilike(session):
0 ignored issues
show
Coding Style introduced by
This function should have a docstring.

The coding style of this project requires that you add a docstring to this code element. Below, you find an example for methods:

class SomeClass:
    def some_method(self):
        """Do x and return foo."""

If you would like to know more about docstrings, we recommend to read PEP-257: Docstring Conventions.

Loading history...
123
    res = get_result(
124
        session=session,
125
        column=Address.description,
126
        search_method='ilike',
127
        search_value='%street%')
128
    assert res['recordsFiltered'] == '1'
129
130
131
def test_date_lt(session):
0 ignored issues
show
Coding Style introduced by
This function should have a docstring.

The coding style of this project requires that you add a docstring to this code element. Below, you find an example for methods:

class SomeClass:
    def some_method(self):
        """Do x and return foo."""

If you would like to know more about docstrings, we recommend to read PEP-257: Docstring Conventions.

Loading history...
132
    res = get_result(
133
        session=session,
134
        column=User.birthday,
135
        search_method='date',
136
        search_value='<1970-01-03')
137
    print(res)
138
    assert res['recordsFiltered'] == '1'
139
140
141
def test_yadcf_range_date(session):
0 ignored issues
show
Coding Style introduced by
This function should have a docstring.

The coding style of this project requires that you add a docstring to this code element. Below, you find an example for methods:

class SomeClass:
    def some_method(self):
        """Do x and return foo."""

If you would like to know more about docstrings, we recommend to read PEP-257: Docstring Conventions.

Loading history...
142
    res = get_result(
143
        session=session,
144
        column=User.birthday,
145
        search_method='yadcf_range_date',
146
        search_value='1970-01-03-yadcf_delim-1970-01-13')
147
    print(res)
148
    assert res['recordsFiltered'] == '1'
149
150
151
def test_yadcf_autocomplete(session):
0 ignored issues
show
Coding Style introduced by
This function should have a docstring.

The coding style of this project requires that you add a docstring to this code element. Below, you find an example for methods:

class SomeClass:
    def some_method(self):
        """Do x and return foo."""

If you would like to know more about docstrings, we recommend to read PEP-257: Docstring Conventions.

Loading history...
152
    res = get_result(
153
        session=session,
154
        column=Address.description,
155
        search_method='yadcf_autocomplete',
156
        search_value='Avenue')
157
    assert set(res['yadcf_data_0']) == set(['Avenue', 'Road', 'Street'])
158
    assert res['recordsFiltered'] == '1'
159
160
161
def test_yadcf_select(session):
0 ignored issues
show
Coding Style introduced by
This function should have a docstring.

The coding style of this project requires that you add a docstring to this code element. Below, you find an example for methods:

class SomeClass:
    def some_method(self):
        """Do x and return foo."""

If you would like to know more about docstrings, we recommend to read PEP-257: Docstring Conventions.

Loading history...
162
    res = get_result(
163
        session=session,
164
        column=Address.description,
165
        search_method='yadcf_select',
166
        search_value='Road')
167
    assert set(res['yadcf_data_0']) == set(['Avenue', 'Road', 'Street'])
168
    assert res['recordsFiltered'] == '1'
169
170
171
def test_yadcf_multi_select(session):
0 ignored issues
show
Coding Style introduced by
This function should have a docstring.

The coding style of this project requires that you add a docstring to this code element. Below, you find an example for methods:

class SomeClass:
    def some_method(self):
        """Do x and return foo."""

If you would like to know more about docstrings, we recommend to read PEP-257: Docstring Conventions.

Loading history...
172
    res = get_result(
173
        session=session,
174
        column=Address.description,
175
        search_method='yadcf_multi_select',
176
        search_value='Avenue|StreetRoad')
177
    assert set(res['yadcf_data_0']) == set(['Avenue', 'Road', 'Street'])
178
    assert res['recordsFiltered'] == '1'
179
180
181
def test_group_by(session):
182
    """Test group by after a join query."""
183
    columns = [ColumnDT(func.count(User.id)), ColumnDT(Address.id)]
184
185
    query = session.query().\
186
        select_from(User).\
187
        join(Address).\
188
        group_by(Address)
189
190
    params = create_dt_params(columns)
191
    rowTable = DataTables(params, query, columns)
0 ignored issues
show
Coding Style Naming introduced by
The name rowTable does not conform to the variable naming conventions ((([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$).

This check looks for invalid names for a range of different identifiers.

You can set regular expressions to which the identifiers must conform if the defaults do not match your requirements.

If your project includes a Pylint configuration file, the settings contained in that file take precedence.

To find out more about Pylint, please refer to their site.

Loading history...
192
    res = rowTable.output_result()
193
194
    assert len(res['data']) == 3
195