Skip to content
This repository was archived by the owner on Nov 8, 2024. It is now read-only.

Commit 21c764b

Browse files
committed
tests: added unit test verifying the correct runthrough of the query param filtering.
1 parent d19269e commit 21c764b

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ from filterparams import build_parser
4141
url = urlsplit(
4242
'/users?filter[param][name][like][no_brand_name]=doe'
4343
'&filter[param][first_name]=doe%&filter[binding]='
44-
'(!no_brand_name&first_name)&filter[order]=name'
44+
'(!no_brand_name%26first_name)&filter[order]=name'
4545
'&filter[order]=desc(first_name)'
4646
)
4747
params = parse_qs(url.query)
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# -*- encoding: utf-8 -*-
2+
3+
from unittest import TestCase
4+
5+
from urllib.parse import urlsplit, parse_qs
6+
7+
from filterparams import build_parser
8+
from filterparams.obj import And
9+
10+
11+
class TestExample(TestCase):
12+
13+
def test_full_run(self):
14+
url = urlsplit(
15+
'/users?filter[param][name][like][no_brand_name]=doe'
16+
'&filter[param][first_name]=doe%&filter[binding]='
17+
'(!no_brand_name%26first_name)&filter[order]=name'
18+
'&filter[order]=desc(first_name)'
19+
)
20+
params = parse_qs(url.query)
21+
22+
valid_filters = ['eq', 'like']
23+
default_filter = 'eq'
24+
25+
parser = build_parser(
26+
valid_filters=valid_filters,
27+
default_filter=default_filter,
28+
)
29+
30+
query = parser(params)
31+
self.assertIsInstance(
32+
query.param_order,
33+
And,
34+
)
35+
self.assertEqual(
36+
query.orders[0].name,
37+
'name',
38+
)
39+
self.assertEqual(
40+
query.orders[1].name,
41+
'first_name'
42+
)

0 commit comments

Comments
 (0)