diff options
author | Robin Appelman <robin@icewind.nl> | 2017-02-21 14:48:00 +0100 |
---|---|---|
committer | Robin Appelman <robin@icewind.nl> | 2017-03-30 11:15:03 +0200 |
commit | fee818f49347e332aa59bdbfc82847d7964cc653 (patch) | |
tree | 347a2c1cc70d09a810c348979ac36a4da8a4eb25 /tests/lib/DB | |
parent | 3355fd549f71328afb11f6c07c936219eeaa6059 (diff) | |
download | nextcloud-server-fee818f49347e332aa59bdbfc82847d7964cc653.tar.gz nextcloud-server-fee818f49347e332aa59bdbfc82847d7964cc653.zip |
Add tests for query builder (i)like
Signed-off-by: Robin Appelman <robin@icewind.nl>
Diffstat (limited to 'tests/lib/DB')
-rw-r--r-- | tests/lib/DB/QueryBuilder/ExpressionBuilderDBTest.php | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/tests/lib/DB/QueryBuilder/ExpressionBuilderDBTest.php b/tests/lib/DB/QueryBuilder/ExpressionBuilderDBTest.php new file mode 100644 index 00000000000..c71e83f5fd6 --- /dev/null +++ b/tests/lib/DB/QueryBuilder/ExpressionBuilderDBTest.php @@ -0,0 +1,106 @@ +<?php +/** + * @copyright Copyright (c) 2017 Robin Appelman <robin@icewind.nl> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace Test\DB\QueryBuilder; + +use OC\DB\QueryBuilder\Literal; +use Test\TestCase; + +/** + * @group DB + */ +class ExpressionBuilderDBTest extends TestCase { + /** @var \Doctrine\DBAL\Connection|\OCP\IDBConnection */ + protected $connection; + + protected function setUp() { + parent::setUp(); + + $this->connection = \OC::$server->getDatabaseConnection(); + } + + public function likeProvider() { + $connection = \OC::$server->getDatabaseConnection(); + + return [ + ['foo', 'bar', false], + ['foo', 'foo', true], + ['foo', 'f%', true], + ['foo', '%o', true], + ['foo', '%', true], + ['foo', 'fo_', true], + ['foo', 'foo_', false], + ['foo', $connection->escapeLikeParameter('fo_'), false], + ['foo', $connection->escapeLikeParameter('f%'), false], + ]; + } + + /** + * @dataProvider likeProvider + * + * @param string $param1 + * @param string $param2 + * @param boolean $match + */ + public function testLike($param1, $param2, $match) { + $query = $this->connection->getQueryBuilder(); + + $query->select(new Literal('1')) + ->from('users') + ->where($query->expr()->like($query->createNamedParameter($param1), $query->createNamedParameter($param2))); + + $this->assertEquals($match, $query->execute()->fetchColumn()); + } + + public function ilikeProvider() { + $connection = \OC::$server->getDatabaseConnection(); + + return [ + ['foo', 'bar', false], + ['foo', 'foo', true], + ['foo', 'Foo', true], + ['foo', 'f%', true], + ['foo', '%o', true], + ['foo', '%', true], + ['foo', 'fo_', true], + ['foo', 'foo_', false], + ['foo', $connection->escapeLikeParameter('fo_'), false], + ['foo', $connection->escapeLikeParameter('f%'), false], + ]; + } + + /** + * @dataProvider ilikeProvider + * + * @param string $param1 + * @param string $param2 + * @param boolean $match + */ + public function testILike($param1, $param2, $match) { + $query = $this->connection->getQueryBuilder(); + + $query->select(new Literal('1')) + ->from('users') + ->where($query->expr()->iLike($query->createNamedParameter($param1), $query->createNamedParameter($param2))); + + $this->assertEquals($match, $query->execute()->fetchColumn()); + } +} |