Добавлен цикл проверки сайтов
This commit is contained in:
419
vendor/nilportugues/sql-query-builder/tests/Syntax/WhereTest.php
vendored
Normal file
419
vendor/nilportugues/sql-query-builder/tests/Syntax/WhereTest.php
vendored
Normal file
@ -0,0 +1,419 @@
|
||||
<?php
|
||||
/**
|
||||
* Author: Nil Portugués Calderó <contact@nilportugues.com>
|
||||
* Date: 6/3/14
|
||||
* Time: 12:31 AM.
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace NilPortugues\Tests\Sql\QueryBuilder\Syntax;
|
||||
|
||||
use NilPortugues\Sql\QueryBuilder\Manipulation\Select;
|
||||
use NilPortugues\Sql\QueryBuilder\Syntax\Where;
|
||||
use NilPortugues\Tests\Sql\QueryBuilder\Manipulation\Resources\DummyQuery;
|
||||
|
||||
/**
|
||||
* Class WhereTest.
|
||||
*/
|
||||
class WhereTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* @var Where
|
||||
*/
|
||||
protected $where;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $whereClass = '\NilPortugues\Sql\QueryBuilder\Syntax\Where';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $columnClass = '\NilPortugues\Sql\QueryBuilder\Syntax\Column';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
*/
|
||||
protected $queryException = '\NilPortugues\Sql\QueryBuilder\Manipulation\QueryException';
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
protected function setUp()
|
||||
{
|
||||
$query = new DummyQuery();
|
||||
$query->setTable('users');
|
||||
|
||||
$this->where = new Where($query);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function itShouldBeCloneable()
|
||||
{
|
||||
$this->assertEquals($this->where, clone $this->where);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function itShouldBeEmptyOnConstruct()
|
||||
{
|
||||
$this->assertTrue($this->where->isEmpty());
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function itShouldReturnDefaultConjuctionAnd()
|
||||
{
|
||||
$this->assertSame('AND', $this->where->getConjunction());
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function itShouldReturnDefaultSubWhere()
|
||||
{
|
||||
$this->assertSame(array(), $this->where->getSubWheres());
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function itShouldReturnSubFilter()
|
||||
{
|
||||
$filter = $this->where->subWhere();
|
||||
|
||||
$this->assertSame(array(), $filter->getSubWheres());
|
||||
$this->assertInstanceOf($this->whereClass, $filter);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function itShouldReturnTheSameEqAndEqual()
|
||||
{
|
||||
$column = 'user_id';
|
||||
$value = 1;
|
||||
|
||||
$this->assertSame(
|
||||
$this->where->equals($column, $value),
|
||||
$this->where->eq($column, $value)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function itShouldNotBeEqualTo()
|
||||
{
|
||||
$column = 'user_id';
|
||||
$value = 1;
|
||||
|
||||
$result = $this->where->notEquals($column, $value)->getComparisons();
|
||||
|
||||
$this->assertSame('<>', $result[0]['conjunction']);
|
||||
$this->assertSame($column, $result[0]['subject']->getName());
|
||||
$this->assertSame($value, $result[0]['target']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function itShouldBeGreaterThan()
|
||||
{
|
||||
$column = 'user_id';
|
||||
$value = 1;
|
||||
|
||||
$result = $this->where->greaterThan($column, $value)->getComparisons();
|
||||
|
||||
$this->assertSame('>', $result[0]['conjunction']);
|
||||
$this->assertSame($column, $result[0]['subject']->getName());
|
||||
$this->assertSame($value, $result[0]['target']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function itShouldBeGreaterThanOrEqual()
|
||||
{
|
||||
$column = 'user_id';
|
||||
$value = 1;
|
||||
|
||||
$result = $this->where->greaterThanOrEqual($column, $value)->getComparisons();
|
||||
|
||||
$this->assertSame('>=', $result[0]['conjunction']);
|
||||
$this->assertSame($column, $result[0]['subject']->getName());
|
||||
$this->assertSame($value, $result[0]['target']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function itShouldBeLessThan()
|
||||
{
|
||||
$column = 'user_id';
|
||||
$value = 1;
|
||||
|
||||
$result = $this->where->lessThan($column, $value)->getComparisons();
|
||||
|
||||
$this->assertSame('<', $result[0]['conjunction']);
|
||||
$this->assertSame($column, $result[0]['subject']->getName());
|
||||
$this->assertSame($value, $result[0]['target']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function itShouldBeLessThanOrEqual()
|
||||
{
|
||||
$column = 'user_id';
|
||||
$value = 1;
|
||||
|
||||
$result = $this->where->lessThanOrEqual($column, $value)->getComparisons();
|
||||
|
||||
$this->assertSame('<=', $result[0]['conjunction']);
|
||||
$this->assertSame($column, $result[0]['subject']->getName());
|
||||
$this->assertSame($value, $result[0]['target']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function itShouldBeLike()
|
||||
{
|
||||
$column = 'user_id';
|
||||
$value = 1;
|
||||
|
||||
$result = $this->where->like($column, $value)->getComparisons();
|
||||
|
||||
$this->assertSame('LIKE', $result[0]['conjunction']);
|
||||
$this->assertSame($column, $result[0]['subject']->getName());
|
||||
$this->assertSame($value, $result[0]['target']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function itShouldBeNotLike()
|
||||
{
|
||||
$column = 'user_id';
|
||||
$value = 1;
|
||||
|
||||
$result = $this->where->notLike($column, $value)->getComparisons();
|
||||
|
||||
$this->assertSame('NOT LIKE', $result[0]['conjunction']);
|
||||
$this->assertSame($column, $result[0]['subject']->getName());
|
||||
$this->assertSame($value, $result[0]['target']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function itShouldAccumulateMatchConditions()
|
||||
{
|
||||
$column = array('user_id');
|
||||
|
||||
$result = $this->where
|
||||
->match($column, array(1, 2, 3))
|
||||
->getMatches();
|
||||
|
||||
$expected = array(
|
||||
0 => array(
|
||||
'columns' => array('user_id'),
|
||||
'values' => array(1, 2, 3),
|
||||
'mode' => 'natural',
|
||||
),
|
||||
);
|
||||
$this->assertEquals($expected, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function itShouldAccumulateMatchBooleanConditions()
|
||||
{
|
||||
$column = array('user_id');
|
||||
|
||||
$result = $this->where
|
||||
->matchBoolean($column, array(1, 2, 3))
|
||||
->getMatches();
|
||||
|
||||
$expected = array(
|
||||
0 => array(
|
||||
'columns' => array('user_id'),
|
||||
'values' => array(1, 2, 3),
|
||||
'mode' => 'boolean',
|
||||
),
|
||||
);
|
||||
$this->assertEquals($expected, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function itShouldAccumulateMatchQueryExpansionConditions()
|
||||
{
|
||||
$column = array('user_id');
|
||||
|
||||
$result = $this->where
|
||||
->matchWithQueryExpansion($column, array(1, 2, 3))
|
||||
->getMatches();
|
||||
|
||||
$expected = array(
|
||||
0 => array(
|
||||
'columns' => array('user_id'),
|
||||
'values' => array(1, 2, 3),
|
||||
'mode' => 'query_expansion',
|
||||
),
|
||||
);
|
||||
$this->assertEquals($expected, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function itShouldAccumulateInConditions()
|
||||
{
|
||||
$column = 'user_id';
|
||||
|
||||
$result = $this->where
|
||||
->in($column, array(1, 2, 3))
|
||||
->getIns();
|
||||
|
||||
$expected = array($column => array(1, 2, 3));
|
||||
$this->assertEquals($expected, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function itShouldAccumulateNotInConditions()
|
||||
{
|
||||
$column = 'user_id';
|
||||
|
||||
$result = $this->where
|
||||
->notIn($column, array(1, 2, 3))
|
||||
->getNotIns();
|
||||
|
||||
$expected = array($column => array(1, 2, 3));
|
||||
$this->assertEquals($expected, $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function itShouldWriteBetweenConditions()
|
||||
{
|
||||
$column = 'user_id';
|
||||
|
||||
$result = $this->where
|
||||
->between($column, 1, 2)
|
||||
->getBetweens();
|
||||
|
||||
$this->assertInstanceOf($this->columnClass, $result[0]['subject']);
|
||||
$this->assertEquals(1, $result[0]['a']);
|
||||
$this->assertEquals(2, $result[0]['b']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function itShouldSetNullValueCondition()
|
||||
{
|
||||
$column = 'user_id';
|
||||
|
||||
$result = $this->where
|
||||
->isNull($column)
|
||||
->getNull();
|
||||
|
||||
$this->assertInstanceOf($this->columnClass, $result[0]['subject']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function itShouldSetIsNotNullValueCondition()
|
||||
{
|
||||
$column = 'user_id';
|
||||
|
||||
$result = $this->where
|
||||
->isNotNull($column)
|
||||
->getNotNull();
|
||||
|
||||
$this->assertInstanceOf($this->columnClass, $result[0]['subject']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function itShouldSetBitClauseValueCondition()
|
||||
{
|
||||
$column = 'user_id';
|
||||
|
||||
$result = $this->where
|
||||
->addBitClause($column, 1)
|
||||
->getBooleans();
|
||||
|
||||
$this->assertEquals(1, $result[0]['value']);
|
||||
$this->assertInstanceOf($this->columnClass, $result[0]['subject']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function ItShouldChangeAndToOrOperator()
|
||||
{
|
||||
$result = $this->where->conjunction('OR');
|
||||
$this->assertEquals('OR', $result->getConjunction());
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function itShouldThrowExceptionOnUnknownConjunction()
|
||||
{
|
||||
$this->setExpectedException($this->queryException);
|
||||
$this->where->conjunction('NOT_VALID_CONJUNCTION');
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function itShouldSetExistsCondition()
|
||||
{
|
||||
$select1 = new Select('user');
|
||||
$select1->where()->equals('user_id', 10);
|
||||
|
||||
$result = $this->where->exists($select1)->getExists();
|
||||
|
||||
$this->assertEquals(array($select1), $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function itShouldSetNotExistsCondition()
|
||||
{
|
||||
$select1 = new Select('user');
|
||||
$select1->where()->equals('user_id', 10);
|
||||
|
||||
$result = $this->where->notExists($select1)->getNotExists();
|
||||
|
||||
$this->assertEquals(array($select1), $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function itShouldReturnLiterals()
|
||||
{
|
||||
$result = $this->where->asLiteral('(username is not null and status=:status)')->getComparisons();
|
||||
$this->assertSame('(username is not null and status=:status)', $result[0]);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user