<?php
 
 
class A_Db_Tabledatagateway_MockDb {
 
    public $sql = '';
 
    
 
    public function escape($str) {
 
        return addslashes($str);
 
    }
 
    
 
    public function query($sql) {
 
        $this->sql = $sql;
 
        $result = new A_Db_Tabledatagateway_MockDbResult();
 
        return $result;
 
    }
 
 
    public function isError() {
 
        return 0;
 
    }
 
}
 
 
class A_Db_Tabledatagateway_MockDbResult {
 
    public $rows = array(
 
                0=>array('id'=>'foo','name'=>'bar'),
 
                1=>array('id'=>'faz','name'=>'baz'),
 
                );
 
    
 
    public function fetchRow() {
 
        return next($this->rows);
 
    }
 
    
 
    public function numRows() {
 
        return 2;
 
    }
 
    public function isError() {
 
        return 0;
 
    }
 
}
 
 
class Test1 extends A_Db_Tabledatagateway {
 
    
 
    public function getKey() {
 
        return $this->key;
 
    }
 
}
 
 
class Test2 extends Test1 {
 
    public function __construct($db, $table='', $key='') {
 
        parent::__construct($db, 'foo', 'code');
 
    }
 
}
 
 
class Db_TabledatagatewayTest extends UnitTestCase {
 
    
 
    function setUp() {
 
    }
 
    
 
    function TearDown() {
 
    }
 
    
 
    function testDb_TabledatagatewayTable() {
 
          $db = new A_Db_Tabledatagateway_MockDb();
 
 
           $tdg = new A_Db_Tabledatagateway($db);
 
          $this->assertEqual($tdg->getTable(), 'a_db_tabledatagateway');
 
          
 
          $tdg = new A_Db_Tabledatagateway($db, 'foo');
 
          $this->assertEqual($tdg->getTable(), 'foo');
 
          
 
          $tdg = new Test1($db);
 
          $this->assertEqual($tdg->getTable(), 'test1');
 
          
 
          $tdg = new Test2($db);
 
          $this->assertEqual($tdg->getTable(), 'foo');
 
          
 
    }
 
    
 
    function testDb_TabledatagatewayId() {
 
          $db = new A_Db_Tabledatagateway_MockDb();
 
          
 
          $tdg = new Test1($db);
 
          $this->assertEqual($tdg->getKey(), 'id');
 
          
 
          $tdg = new Test1($db, '', 'bar');
 
          $this->assertEqual($tdg->getKey(), 'bar');
 
          
 
          $tdg = new Test2($db);
 
          $this->assertEqual($tdg->getKey(), 'code');
 
          
 
    }
 
    
 
    function testDb_TabledatagatewaySelect() {
 
          $db = new A_Db_Tabledatagateway_MockDb();
 
          
 
          $tdg = new Test2($db);
 
          $result = $tdg->find('bar');
 
#$this->dump($result, "result=");
 
          $this->dump($db->sql, "SQL=");
 
#        $this->assertEqual($tdg->getTable(), 'foo');
 
          
 
    }
 
    
 
}
 
 
 |