summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@owncloud.com>2016-01-26 10:46:03 +0100
committerJoas Schilling <nickvergessen@owncloud.com>2016-01-26 14:56:07 +0100
commitbd444ae3c3d65c7c758d478d99a2e079d3330023 (patch)
tree4a8f89528abf434f5d4b9bd59ba25cd0878593d9 /tests
parent90ce8763788acb5d81aa1011528c6576a0b0d153 (diff)
downloadnextcloud-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.php68
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();
+ }
}