@@ -85,6 +85,81 @@ final class NetteDatabaseDataSourceTest extends TestCase
8585 Assert::same ([1 ], $ q [1 ]);
8686 }
8787
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+ }
88163
89164 public function testComplexQuery ()
90165 {
0 commit comments