/tests/test_WPDB.php
PHP | 126 lines | 112 code | 13 blank | 1 comment | 3 complexity | 59e9300c36174add099608352d6b98eb MD5 | raw file
Possible License(s): LGPL-3.0, AGPL-1.0, GPL-2.0, LGPL-2.1
- <?php
-
- // version: 3.0.0
-
- if(!defined('ABSPATH')) {
- header('Location: SurosqlWPdb/');
- exit;
- }
-
- require_once(dirname(__FILE__) . '/../surosql/Surosql.class.php');
- require_once(dirname(__FILE__) . '/../surosql/SurosqlOO.class.php');
- require_once(dirname(__FILE__) . '/../surosql/SurosqlWpdb.class.php');
-
- use ns\SurosqlWpdb;
- use ns\Surosql as osql;
-
- class Option extends \ns\SurosqlOO {
- static $surosql = array(
- 'alias' => 'option',
- 'table' => 'wp_options',
- 'primary' => 'option_id',
- );
-
- public $option_id;
- public $blog_id;
- public $option_name;
- public $option_value;
- public $autoload;
- }
-
- class SurosqlWpdbTest {
-
- static $assertValues = array();
-
- function __construct() {
- global $wpdb;
- $this->osql = $osql = SurosqlWpdb::register();
-
- $osql->aliases['post'] = array('table' => $wpdb->posts, 'where' => '`%post%`.`post_status` = "publish"', 'columns' => array('ID', 'post_author', 'post_date', 'post_title'));
- $osql->aliases['user'] = array('table' => $wpdb->users, 'columns' => array('ID', 'user_login', 'user_nicename'));
-
- $osql->connect('post - author(user)', '`%post%`.`post_author` = `%author%`.`ID`');
- }
-
- function testPHP52Style() {
- if(version_compare(PHP_VERSION, '5.3', '>=')) {
- return;
- }
-
- assert(osql('a')->whereq(array('b=', '4'), array('c<', 5, 'and d LIKE', 'e'))->sql() === 'SELECT * FROM `a` WHERE ((b= "4") AND (c< "5" and d LIKE "e"))');
- assert(osql('a')->whereq('name=', "'")->andwhereq('age>', 7)->orwhereq('age<', 5)->sql() === 'SELECT * FROM `a` WHERE (((name= "\\\'") AND (age> "7")) OR (age< "5"))');
- }
-
- function testDataRetrieval() {
- $osql = $this->osql;
-
- assert(count($osql->selectoo()->from('post - author')->where('post.ID > %d')->bind(0)->all()) > 1);
- assert($osql->selectoo()->from('post - author')->first()->post->ID > 0);
-
- $iteratorcount = 0;
- foreach($osql->selectoo()->from('post') as $post) {
- $iteratorcount++;
- }
- assert($iteratorcount > 0);
- }
-
- function testDataRetrievalFromManager() {
- assert(Option::get(3)->first()->option_id == 3);
- assert(Option::get()->ifeq('option_id', 3)->first()->option_id == 3);
- assert(Option::get(array('option_id' => 3))->first()->option_id == 3);
- }
-
- function testDataModification() {
- osql::delete()->from('wp_options')->ifeq('option_name', 'surosql_test')->exec();
-
- $o = new Option(array('blog_id' => 0, 'option_name' => 'surosql_test', 'option_value' => 123987456));
-
- assert((int) $o->insertorupdate() > 0);
- assert(Option::get()->ifeq('option_value', 123987456)->first()->option_name == 'surosql_test');
-
- $o->option_value = 789654123;
- assert((int) $o->insertorupdate() > 0);
-
- assert(Option::get()->ifeq('option_value', 789654123)->first()->option_name == 'surosql_test');
-
- osql::delete()->from('wp_options')->ifeq('option_value', 789654123)->exec();
-
- assert(osql::count()->from('option')->ifeq('option_value', 789654123)->var() == 0);
- }
-
- static function setupAssertHandler() {
- self::$assertValues = array(
- 'ASSERT_ACTIVE' => assert_options(ASSERT_ACTIVE, 1),
- 'ASSERT_WARNING' => assert_options(ASSERT_WARNING, 0),
- 'ASSERT_CALLBACK' => assert_options(ASSERT_CALLBACK, create_function('$file,$line,$code', 'echo "------------\nAssertion Failed: File \'$file\'\nLine \'$line\'\nCode \'$code\'\n------------\n";')),
- 'error_reporting' => error_reporting(E_ERROR),
- 'error_handler' => set_error_handler(create_function('$errno, $errstr, $errfile, $errline', 'if(error_reporting() != 0) {throw new Exception($errstr, $errno);}'))
- );
- }
-
- static function tearDownAssertHandler() {
- assert_options(ASSERT_ACTIVE, self::$assertValues['ASSERT_ACTIVE']);
- assert_options(ASSERT_WARNING, self::$assertValues['ASSERT_WARNING']);
- assert_options(ASSERT_CALLBACK, self::$assertValues['ASSERT_CALLBACK']);
- error_reporting(self::$assertValues['error_reporting']);
- set_error_handler(is_null(self::$assertValues['error_handler']) ? create_function('', 'return false;') : self::$assertValues['error_handler']);
- }
-
- static function runTests() {
- self::setupAssertHandler();
- echo "<pre>\n";
- $inst = new self();
- foreach(get_class_methods($inst) as $test) {
- if(substr($test, 0, 4) == 'test') {
- echo '-<b>', substr($test, 4), "</b>\n";
- call_user_func(array($inst, $test));
- }
- }
- echo "------------\nAll tests executed\n</pre>";
- self::tearDownAssertHandler();
- }
- }
-
- SurosqlWpdbTest::runTests();
-
- ?>