Skip to content

Commit

Permalink
Adding some tests to prove auto quoting works for select and from
Browse files Browse the repository at this point in the history
clauses
  • Loading branch information
lorenzo committed Nov 6, 2013
1 parent df6e8ec commit c036270
Showing 1 changed file with 54 additions and 0 deletions.
54 changes: 54 additions & 0 deletions Cake/Test/TestCase/Database/QueryTest.php
Expand Up @@ -18,6 +18,7 @@

use Cake\Core\Configure;
use Cake\Database\ConnectionManager;
use Cake\Database\Expression\FieldExpression;
use Cake\Database\Query;
use Cake\TestSuite\TestCase;

Expand Down Expand Up @@ -2019,6 +2020,59 @@ public function testAppendDelete() {
$this->assertEquals(' RETURNING id', substr($sql, -13));
}

/**
* Tests automatic identifier quoting in the select clause
*
* @return void
*/
public function testQuotingSelectFieldsAndAlias() {
$this->connection->driver()->autoQuoting(true);
$query = new Query($this->connection);
$sql = $query->select(['something'])->sql();
$this->assertRegExp('/SELECT [`"]something[`"]$/', $sql);

$query = new Query($this->connection);
$sql = $query->select(['foo' => 'something'])->sql();
$this->assertRegExp('/SELECT [`"]something[`"] AS [`"]foo[`"]$/', $sql);

$query = new Query($this->connection);
$sql = $query->select(['foo' => 1])->sql();
$this->assertRegExp('/SELECT 1 AS [`"]foo[`"]$/', $sql);

$query = new Query($this->connection);
$sql = $query->select(['foo' => '1 + 1'])->sql();
$this->assertRegExp('/SELECT [`"]1 \+ 1[`"] AS [`"]foo[`"]$/', $sql);

$query = new Query($this->connection);
$sql = $query->select(['foo' => $query->newExpr()->add('1 + 1')])->sql();
$this->assertRegExp('/SELECT \(1 \+ 1\) AS [`"]foo[`"]$/', $sql);

$query = new Query($this->connection);
$sql = $query->select(['foo' => new FieldExpression('bar')])->sql();
$this->assertRegExp('/[`"]bar[`"]/', $sql);
}

/**
* Tests automatic identifier quoting in the from clause
*
* @return void
*/
public function testQuotingFromAndAlias() {
$this->connection->driver()->autoQuoting(true);
$query = new Query($this->connection);
$sql = $query->select('*')->from(['something'])->sql();
$this->assertRegExp('/FROM [`"]something[`"]/', $sql);

$query = new Query($this->connection);
$sql = $query->select('*')->from(['foo' => 'something'])->sql();
$this->assertRegExp('/FROM [`"]something[`"] AS [`"]foo[`"]$/', $sql);

$query = new Query($this->connection);
$sql = $query->select('*')->from(['foo' => $query->newExpr()->add('bar')])->sql();
$this->assertRegExp('/FROM \(bar\) AS [`"]foo[`"]$/', $sql);
}


/**
* Assertion for comparing a table's contents with what is in it.
*
Expand Down

0 comments on commit c036270

Please sign in to comment.