@@ -65,40 +65,57 @@ def test_searching(searching_tpl):
65
65
@pytest .mark .django_db
66
66
@pytest .mark .parametrize ('operator' , ['&' , ',' ])
67
67
def test_and (operator ):
68
- email ,
title = '[email protected] ' ,
'book'
69
- comp1 = 'title={0}' .format (title )
70
- comp2 = 'eq(author.email,{0})' .format (email )
71
- query = '{comp1}{op}{comp2}' .format (comp1 = comp1 , op = operator , comp2 = comp2 )
68
+ email ,
title ,
stars = '[email protected] ' ,
'book' ,
10
69
+ comps = [
70
+ 'title={0}' .format (title ),
71
+ 'eq(author.email,{0})' .format (email ),
72
+ 'gt(github_stars,{0})' .format (stars ),
73
+ ]
74
+ query = operator .join (comps )
75
+ query_func_style = 'and({0})' .format (',' .join (comps ))
72
76
73
77
authors = [
74
78
Author .
objects .
create (
email = '[email protected] ' ),
75
79
Author .objects .create (email = email ),
76
80
]
77
- books = [Book .objects .create (author = authors [index ], title = title ) for index in range (2 )]
81
+ books = [
82
+ Book .objects .create (author = authors [0 ], title = title , github_stars = 11 ),
83
+ Book .objects .create (author = authors [1 ], title = 'title' , github_stars = 11 ),
84
+ Book .objects .create (author = authors [1 ], title = title , github_stars = 11 ),
85
+ ]
78
86
79
- expected = [books [1 ]]
87
+ expected = [books [2 ]]
80
88
assert apply_filters (query ) == expected
81
89
assert apply_filters ('{q}{op}{q}' .format (q = query , op = operator )) == expected
82
- assert apply_filters ('and({comp1},{comp2})' . format ( comp1 = comp1 , comp2 = comp2 ) ) == expected
90
+ assert apply_filters (query_func_style ) == expected
83
91
84
92
85
93
@pytest .mark .django_db
86
94
@pytest .mark .parametrize ('operator' , ['|' , ';' ])
87
95
def test_or (operator ):
88
- email ,
title = '[email protected] ' ,
'book'
89
- comp1 = 'title={0}' .format (title )
90
- comp2 = 'eq(author.email,{0})' .format (email )
91
- query = '({comp1}{op}{comp2})' .format (comp1 = comp1 , op = operator , comp2 = comp2 )
96
+ email ,
title ,
stars = '[email protected] ' ,
'book' ,
'10'
97
+ comps = [
98
+ 'title={0}' .format (title ),
99
+ 'eq(author.email,{0})' .format (email ),
100
+ 'gt(github_stars,{0})' .format (stars ),
101
+ ]
102
+ query = '({0})' .format (operator .join (comps ))
103
+ query_func_style = 'or({0})' .format (',' .join (comps ))
92
104
93
105
authors = [
94
106
Author .
objects .
create (
email = '[email protected] ' ),
95
107
Author .objects .create (email = email ),
96
108
]
97
- books = [Book .objects .create (author = authors [index ], title = title ) for index in range (2 )]
109
+ books = [
110
+ Book .objects .create (author = authors [0 ], title = title , github_stars = 2 ),
111
+ Book .objects .create (author = authors [1 ], title = '1' , github_stars = 5 ),
112
+ Book .objects .create (author = authors [0 ], title = '2' , github_stars = 11 ),
113
+ ]
98
114
99
115
expected = books
116
+
100
117
assert apply_filters (query ) == expected
101
- assert apply_filters ('or({comp1},{comp2})' . format ( comp1 = comp1 , comp2 = comp2 ) ) == expected
118
+ assert apply_filters (query_func_style ) == expected
102
119
103
120
104
121
@pytest .mark .django_db
0 commit comments