| 
<?php
 class Sql_QueryTest extends UnitTestCase
 {
 
 private $query;
 
 public function setUp()
 {
 $this->query = new A_Sql_Query;
 }
 
 public function testSelect()
 {
 $select = $this->query->select();
 $this->assertTrue($select instanceOf A_Sql_Select);
 }
 
 public function testInsert()
 {
 $columnList = array('foo', 'bar', 'baz');
 $insert = $this->query->insert('footable', $columnList);
 
 $reflection = new ReflectionObject($insert);
 $reflectedProperty = $reflection->getProperty('table');
 $reflectedProperty->setAccessible(true);
 $from = $reflectedProperty->getValue($insert);
 
 $this->assertTrue(in_array('footable', $from->getTables()));
 
 $reflection = new ReflectionObject($insert);
 $reflectedProperty = $reflection->getProperty('columns');
 $reflectedProperty->setAccessible(true);
 $columns = $reflectedProperty->getValue($insert);
 
 $this->assertEqual($columns->getColumns(), $columnList);
 }
 
 public function testUpdate()
 {
 $columnList = array('foo', 'bar', 'baz');
 // TODO add third WHERE condition argument, and assert it
 $update = $this->query->update('footable', $columnList);
 
 $reflection = new ReflectionObject($update);
 $reflectedProperty = $reflection->getProperty('table');
 $reflectedProperty->setAccessible(true);
 $from = $reflectedProperty->getValue($update);
 
 $this->assertTrue(in_array('footable', $from->getTables()));
 
 // TODO add assert for the columns set
 }
 
 public function testDelete()
 {
 // TODO add second WHERE condition argument, and assert it
 $delete = $this->query->delete('footable');
 
 $reflection = new ReflectionObject($delete);
 $reflectedProperty = $reflection->getProperty('table');
 $reflectedProperty->setAccessible(true);
 $from = $reflectedProperty->getValue($delete);
 
 $this->assertTrue(in_array('footable', $from->getTables()));
 }
 
 }
 
 |