This is the OLD system. Please use our new system.

Ticket #36: db_tests.patch

  • TestConfiguration.php.dist

    old new  
    3030 
    3131 
    3232/** 
    33  * @todo Pgsql, Mssql, etc. 
     33 * Zend_Db_Adapter_Pdo_Mssql 
    3434 */ 
     35define('TESTS_ZEND_DB_ADAPTER_PDO_MSSQL_ENABLED',  false); 
     36define('TESTS_ZEND_DB_ADAPTER_PDO_MSSQL_HOSTNAME', '127.0.0.1'); 
     37define('TESTS_ZEND_DB_ADAPTER_PDO_MSSQL_USERNAME', null); 
     38define('TESTS_ZEND_DB_ADAPTER_PDO_MSSQL_PASSWORD', null); 
     39define('TESTS_ZEND_DB_ADAPTER_PDO_MSSQL_DATABASE', 'test'); 
    3540 
    3641 
    3742/** 
     43 * @todo Pgsql, etc. 
     44 */ 
     45 
     46 
     47/** 
    3848 * Zend_HttpClient 
    3949 * 
    4050 * IMPORTANT: If this option is enabled, the Zend_HttpClient test suite 
  • Zend/AllTests.php

    old new  
    1515require_once 'Zend/Pdf/AllTests.php'; 
    1616require_once 'Zend/UriTest.php'; 
    1717require_once 'Zend/Uri/AllTests.php'; 
     18require_once 'Zend/Db/AllTests.php'; 
    1819 
    1920class Zend_AllTests 
    2021{ 
     
    3637        $suite->addTestSuite('Zend_UriTest'); 
    3738        $suite->addTest(Zend_Uri_AllTests::suite()); 
    3839 
     40        $suite->addTestSuite('Zend_DbTest'); 
     41        $suite->addTest(Zend_Db_AllTests::suite()); 
     42 
    3943        return $suite; 
    4044    } 
    4145} 
  • Zend/Db/Adapter/Pdo/MssqlTest.php

    old new  
     1<?php 
     2/** 
     3 * @package    Zend_Db 
     4 * @subpackage UnitTests 
     5 */ 
     6 
     7/** 
     8 * Common class is DB independant 
     9 */ 
     10require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'Common.php'; 
     11 
     12 
     13/** 
     14 * @package    Zend_Db_Adapter_Pdo_MssqlTest 
     15 * @subpackage UnitTests 
     16 */ 
     17class Zend_Db_Adapter_Pdo_MssqlTest extends Zend_Db_Adapter_Pdo_Common 
     18{ 
     19 
     20    function getCreatTableSQL() 
     21    { 
     22        return 'CREATE TABLE  '. self::TableName . ' 
     23            (id int IDENTITY, title varchar(100), subTitle varchar (100), body text, date_created datetime)'; 
     24    } 
     25 
     26    function getDriver() 
     27    { 
     28        return 'pdoMssql'; 
     29    } 
     30 
     31    function getParams() 
     32    { 
     33        $params = array ('host'     => TESTS_ZEND_DB_ADAPTER_PDO_MSSQL_HOSTNAME, 
     34            'username' => TESTS_ZEND_DB_ADAPTER_PDO_MSSQL_USERNAME, 
     35            'password' => TESTS_ZEND_DB_ADAPTER_PDO_MSSQL_PASSWORD, 
     36            'dbname'   => TESTS_ZEND_DB_ADAPTER_PDO_MSSQL_DATABASE); 
     37 
     38        return $params; 
     39    } 
     40 
     41 
     42    public function testQuote() 
     43    { 
     44        // test double quotes are fine 
     45        $value = $this->_db->quote('St John"s Wort'); 
     46        $this->assertEquals("'St John\"s Wort'", $value); 
     47 
     48        // test that single quotes are escaped with another single quote 
     49        $value = $this->_db->quote('St John\'s Wort'); 
     50        $this->assertEquals("'St John''s Wort'", $value); 
     51 
     52        // quote an array 
     53        $value = $this->_db->quote(array("it's", 'all', 'right!')); 
     54        $this->assertEquals("'it''s', 'all', 'right!'", $value); 
     55    } 
     56 
     57    public function testQuoteInto() 
     58    { 
     59        // test double quotes are fine 
     60        $value = $this->_db->quoteInto('id=?', 'St John"s Wort'); 
     61        $this->assertEquals("id='St John\"s Wort'", $value); 
     62 
     63        // test that single quotes are escaped with another single quote 
     64        $value = $this->_db->quoteInto('id = ?', 'St John\'s Wort'); 
     65        $this->assertEquals("id = 'St John''s Wort'", $value); 
     66    } 
     67 
     68    public function testQuoteIdentifier() 
     69    { 
     70        $value = $this->_db->quoteIdentifier('table_name'); 
     71        $this->assertEquals("[table_name]", $value); 
     72 
     73        $value = $this->_db->quoteIdentifier('table_[]_name'); 
     74        $this->assertEquals("[table_[]]_name]", $value); 
     75    } 
     76 
     77} 
  • Zend/Db/Adapter/Pdo/MysqlTest.php

    old new  
     1<?php 
     2/** 
     3 * @package    Zend_Db 
     4 * @subpackage UnitTests 
     5 */ 
     6 
     7/** 
     8 * Common class is DB independant 
     9 */ 
     10require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'Common.php'; 
     11 
     12 
     13/** 
     14 * @package    Zend_Db_Adapter_Pdo_MysqlTest 
     15 * @subpackage UnitTests 
     16 */ 
     17class Zend_Db_Adapter_Pdo_MysqlTest extends Zend_Db_Adapter_Pdo_Common 
     18{ 
     19 
     20    function getCreatTableSQL() 
     21    { 
     22        return 'CREATE TABLE  '. self::TableName . ' 
     23            (id int IDENTITY, title varchar(100), subTitle varchar (100), body text, date_created datetime)'; 
     24    } 
     25 
     26    function getDriver() 
     27    { 
     28        return 'pdoMysql'; 
     29    } 
     30 
     31    function getParams() 
     32    { 
     33        $params = array ('host'     => TESTS_ZEND_DB_ADAPTER_PDO_MYSQL_HOSTNAME, 
     34            'username' => TESTS_ZEND_DB_ADAPTER_PDO_MYSQL_USERNAME, 
     35            'password' => TESTS_ZEND_DB_ADAPTER_PDO_MYSQL_PASSWORD, 
     36            'dbname'   => TESTS_ZEND_DB_ADAPTER_PDO_MYSQL_DATABASE); 
     37 
     38        return $params; 
     39    } 
     40 
     41 
     42    public function testQuote() 
     43    { 
     44        // test double quotes are fine 
     45        $value = $this->_db->quote('St John"s Wort'); 
     46        $this->assertEquals("'St John\"s Wort'", $value); 
     47 
     48        // test that single quotes are escaped with another single quote 
     49        $value = $this->_db->quote('St John\'s Wort'); 
     50        $this->assertEquals("'St John''s Wort'", $value); 
     51 
     52        // quote an array 
     53        $value = $this->_db->quote(array("it's", 'all', 'right!')); 
     54        $this->assertEquals("'it''s', 'all', 'right!'", $value); 
     55    } 
     56 
     57    public function testQuoteInto() 
     58    { 
     59        // test double quotes are fine 
     60        $value = $this->_db->quoteInto('id=?', 'St John"s Wort'); 
     61        $this->assertEquals("id='St John\"s Wort'", $value); 
     62 
     63        // test that single quotes are escaped with another single quote 
     64        $value = $this->_db->quoteInto('id = ?', 'St John\'s Wort'); 
     65        $this->assertEquals("id = 'St John''s Wort'", $value); 
     66    } 
     67 
     68    public function testQuoteIdentifier() 
     69    { 
     70        $value = $this->_db->quoteIdentifier('table_name'); 
     71        $this->assertEquals("[table_name]", $value); 
     72 
     73        $value = $this->_db->quoteIdentifier('table_[]_name'); 
     74        $this->assertEquals("[table_[]]_name]", $value); 
     75    } 
     76 
     77} 
  • Zend/Db/Adapter/Pdo/Common.php

    old new  
     1<?php 
     2/** 
     3 * @package    Zend_Db 
     4 * @subpackage UnitTests 
     5 */ 
     6 
     7/** 
     8 * Common class is DB independant 
     9 */ 
     10require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'Common.php'; 
     11 
     12 
     13 
     14 
     15/** 
     16 * @package    Zend_Db_Adapter_Pdo_Common 
     17 * @subpackage UnitTests 
     18 */ 
     19abstract class Zend_Db_Adapter_Pdo_Common extends Zend_Db_Adapter_Common 
     20{ 
     21} 
  • Zend/Db/Adapter/Common.php

    old new  
     1<?php 
     2/** 
     3 * @package    Zend_Db 
     4 * @subpackage UnitTests 
     5 */ 
     6 
     7/** 
     8 * Zend_Db 
     9 */ 
     10require_once 'Zend/Db.php'; 
     11 
     12/** 
     13 * PHPUnit2 test case 
     14 */ 
     15require_once 'PHPUnit2/Framework/TestCase.php'; 
     16 
     17 
     18/** 
     19 * @package    Zend_Db_Adapter_Pdo_Common 
     20 * @subpackage UnitTests 
     21 */ 
     22abstract class Zend_Db_Adapter_Common extends PHPUnit2_Framework_TestCase 
     23{ 
     24    const TableName = 'zf_test_table'; 
     25 
     26 
     27    abstract function getCreatTableSQL(); 
     28    abstract function getParams(); 
     29    abstract function getDriver(); 
     30 
     31    /** 
     32     * @var Zend_Db_Adapter_Pdo_Abstract 
     33     */ 
     34    protected $_db; 
     35 
     36    protected function getDropTableSQL() 
     37    { 
     38        return 'DROP TABLE ' . self::TableName; 
     39    } 
     40 
     41    protected function createTestTable() 
     42    { 
     43        $this->_db->query($this->getCreatTableSQL()); 
     44 
     45        $sql = 'INSERT INTO ' . self::TableName . " (title, subTitle, body, date_created) 
     46                VALUES ('News Item 1', 'Sub title 1', 'This is body 1', '2006-05-01 11:11:11')"; 
     47        $this->_db->query($sql); 
     48 
     49        $sql = 'INSERT INTO ' . self::TableName . " (title, subTitle, body, date_created) 
     50                VALUES ('News Item 2', 'Sub title 2', 'This is body 2', '2006-05-02 12:12:12')"; 
     51        $this->_db->query($sql); 
     52    } 
     53 
     54    function setUp() 
     55    { 
     56        // open a new connection 
     57        $this->_db = Zend_Db::factory('pdoMssql', $this->getParams()); 
     58 
     59        // create a test table and populate it 
     60        $this->createTestTable(); 
     61    } 
     62 
     63    function tearDown() 
     64    { 
     65        // drop test table 
     66        $this->_db->query($this->getDropTableSQL()); 
     67 
     68        // close the PDO connection 
     69        $connection = $this->_db->getConnection(); 
     70        $connection = null; 
     71        $this->_db = null; 
     72    } 
     73 
     74 
     75    function testFetchAll() 
     76    { 
     77        $result = $this->_db->query('SELECT * FROM ' . self::TableName . ' WHERE date_created > :placeholder', 
     78                        array('placeholder' => '2006-01-01') 
     79                        ); 
     80 
     81        $rows = $result->fetchAll(); 
     82        $this->assertEquals(2, count($rows)); 
     83        $this->assertEquals('1', $rows[0]['id']); 
     84    } 
     85 
     86    function testFieldNamesAreLowercase() 
     87    { 
     88        $result = $this->_db->query('SELECT * FROM ' . self::TableName . ' WHERE date_created > :placeholder', 
     89                        array('placeholder' => '2006-01-01') 
     90                        ); 
     91 
     92        // use the PDOStatement $result to fetch all rows as an array 
     93        $row = $result->fetch(); 
     94 
     95        $this->assertEquals(5, count($row)); // correct number of fields 
     96        $this->assertEquals('1', $row['id']); // correct data 
     97        $this->assertTrue(array_key_exists('subtitle', $row)); // "subTitle" is now "subtitle" 
     98        $this->assertFalse(array_key_exists('subTitle', $row)); // "subTitle" is not a key 
     99 
     100    } 
     101 
     102    function testInsert() 
     103    { 
     104        $row = array ( 
     105            'title' => 'News Item 3', 
     106            'subTitle' => 'Sub title 3', 
     107            'body' => 'This is body 1', 
     108            'date_created' => '2006-05-03 13:13:13' 
     109            ); 
     110        $rows_affected = $this->_db->insert(self::TableName, $row); 
     111        $last_insert_id = $this->_db->lastInsertId(); 
     112        $this->assertEquals(3, $last_insert_id); // correct id has been set 
     113    } 
     114 
     115} 
  • Zend/Db/AllTests.php

    old new  
     1<?php 
     2if (!defined('PHPUnit2_MAIN_METHOD')) { 
     3    define('PHPUnit2_MAIN_METHOD', 'Zend_Db_AllTests::main'); 
     4} 
     5 
     6require_once 'PHPUnit2/Framework/TestSuite.php'; 
     7//require_once 'PHPUnit2/TextUI/TestRunner.php'; 
     8 
     9if(TESTS_ZEND_DB_ADAPTER_PDO_MSSQL_ENABLED == true) { 
     10    require_once 'Zend/Db/Adapter/Pdo/MssqlTest.php'; 
     11} 
     12if(TESTS_ZEND_DB_ADAPTER_PDO_MYSQL_ENABLED == true) { 
     13    require_once 'Zend/Db/Adapter/Pdo/MysqlTest.php'; 
     14} 
     15 
     16class Zend_Db_AllTests 
     17{ 
     18    public static function main() 
     19    { 
     20        PHPUnit2_TextUI_TestRunner::run(self::suite()); 
     21    } 
     22 
     23    public static function suite() 
     24    { 
     25        $suite = new PHPUnit2_Framework_TestSuite('Zend Framework - Zend_Db'); 
     26 
     27        if(TESTS_ZEND_DB_ADAPTER_PDO_MSSQL_ENABLED == true) { 
     28            $suite->addTestSuite('Zend_Db_Adapter_Pdo_MssqlTest'); 
     29        } 
     30        if(TESTS_ZEND_DB_ADAPTER_PDO_MYSQL_ENABLED == true) { 
     31            $suite->addTestSuite('Zend_Db_Adapter_Pdo_MysqlTest'); 
     32        } 
     33 
     34        return $suite; 
     35    } 
     36} 
     37 
     38if (PHPUnit2_MAIN_METHOD == 'Zend_Db_AllTests::main') { 
     39    Zend_Db_AllTests::main(); 
     40}