#6518: Can't 'CREATE TABLE test_suite_tables' when run Test Suite with 
PostgreSQL.
---------------------------+------------------------------------------------
    Reporter:  k1LoW       |          Type:  Bug    
      Status:  new         |      Priority:  Low    
   Milestone:  1.2.x.x     |     Component:  General
     Version:  1.2 Final   |      Severity:  Normal 
    Keywords:              |   Php_version:  PHP 5  
Cake_version:  1.2.3.8166  |  
---------------------------+------------------------------------------------
 == Version ==

  * CakePHP 1.2.3.8166
  * PostgreSQL 8.3
  * CakePHP Test Suite 1.2.0.0

 == What I did: ==
  * comment out $test from database.php
   * CakePHP add 'test_suite_' prefix to test table.
  * use $import = array('model' => 'User')

 === Example user_fixture.php ===
 {{{
 <?php

 class UserFixture extends CakeTestFixture {
     var $name = 'User';
     var $import = array('model' => 'User');
     var $records = array(array(
         'id'  => 1,
         'name'  => 'k1LoW',
         'username'  => 'k1low',
         'password'  => 'hoge',
         'mail'  => 'k1...@101000lab.org',
         'created'  => '2009-07-14 21:00:05',
         'modified'  => '2009-07-14 21:00:05'
     ));
 }

 }}}

 == What I expected to happen: ==

  1. CREATE TABLE test_suite_users ...
  2. Run Test.
  3. DROP TABLE test_suite_users

 == Why it didn't meet my expectations: ==

  1. '''DROP TABLE test_suite_users <- ???'''
  2. CREATE TABLE test_suite_users ...
  3. Run Test.
  4. DROP TABLE test_suite_users

 == Causal Factor ==

 '''unprefix 'test_suite_' to $fixture''' in
 cake/tests/lib/cake_test_case.php:start()

 == Possible Fix: ==

 I use PostgreSQL only, and I don't try MySQL. So this fix is for
 PostgreSQL.

 cake/tests/lib/cake_test_case.php start()

 {{{
 function start() {
     if (isset($this->_fixtures) && isset($this->db)) {
         Configure::write('Cache.disable', true);
         $cacheSources = $this->db->cacheSources;
         $this->db->cacheSources = false;
         $sources = $this->db->listSources();
         $this->db->cacheSources = $cacheSources;
         if (!$this->dropTables) {
             return;
         }
         foreach ($this->_fixtures as $fixture) {
             if ($this->db->_baseConfig['connect'] == 'pg_connect' ||
 $this->db->_baseConfig['connect'] == 'pg_pconnect') {
                 $table = $this->db->config['prefix'] . $fixture->table;
             }
             if (in_array($table, $sources)) {
                 $fixture->drop($this->db);
                 $fixture->create($this->db);
             } elseif (!in_array($table, $sources)) {
                 $fixture->create($this->db);
             }
         }
     }
 }
 }}}

-- 
Ticket URL: <https://trac.cakephp.org/ticket/6518>
CakePHP : The Rapid Development Framework for PHP <https://trac.cakephp.org/>
Cake is a rapid development framework for PHP which uses commonly known design 
patterns like ActiveRecord, Association Data Mapping, Front Controller and MVC. 
Our primary goal is to provide a structured framework that enables PHP users at 
all levels to rapidly develop robust web applications, without any loss to 
flexibility.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"tickets cakephp" group.
To post to this group, send email to tickets-cakephp@googlegroups.com
To unsubscribe from this group, send email to 
tickets-cakephp+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/tickets-cakephp?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to