<?php
require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' .
DIRECTORY_SEPARATOR . 'reliq'
. DIRECTORY_SEPARATOR
. 'autoload.php';
class UpdateManagerTest extends PHPUnit_Framework_TestCase {
/**
* @var SelectManager
*/
protected $manager;
protected $table;
/**
* Sets up the fixture, for example, opens a network connections.
* This method is called before a test is executed.
*/
protected function setUp() {
$this->table = new \Reliq\Table('test', array(
'driver' => 'mysql',
'columns' => array(
'name',
'email',
'password'
)
));
$this->manager = \Reliq\Managers\UpdateManager::factory
($this->table);
}
private function prepare_regex($regex) {
return '/' . str_replace(array(
' ',
'*',
'.',
'(',
')'
), array(
' +',
'\*',
'\.',
'\(',
'\)'
), $regex) . '/';
}
public function testSimpleUpdate() {
$pattern = $this->prepare_regex('UPDATE `test` SET `test`.`name` = name');
$sql = $this->manager
->set($this->table->name->set('name'))
->to_sql();
$this->assertRegExp($pattern, $sql);
}
/**
* @expectedException Reliq\Exceptions\WrongColumnsForUpdateException
*/
public function testSimpleUpdateException() {
$sql = $this->manager
->set('test')
->to_sql();
}
public function testSimpleUpdate2() {
$pattern = $this
->prepare_regex('UPDATE `test` SET `test`.`name` = name, '
. '`test`.`password` = ***');
$sql = $this->manager
->set($this->table->name->set('name'),
$this->table->password->set('***'))
->to_sql();
$this->assertRegExp($pattern, $sql);
}
public function testSimpleUpdate3() {
$pattern = $this
->prepare_regex('UPDATE `test` SET `test`.`name` = name, '
. '`test`.`password` = ***');
$sql = $this->manager
->set($this->table->name->set('name'))
->set($this->table->password->set('***'))
->to_sql();
$this->assertRegExp($pattern, $sql);
}
public function testLimit() {
$sql = $this->manager
->limit(10)
->to_sql();
$pattern = $this
->prepare_regex('UPDATE `test` SET LIMIT 10');
$this->assertRegExp($pattern, $sql);
}
public function testWhere() {
$sql = $this->manager
->where($this->table->name->eq('10'))
->to_sql();
$pattern = $this
->prepare_regex('UPDATE `test` SET WHERE `test`.`name` = 10');
$this->assertRegExp($pattern, $sql);
}
public function testAlias() {
$table2 = $this->table->alias('test_2');
$manager = \Reliq\Managers\UpdateManager::factory($table2);
$sql = $manager->to_sql();
$pattern = $this->prepare_regex('UPDATE `test` `test_2` '
. 'SET');
$this->assertRegExp($pattern, $sql);
}
public function testAliasWithWhere() {
$table2 = $this->table->alias('test_2');
$manager = \Reliq\Managers\UpdateManager::factory($table2)
->where($table2->name->gt(10));
$sql = $manager->to_sql();
$pattern = $this->prepare_regex('UPDATE `test` `test_2` '
. 'SET WHERE '
. '`test_2`.`name` > 10');
$this->assertRegExp($pattern, $sql);
}
}
?>
|