diff options
author | Joas Schilling <nickvergessen@owncloud.com> | 2016-01-26 10:46:03 +0100 |
---|---|---|
committer | Joas Schilling <nickvergessen@owncloud.com> | 2016-01-26 14:56:07 +0100 |
commit | bd444ae3c3d65c7c758d478d99a2e079d3330023 (patch) | |
tree | 4a8f89528abf434f5d4b9bd59ba25cd0878593d9 /tests | |
parent | 90ce8763788acb5d81aa1011528c6576a0b0d153 (diff) | |
download | nextcloud-server-bd444ae3c3d65c7c758d478d99a2e079d3330023.tar.gz nextcloud-server-bd444ae3c3d65c7c758d478d99a2e079d3330023.zip |
Add tests for clob comparisons
Diffstat (limited to 'tests')
-rw-r--r-- | tests/lib/db/querybuilder/expressionbuildertest.php | 68 |
1 files changed, 64 insertions, 4 deletions
diff --git a/tests/lib/db/querybuilder/expressionbuildertest.php b/tests/lib/db/querybuilder/expressionbuildertest.php index 0563ff92334..fe5b8492786 100644 --- a/tests/lib/db/querybuilder/expressionbuildertest.php +++ b/tests/lib/db/querybuilder/expressionbuildertest.php @@ -23,6 +23,8 @@ namespace Test\DB\QueryBuilder; use Doctrine\DBAL\Query\Expression\ExpressionBuilder as DoctrineExpressionBuilder; use OC\DB\QueryBuilder\ExpressionBuilder; +use OCP\DB\QueryBuilder\IQueryBuilder; +use Test\TestCase; /** * Class ExpressionBuilderTest @@ -31,21 +33,24 @@ use OC\DB\QueryBuilder\ExpressionBuilder; * * @package Test\DB\QueryBuilder */ -class ExpressionBuilderTest extends \Test\TestCase { +class ExpressionBuilderTest extends TestCase { /** @var ExpressionBuilder */ protected $expressionBuilder; /** @var DoctrineExpressionBuilder */ protected $doctrineExpressionBuilder; + /** @var \Doctrine\DBAL\Connection|\OCP\IDBConnection */ + protected $connection; + protected function setUp() { parent::setUp(); - $connection = \OC::$server->getDatabaseConnection(); + $this->connection = \OC::$server->getDatabaseConnection(); - $this->expressionBuilder = new ExpressionBuilder($connection); + $this->expressionBuilder = new ExpressionBuilder($this->connection); - $this->doctrineExpressionBuilder = new DoctrineExpressionBuilder($connection); + $this->doctrineExpressionBuilder = new DoctrineExpressionBuilder($this->connection); } public function dataComparison() { @@ -342,4 +347,59 @@ class ExpressionBuilderTest extends \Test\TestCase { $actual->__toString() ); } + + public function dataClobComparisons() { + return [ + ['eq', '1', IQueryBuilder::PARAM_STR, 1], + ['neq', '1', IQueryBuilder::PARAM_STR, 2], + ['lt', '2', IQueryBuilder::PARAM_STR, 1], + ['lte', '2', IQueryBuilder::PARAM_STR, 2], + ['gt', '2', IQueryBuilder::PARAM_STR, 1], + ['gte', '2', IQueryBuilder::PARAM_STR, 2], + ['like', '%2%', IQueryBuilder::PARAM_STR, 1], + ['notLike', '%2%', IQueryBuilder::PARAM_STR, 2], + ['in', ['2'], IQueryBuilder::PARAM_STR_ARRAY, 1], + ['notIn', ['2'], IQueryBuilder::PARAM_STR_ARRAY, 2], + ]; + } + + /** + * @dataProvider dataClobComparisons + * @param string $function + * @param mixed $value + * @param mixed $type + * @param int $expected + */ + public function testClobComparisons($function, $value, $type, $expected) { + $appId = $this->getUniqueID('testing'); + $this->createConfig($appId, 1); + $this->createConfig($appId, 2); + $this->createConfig($appId, 3); + + $query = $this->connection->getQueryBuilder(); + $query->select($query->createFunction('COUNT(*) AS `count`')) + ->from('appconfig') + ->where($query->expr()->eq('appid', $query->createNamedParameter($appId))) + ->andWhere(call_user_func([$query->expr(), $function], 'configvalue', $query->createNamedParameter($value, $type))); + $result = $query->execute(); + + $this->assertEquals(['count' => $expected], $result->fetch()); + $result->closeCursor(); + + $query = $this->connection->getQueryBuilder(); + $query->delete('appconfig') + ->where($query->expr()->eq('appid', $query->createNamedParameter($appId))) + ->execute(); + } + + protected function createConfig($appId, $value) { + $query = $this->connection->getQueryBuilder(); + $query->insert('appconfig') + ->values([ + 'appid' => $query->createNamedParameter($appId), + 'configkey' => $query->createNamedParameter((string) $value), + 'configvalue' => $query->createNamedParameter((string) $value), + ]) + ->execute(); + } } |