diff options
Diffstat (limited to 'tests/unit/Data/SqlMap/common.php')
-rw-r--r-- | tests/unit/Data/SqlMap/common.php | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/tests/unit/Data/SqlMap/common.php b/tests/unit/Data/SqlMap/common.php new file mode 100644 index 00000000..020a296b --- /dev/null +++ b/tests/unit/Data/SqlMap/common.php @@ -0,0 +1,153 @@ +<?php + +Prado::using('System.Data.TDbConnection'); + +if(!defined('SQLMAP_TESTS')) + define('SQLMAP_TESTS', realpath(dirname(__FILE__))); + +if(!class_exists('Account', false)) +{ + include(SQLMAP_TESTS.'/domain/A.php'); + include(SQLMAP_TESTS.'/domain/Account.php'); + include(SQLMAP_TESTS.'/domain/AccountBis.php'); + include(SQLMAP_TESTS.'/domain/AccountCollection.php'); + include(SQLMAP_TESTS.'/domain/B.php'); + include(SQLMAP_TESTS.'/domain/Document.php'); + include(SQLMAP_TESTS.'/domain/Book.php'); + include(SQLMAP_TESTS.'/domain/C.php'); + include(SQLMAP_TESTS.'/domain/Category.php'); + include(SQLMAP_TESTS.'/domain/Complex.php'); + include(SQLMAP_TESTS.'/domain/D.php'); + include(SQLMAP_TESTS.'/domain/DocumentCollection.php'); + include(SQLMAP_TESTS.'/domain/E.php'); + include(SQLMAP_TESTS.'/domain/F.php'); + include(SQLMAP_TESTS.'/domain/LineItem.php'); + include(SQLMAP_TESTS.'/domain/LineItemCollection.php'); + include(SQLMAP_TESTS.'/domain/Newspaper.php'); + include(SQLMAP_TESTS.'/domain/Order.php'); + include(SQLMAP_TESTS.'/domain/Other.php'); + include(SQLMAP_TESTS.'/domain/Sample.php'); + include(SQLMAP_TESTS.'/domain/Search.php'); + include(SQLMAP_TESTS.'/domain/User.php'); +} + +class DefaultScriptRunner +{ + function runScript($connection, $script) + { + $sql = file_get_contents($script); + $lines = explode(';', $sql); + foreach($lines as $line) + { + $line = trim($line); + if(strlen($line) > 0) + $connection->createCommand($line)->execute(); + } + } +} + +class CopyFileScriptRunner +{ + protected $baseFile; + protected $targetFile; + + public function __construct($base, $target) + { + $this->baseFile = $base; + $this->targetFile = $target; + } + + function runScript($connection, $script) + { + copy($this->baseFile, $this->targetFile); + } +} + +class SQLiteBaseTestConfig extends BaseTestConfig +{ + protected $baseFile; + protected $targetFile; + + public function __construct() + { + $this->_sqlmapConfigFile = SQLMAP_TESTS.'/sqlite.xml'; + $this->_scriptDir = SQLMAP_TESTS.'/scripts/sqlite/'; + + $this->targetFile = realpath(SQLMAP_TESTS.'/sqlite/tests.db'); + $this->baseFile = realpath(SQLMAP_TESTS.'/sqlite/backup.db'); + $file = realpath($this->targetFile); + $this->_connection = new TDbConnection("sqlite:{$file}"); + } + + public function getScriptRunner() + { + return new CopyFileScriptRunner($this->baseFile, $this->targetFile); + } +} + +class MySQLBaseTestConfig extends BaseTestConfig +{ + public function __construct() + { + $this->_sqlmapConfigFile = SQLMAP_TESTS.'/mysql.xml'; + $this->_scriptDir = SQLMAP_TESTS.'/scripts/mysql/'; + $this->_features = array('insert_id'); + $dsn = 'mysql:host=localhost;dbname=sqlmap_test;port=3307'; + $this->_connection = new TDbConnection($dsn, 'test5', 'test5'); + } +} + +class MSSQLBaseTestConfig extends BaseTestConfig +{ + public function __construct() + { + $this->_sqlmap = SQLMAP_TESTS.'/mssql.xml'; + $this->_connectionString = 'odbc_mssql://sqlmap_tests'; + $this->_scriptDir = SQLMAP_TESTS.'/scripts/mssql/'; + $this->_features = array('insert_id'); + } +} + +class BaseTestConfig +{ + protected $_scriptDir; + protected $_connection; + protected $_sqlmapConfigFile; + + public function hasFeature($type) + { + return false; + } + + public function getScriptDir() + { + return $this->_scriptDir; + } + + public function getConnection() + { + return $this->_connection; + } + + public function getSqlMapConfigFile() + { + return $this->_sqlmapConfigFile; + } + + public function getScriptRunner() + { + return new DefaultScriptRunner(); + } + + public static function createConfigInstance() + { + //change this to connection to a different database + + //return new MySQLBaseTestConfig(); + + return new SQLiteBaseTestConfig(); + + //return new MSSQLBaseTestConfig(); + } +} + |