[ Index ]

PHP Cross Reference of Limb3

title

Body

[close]

/dbal/tests/cases/non-driver/dump/ -> lmbSQLDumpLoaderTestBase.class.php (source)

   1  <?php
   2  /*
   3   * Limb PHP Framework
   4   *
   5   * @link http://limb-project.com 
   6   * @copyright  Copyright &copy; 2004-2007 BIT(http://bit-creative.com)
   7   * @license    LGPL http://www.gnu.org/copyleft/lesser.html 
   8   */
   9  lmb_require('limb/dbal/src/lmbSimpleDb.class.php');
  10  lmb_require('limb/dbal/src/dump/lmbSQLDumpLoader.class.php');
  11  
  12  abstract class lmbSQLDumpLoaderTestBase extends UnitTestCase
  13  {
  14    var $db;
  15    var $conn;
  16    var $file_path;
  17  
  18    function setUp()
  19    {
  20      $toolkit = lmbToolkit :: instance();
  21      $this->conn = $toolkit->getDefaultDbConnection();
  22      $this->db = new lmbSimpleDb($this->conn);
  23  
  24      $sql = <<<EOD
  25  /* test_one_table_object table records */

  26  insert into test_one_table_object (id, annotation, content) values (1, 'whatever;', 'whatever;');
  27  insert into test_one_table_object (id, annotation, content) values (2, 'whatever;', 'whatever;');
  28  
  29  /* test_db_table table records */

  30  insert into test_db_table (id, description, title) values (1, 'whatever;', 'whatever;');
  31  insert into test_db_table (id, description, title) values (2, 'whatever;', 'whatever;');
  32  EOD;
  33  
  34      $this->file_path = LIMB_VAR_DIR . '/sql_dump_loader.tmp';
  35  
  36      $this->_writeDump($sql, $this->file_path);
  37  
  38      $this->_dbCleanUp();
  39    }
  40  
  41    function tearDown()
  42    {
  43      unlink($this->file_path);
  44      $this->_dbCleanUp();
  45    }
  46  
  47    function _createLoader($file = null)
  48    {
  49      return new lmbSQLDumpLoader($file);
  50    }
  51  
  52    function _writeDump($sql, $file)
  53    {
  54      $fh = fopen($file, 'w');
  55      fwrite($fh, $sql);
  56      fclose($fh);
  57    }
  58  
  59    function _dbCleanUp()
  60    {
  61      $this->db->delete('test_one_table_object');
  62      $this->db->delete('test_db_table');
  63    }
  64  
  65    function testCreate()
  66    {
  67      $loader = $this->_createLoader($this->file_path);
  68      $this->assertEqual($loader->getAffectedTables(), array('test_one_table_object', 'test_db_table'));
  69      $this->assertEqual(sizeof($loader->getStatements()), 4);
  70    }
  71  
  72    function testCreateWithEmptyFile()
  73    {
  74      $loader = $this->_createLoader();
  75      $this->assertEqual($loader->getAffectedTables(), array());
  76      $this->assertEqual($loader->getStatements(), array());
  77    }
  78  
  79    function testLoad()
  80    {
  81      $loader = $this->_createLoader();
  82      $loader->loadFile($this->file_path);
  83      $this->assertEqual($loader->getAffectedTables(), array('test_one_table_object', 'test_db_table'));
  84      $this->assertEqual(sizeof($loader->getStatements()), 4);
  85    }
  86  
  87    function testLoadTwice()
  88    {
  89      $loader = $this->_createLoader();
  90      $loader->loadFile($this->file_path);
  91      $this->assertEqual($loader->getAffectedTables(), array('test_one_table_object', 'test_db_table'));
  92      $this->assertEqual(sizeof($loader->getStatements()), 4);
  93  
  94      $new_sql = <<<EOD
  95  insert into foo (id, annotation, content) values (1, 'whatever;', 'whatever;');
  96  EOD;
  97  
  98      $second_file = LIMB_VAR_DIR . '/sql_dump_loader.new';
  99      $this->_writeDump($new_sql, $second_file);
 100  
 101      $loader->loadFile($second_file);
 102  
 103      $this->assertEqual($loader->getAffectedTables(), array('foo'));
 104      $this->assertEqual(sizeof($loader->getStatements()), 1);
 105    }
 106  
 107    function testExecute()
 108    {
 109      $loader = $this->_createLoader($this->file_path);
 110      $this->assertEqual($loader->getAffectedTables(), array('test_one_table_object', 'test_db_table'));
 111  
 112      $loader->execute($this->conn);
 113  
 114      $rs1 = $this->db->select('test_one_table_object');
 115      $this->assertEqual($rs1->count(), 2);
 116  
 117      $rs2 = $this->db->select('test_db_table');
 118      $this->assertEqual($rs2->count(), 2);
 119    }
 120  
 121    function testExecutePattern()
 122    {
 123      $loader = $this->_createLoader($this->file_path);
 124  
 125      $loader->execute($this->conn, '/test_one_table_object/');
 126  
 127      $rs1 = $this->db->select('test_one_table_object');
 128      $this->assertEqual($rs1->count(), 2);
 129  
 130      $rs2 = $this->db->select('test_db_table');
 131      $this->assertEqual($rs2->count(), 0);
 132    }
 133  
 134    function testFreeDataBase()
 135    {
 136      $this->db->insert('test_one_table_object', array('id' => 10,
 137                                                       'annotation' => 'some annotation',
 138                                                       'content' => 'some content'));
 139  
 140      $this->db->insert('test_db_table', array('id' => 10,
 141                                               'description' => 'some description',
 142                                               'title' => 'some title'));
 143  
 144  
 145      $loader = $this->_createLoader($this->file_path);
 146      $this->assertEqual($loader->getAffectedTables(), array('test_one_table_object', 'test_db_table'));
 147  
 148      $loader->cleanTables($this->conn);
 149  
 150      $rs1 = $this->db->select('test_one_table_object');
 151      $this->assertEqual($rs1->count(), 0);
 152  
 153      $rs2 = $this->db->select('test_db_table');
 154      $this->assertEqual($rs2->count(), 0);
 155    }
 156  }
 157  ?>


Generated: Sat Nov 22 03:48:54 2008 Cross-referenced by PHPXref 0.7