@@ -85,6 +85,81 @@ final class NetteDatabaseDataSourceTest extends TestCase
85
85
Assert::same ([1 ], $ q [1 ]);
86
86
}
87
87
88
+ public function testApplyFilterText ()
89
+ {
90
+ $ s = new NetteDatabaseDataSource ($ this ->db , 'SELECT * FROM user ' );
91
+ $ filter = new FilterText ($ this ->grid , 'name ' , 'Name ' , ['name ' ]);
92
+ $ filter ->setValue ('text ' );
93
+ $ s ->applyFilterText ($ filter );
94
+ $ q = $ s ->getQuery ();
95
+
96
+ Assert::same ('SELECT * FROM user WHERE (name LIKE ?) ' , $ q [0 ]);
97
+ Assert::same (['%text% ' ], $ q [1 ]);
98
+ }
99
+
100
+ public function testApplyFilterTextDouble ()
101
+ {
102
+ $ s = new NetteDatabaseDataSource ($ this ->db , 'SELECT * FROM user ' );
103
+ $ filter = new FilterText ($ this ->grid , 'name ' , 'Name or id ' , ['name ' , 'id ' ]);
104
+ $ filter ->setValue ('text ' );
105
+ $ s ->applyFilterText ($ filter );
106
+ $ q = $ s ->getQuery ();
107
+
108
+ Assert::same ('SELECT * FROM user WHERE ((name LIKE ?) OR (id LIKE ?)) ' , $ q [0 ]);
109
+ Assert::same (['%text% ' , '%text% ' ], $ q [1 ]);
110
+ }
111
+
112
+ public function testApplyFilterTextSplitWordsSearch ()
113
+ {
114
+ $ s = new NetteDatabaseDataSource ($ this ->db , 'SELECT * FROM user ' );
115
+ $ filter = new FilterText ($ this ->grid , 'name ' , 'Name or id ' , ['name ' , 'id ' ]);
116
+ $ filter ->setValue ('text alternative ' );
117
+ $ s ->applyFilterText ($ filter );
118
+ $ q = $ s ->getQuery ();
119
+
120
+ Assert::same ('SELECT * FROM user WHERE ((name LIKE ? OR name LIKE ?) OR (id LIKE ? OR id LIKE ?)) ' , $ q [0 ]);
121
+ Assert::same (['%text% ' , '%alternative% ' , '%text% ' , '%alternative% ' ], $ q [1 ]);
122
+ }
123
+
124
+ public function testApplyFilterTextSplitWordsSearchDisabled ()
125
+ {
126
+ $ s = new NetteDatabaseDataSource ($ this ->db , 'SELECT * FROM user ' );
127
+ $ filter = new FilterText ($ this ->grid , 'name ' , 'Name or id ' , ['name ' , 'id ' ]);
128
+ $ filter ->setValue ('text alternative ' );
129
+ $ filter ->setSplitWordsSearch (False );
130
+ $ s ->applyFilterText ($ filter );
131
+ $ q = $ s ->getQuery ();
132
+
133
+ Assert::same ('SELECT * FROM user WHERE ((name LIKE ?) OR (id LIKE ?)) ' , $ q [0 ]);
134
+ Assert::same (['%text alternative% ' , '%text alternative% ' ], $ q [1 ]);
135
+ }
136
+
137
+ public function testApplyFilterTextExactSearch ()
138
+ {
139
+ $ s = new NetteDatabaseDataSource ($ this ->db , 'SELECT * FROM user ' );
140
+ $ filter = new FilterText ($ this ->grid , 'name ' , 'Name or id ' , ['name ' , 'id ' ]);
141
+ $ filter ->setValue ('text ' );
142
+ $ filter ->setExactSearch ();
143
+ $ s ->applyFilterText ($ filter );
144
+ $ q = $ s ->getQuery ();
145
+
146
+ Assert::same ('SELECT * FROM user WHERE ((name = ?) OR (id = ?)) ' , $ q [0 ]);
147
+ Assert::same (['text ' , 'text ' ], $ q [1 ]);
148
+ }
149
+
150
+ public function testApplyFilterTextSplitWordsSearchDisabledExact ()
151
+ {
152
+ $ s = new NetteDatabaseDataSource ($ this ->db , 'SELECT * FROM user ' );
153
+ $ filter = new FilterText ($ this ->grid , 'name ' , 'Name or id ' , ['name ' , 'id ' ]);
154
+ $ filter ->setValue ('text with space ' );
155
+ $ filter ->setSplitWordsSearch (False );
156
+ $ filter ->setExactSearch ();
157
+ $ s ->applyFilterText ($ filter );
158
+ $ q = $ s ->getQuery ();
159
+
160
+ Assert::same ('SELECT * FROM user WHERE ((name = ?) OR (id = ?)) ' , $ q [0 ]);
161
+ Assert::same (['text with space ' , 'text with space ' ], $ q [1 ]);
162
+ }
88
163
89
164
public function testComplexQuery ()
90
165
{
0 commit comments