‪TYPO3CMS  9.5
ExpressionBuilderTest.php
Go to the documentation of this file.
1 <?php
2 declare(strict_types = 1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
20 
24 class ‪ExpressionBuilderTest extends FunctionalTestCase
25 {
29  protected ‪$testExtensionsToLoad = [
30  'typo3/sysext/core/Tests/Functional/Database/Fixtures/Extensions/test_expressionbuilder',
31  ];
32 
37  {
38  $this->importCSVDataSet(__DIR__ . '/../../Fixtures/DataSet/TestExpressionBuilderInSet.csv');
39  $queryBuilder = (new ‪ConnectionPool())->getQueryBuilderForTable('tx_expressionbuildertest');
40  $result = $queryBuilder
41  ->select('uid', 'aCsvField')
42  ->from('tx_expressionbuildertest')
43  ->where(
44  $queryBuilder->expr()->inSet('aCsvField', $queryBuilder->quoteIdentifier('aField'), true)
45  )
46  ->orderBy('uid')
47  ->execute()
48  ->fetchAll();
49  $expected = [
50  0 => [
51  'uid' => 1,
52  'aCsvField' => 'match',
53  ],
54  1 => [
55  'uid' => 2,
56  'aCsvField' => 'match,nomatch',
57  ],
58  2 => [
59  'uid' => 3,
60  'aCsvField' => 'nomatch,match',
61  ],
62  3 => [
63  'uid' => 4,
64  'aCsvField' => 'nomatch1,match,nomatch2',
65  ],
66  // uid 5 missing here!
67  4 => [
68  'uid' => 6,
69  'aCsvField' => '2',
70  ],
71  5 => [
72  'uid' => 7,
73  'aCsvField' => '2,3',
74  ],
75  6 => [
76  'uid' => 8,
77  'aCsvField' => '1,2',
78  ],
79  7 => [
80  'uid' => 9,
81  'aCsvField' => '1,2,3',
82  ],
83  // uid 10 missing here!
84  8 => [
85  'uid' => 11,
86  'aCsvField' => 'wild%card',
87  ],
88  9 => [
89  'uid' => 12,
90  'aCsvField' => 'wild%card,nowild%card',
91  ],
92  10 => [
93  'uid' => 13,
94  'aCsvField' => 'nowild%card,wild%card',
95  ],
96  11 => [
97  'uid' => 14,
98  'aCsvField' => 'nowild%card1,wild%card,nowild%card2',
99  ],
100  ];
101  $this->assertEquals($expected, $result);
102  }
103 
107  public function ‪inSetReturnsExpectedDataSets()
108  {
109  $this->importCSVDataSet(__DIR__ . '/../../Fixtures/DataSet/TestExpressionBuilderInSet.csv');
110  $queryBuilder = (new ‪ConnectionPool())->getQueryBuilderForTable('tx_expressionbuildertest');
111  $result = $queryBuilder
112  ->select('uid', 'aCsvField')
113  ->from('tx_expressionbuildertest')
114  ->where(
115  $queryBuilder->expr()->inSet('aCsvField', $queryBuilder->expr()->literal('match'))
116  )
117  ->orderBy('uid')
118  ->execute()
119  ->fetchAll();
120  $expected = [
121  0 => [
122  'uid' => 1,
123  'aCsvField' => 'match',
124  ],
125  1 => [
126  'uid' => 2,
127  'aCsvField' => 'match,nomatch',
128  ],
129  2 => [
130  'uid' => 3,
131  'aCsvField' => 'nomatch,match',
132  ],
133  3 => [
134  'uid' => 4,
135  'aCsvField' => 'nomatch1,match,nomatch2',
136  ],
137  ];
138  $this->assertEquals($expected, $result);
139  }
140 
145  {
146  $this->importCSVDataSet(__DIR__ . '/../../Fixtures/DataSet/TestExpressionBuilderInSet.csv');
147  $queryBuilder = (new ‪ConnectionPool())->getQueryBuilderForTable('tx_expressionbuildertest');
148  $result = $queryBuilder
149  ->select('uid', 'aCsvField')
150  ->from('tx_expressionbuildertest')
151  ->where(
152  $queryBuilder->expr()->inSet('aCsvField', (string)2)
153  )
154  ->orderBy('uid')
155  ->execute()
156  ->fetchAll();
157  $expected = [
158  0 => [
159  'uid' => 6,
160  'aCsvField' => '2',
161  ],
162  1 => [
163  'uid' => 7,
164  'aCsvField' => '2,3',
165  ],
166  2 => [
167  'uid' => 8,
168  'aCsvField' => '1,2',
169  ],
170  3 => [
171  'uid' => 9,
172  'aCsvField' => '1,2,3',
173  ],
174  ];
175  $this->assertEquals($expected, $result);
176  }
177 
182  {
183  $this->importCSVDataSet(__DIR__ . '/../../Fixtures/DataSet/TestExpressionBuilderInSet.csv');
184  $queryBuilder = (new ‪ConnectionPool())->getQueryBuilderForTable('tx_expressionbuildertest');
185  $result = $queryBuilder
186  ->select('uid', 'aCsvField')
187  ->from('tx_expressionbuildertest')
188  ->where(
189  $queryBuilder->expr()->inSet('aCsvField', $queryBuilder->expr()->literal('wild%card'))
190  )
191  ->orderBy('uid')
192  ->execute()
193  ->fetchAll();
194  $expected = [
195  0 => [
196  'uid' => 11,
197  'aCsvField' => 'wild%card',
198  ],
199  1 => [
200  'uid' => 12,
201  'aCsvField' => 'wild%card,nowild%card',
202  ],
203  2 => [
204  'uid' => 13,
205  'aCsvField' => 'nowild%card,wild%card',
206  ],
207  3 => [
208  'uid' => 14,
209  'aCsvField' => 'nowild%card1,wild%card,nowild%card2',
210  ],
211  ];
212  $this->assertEquals($expected, $result);
213  }
214 
219  {
220  $this->importCSVDataSet(__DIR__ . '/../../Fixtures/DataSet/TestExpressionBuilderInSet.csv');
221  $queryBuilder = (new ‪ConnectionPool())->getQueryBuilderForTable('tx_expressionbuildertest');
222  $result = $queryBuilder
223  ->select('uid', 'aCsvField')
224  ->from('tx_expressionbuildertest')
225  ->where(
226  $queryBuilder->expr()->inSet('aCsvField', $queryBuilder->expr()->literal('wild[card'))
227  )
228  ->orderBy('uid')
229  ->execute()
230  ->fetchAll();
231  $expected = [
232  0 => [
233  'uid' => 16,
234  'aCsvField' => 'wild[card',
235  ],
236  1 => [
237  'uid' => 17,
238  'aCsvField' => 'wild[card,nowild[card',
239  ],
240  2 => [
241  'uid' => 18,
242  'aCsvField' => 'nowild[card,wild[card',
243  ],
244  3 => [
245  'uid' => 19,
246  'aCsvField' => 'nowild[card1,wild[card,nowild[card2',
247  ],
248  ];
249  $this->assertEquals($expected, $result);
250  }
251 
256  {
257  $this->importCSVDataSet(__DIR__ . '/../../Fixtures/DataSet/TestExpressionBuilderInSet.csv');
258  $queryBuilder = (new ‪ConnectionPool())->getQueryBuilderForTable('tx_expressionbuildertest');
259  $result = $queryBuilder
260  ->select('uid', 'aCsvField')
261  ->from('tx_expressionbuildertest')
262  ->where(
263  $queryBuilder->expr()->inSet('aCsvField', $queryBuilder->expr()->literal('wild]card'))
264  )
265  ->orderBy('uid')
266  ->execute()
267  ->fetchAll();
268  $expected = [
269  0 => [
270  'uid' => 21,
271  'aCsvField' => 'wild]card',
272  ],
273  1 => [
274  'uid' => 22,
275  'aCsvField' => 'wild]card,nowild]card',
276  ],
277  2 => [
278  'uid' => 23,
279  'aCsvField' => 'nowild]card,wild]card',
280  ],
281  3 => [
282  'uid' => 24,
283  'aCsvField' => 'nowild]card1,wild]card,nowild]card2',
284  ],
285  ];
286  $this->assertEquals($expected, $result);
287  }
288 
293  {
294  $this->importCSVDataSet(__DIR__ . '/../../Fixtures/DataSet/TestExpressionBuilderInSet.csv');
295  $queryBuilder = (new ‪ConnectionPool())->getQueryBuilderForTable('tx_expressionbuildertest');
296  $result = $queryBuilder
297  ->select('uid', 'aCsvField')
298  ->from('tx_expressionbuildertest')
299  ->where(
300  $queryBuilder->expr()->inSet('aCsvField', $queryBuilder->expr()->literal('wild[]card'))
301  )
302  ->orderBy('uid')
303  ->execute()
304  ->fetchAll();
305  $expected = [
306  0 => [
307  'uid' => 26,
308  'aCsvField' => 'wild[]card',
309  ],
310  1 => [
311  'uid' => 27,
312  'aCsvField' => 'wild[]card,nowild[]card',
313  ],
314  2 => [
315  'uid' => 28,
316  'aCsvField' => 'nowild[]card,wild[]card',
317  ],
318  3 => [
319  'uid' => 29,
320  'aCsvField' => 'nowild[]card1,wild[]card,nowild[]card2',
321  ],
322  ];
323  $this->assertEquals($expected, $result);
324  }
325 
330  {
331  $this->importCSVDataSet(__DIR__ . '/../../Fixtures/DataSet/TestExpressionBuilderInSet.csv');
332  $queryBuilder = (new ‪ConnectionPool())->getQueryBuilderForTable('tx_expressionbuildertest');
333  $result = $queryBuilder
334  ->select('uid', 'aCsvField')
335  ->from('tx_expressionbuildertest')
336  ->where(
337  $queryBuilder->expr()->inSet('aCsvField', $queryBuilder->expr()->literal('wild[foo]card'))
338  )
339  ->orderBy('uid')
340  ->execute()
341  ->fetchAll();
342  $expected = [
343  0 => [
344  'uid' => 31,
345  'aCsvField' => 'wild[foo]card',
346  ],
347  1 => [
348  'uid' => 32,
349  'aCsvField' => 'wild[foo]card,nowild[foo]card',
350  ],
351  2 => [
352  'uid' => 33,
353  'aCsvField' => 'nowild[foo]card,wild[foo]card',
354  ],
355  3 => [
356  'uid' => 34,
357  'aCsvField' => 'nowild[foo]card1,wild[foo]card,nowild[foo]card2',
358  ],
359  ];
360  $this->assertEquals($expected, $result);
361  }
362 
367  {
368  $this->importCSVDataSet(__DIR__ . '/../../Fixtures/DataSet/TestExpressionBuilderInSet.csv');
369  $queryBuilder = (new ‪ConnectionPool())->getQueryBuilderForTable('tx_expressionbuildertest');
370  $result = $queryBuilder
371  ->select('uid', 'aCsvField')
372  ->from('tx_expressionbuildertest')
373  ->where(
374  $queryBuilder->expr()->inSet('aCsvField', $queryBuilder->expr()->literal('wild[%]card'))
375  )
376  ->orderBy('uid')
377  ->execute()
378  ->fetchAll();
379  $expected = [
380  0 => [
381  'uid' => 36,
382  'aCsvField' => 'wild[%]card',
383  ],
384  1 => [
385  'uid' => 37,
386  'aCsvField' => 'wild[%]card,nowild[%]card',
387  ],
388  2 => [
389  'uid' => 38,
390  'aCsvField' => 'nowild[%]card,wild[%]card',
391  ],
392  3 => [
393  'uid' => 39,
394  'aCsvField' => 'nowild[%]card1,wild[%]card,nowild[%]card2',
395  ],
396  ];
397  $this->assertEquals($expected, $result);
398  }
399 }
‪TYPO3\CMS\Core\Tests\Functional\Database\Query\Expression\ExpressionBuilderTest\inSetReturnsExpectedDataSetsIfValueContainsBracket
‪inSetReturnsExpectedDataSetsIfValueContainsBracket()
Definition: ExpressionBuilderTest.php:217
‪TYPO3\CMS\Core\Tests\Functional\Database\Query\Expression\ExpressionBuilderTest\inSetReturnsExpectedDataSetsWithColumn
‪inSetReturnsExpectedDataSetsWithColumn()
Definition: ExpressionBuilderTest.php:35
‪TYPO3\CMS\Core\Tests\Functional\Database\Query\Expression\ExpressionBuilderTest\$testExtensionsToLoad
‪array $testExtensionsToLoad
Definition: ExpressionBuilderTest.php:28
‪TYPO3\CMS\Core\Tests\Functional\Database\Query\Expression\ExpressionBuilderTest\inSetReturnsExpectedDataSetsIfValueContainsLikeWildcard
‪inSetReturnsExpectedDataSetsIfValueContainsLikeWildcard()
Definition: ExpressionBuilderTest.php:180
‪TYPO3\CMS\Core\Tests\Functional\Database\Query\Expression\ExpressionBuilderTest\inSetReturnsExpectedDataSetsIfValueContainsBracketsAroundWord
‪inSetReturnsExpectedDataSetsIfValueContainsBracketsAroundWord()
Definition: ExpressionBuilderTest.php:328
‪TYPO3\CMS\Core\Tests\Functional\Database\Query\Expression\ExpressionBuilderTest\inSetReturnsExpectedDataSetsWithInts
‪inSetReturnsExpectedDataSetsWithInts()
Definition: ExpressionBuilderTest.php:143
‪TYPO3\CMS\Core\Tests\Functional\Database\Query\Expression\ExpressionBuilderTest\inSetReturnsExpectedDataSetsIfValueContainsOpeningAndClosingBracket
‪inSetReturnsExpectedDataSetsIfValueContainsOpeningAndClosingBracket()
Definition: ExpressionBuilderTest.php:291
‪TYPO3\CMS\Core\Tests\Functional\Database\Query\Expression\ExpressionBuilderTest
Definition: ExpressionBuilderTest.php:25
‪TYPO3\CMS\Core\Tests\Functional\Database\Query\Expression\ExpressionBuilderTest\inSetReturnsExpectedDataSets
‪inSetReturnsExpectedDataSets()
Definition: ExpressionBuilderTest.php:106
‪TYPO3\CMS\Core\Tests\Functional\Database\Query\Expression\ExpressionBuilderTest\inSetReturnsExpectedDataSetsIfValueContainsClosingBracket
‪inSetReturnsExpectedDataSetsIfValueContainsClosingBracket()
Definition: ExpressionBuilderTest.php:254
‪TYPO3\CMS\Core\Tests\Functional\Database\Query\Expression
Definition: ExpressionBuilderTest.php:3
‪TYPO3\CMS\Core\Database\ConnectionPool
Definition: ConnectionPool.php:44
‪TYPO3\CMS\Core\Tests\Functional\Database\Query\Expression\ExpressionBuilderTest\inSetReturnsExpectedDataSetsIfValueContainsBracketsAroundLikeWildcard
‪inSetReturnsExpectedDataSetsIfValueContainsBracketsAroundLikeWildcard()
Definition: ExpressionBuilderTest.php:365