| 
<?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);
 }
 
 }
 
 ?>
 
 |