PageRenderTime 71ms CodeModel.GetById 23ms RepoModel.GetById 1ms app.codeStats 0ms

/tests/test_WPDB.php

https://bitbucket.org/SuRaMoN/surosql
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
  1. <?php
  2. // version: 3.0.0
  3. if(!defined('ABSPATH')) {
  4. header('Location: SurosqlWPdb/');
  5. exit;
  6. }
  7. require_once(dirname(__FILE__) . '/../surosql/Surosql.class.php');
  8. require_once(dirname(__FILE__) . '/../surosql/SurosqlOO.class.php');
  9. require_once(dirname(__FILE__) . '/../surosql/SurosqlWpdb.class.php');
  10. use ns\SurosqlWpdb;
  11. use ns\Surosql as osql;
  12. class Option extends \ns\SurosqlOO {
  13. static $surosql = array(
  14. 'alias' => 'option',
  15. 'table' => 'wp_options',
  16. 'primary' => 'option_id',
  17. );
  18. public $option_id;
  19. public $blog_id;
  20. public $option_name;
  21. public $option_value;
  22. public $autoload;
  23. }
  24. class SurosqlWpdbTest {
  25. static $assertValues = array();
  26. function __construct() {
  27. global $wpdb;
  28. $this->osql = $osql = SurosqlWpdb::register();
  29. $osql->aliases['post'] = array('table' => $wpdb->posts, 'where' => '`%post%`.`post_status` = "publish"', 'columns' => array('ID', 'post_author', 'post_date', 'post_title'));
  30. $osql->aliases['user'] = array('table' => $wpdb->users, 'columns' => array('ID', 'user_login', 'user_nicename'));
  31. $osql->connect('post - author(user)', '`%post%`.`post_author` = `%author%`.`ID`');
  32. }
  33. function testPHP52Style() {
  34. if(version_compare(PHP_VERSION, '5.3', '>=')) {
  35. return;
  36. }
  37. 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"))');
  38. assert(osql('a')->whereq('name=', "'")->andwhereq('age>', 7)->orwhereq('age<', 5)->sql() === 'SELECT * FROM `a` WHERE (((name= "\\\'") AND (age> "7")) OR (age< "5"))');
  39. }
  40. function testDataRetrieval() {
  41. $osql = $this->osql;
  42. assert(count($osql->selectoo()->from('post - author')->where('post.ID > %d')->bind(0)->all()) > 1);
  43. assert($osql->selectoo()->from('post - author')->first()->post->ID > 0);
  44. $iteratorcount = 0;
  45. foreach($osql->selectoo()->from('post') as $post) {
  46. $iteratorcount++;
  47. }
  48. assert($iteratorcount > 0);
  49. }
  50. function testDataRetrievalFromManager() {
  51. assert(Option::get(3)->first()->option_id == 3);
  52. assert(Option::get()->ifeq('option_id', 3)->first()->option_id == 3);
  53. assert(Option::get(array('option_id' => 3))->first()->option_id == 3);
  54. }
  55. function testDataModification() {
  56. osql::delete()->from('wp_options')->ifeq('option_name', 'surosql_test')->exec();
  57. $o = new Option(array('blog_id' => 0, 'option_name' => 'surosql_test', 'option_value' => 123987456));
  58. assert((int) $o->insertorupdate() > 0);
  59. assert(Option::get()->ifeq('option_value', 123987456)->first()->option_name == 'surosql_test');
  60. $o->option_value = 789654123;
  61. assert((int) $o->insertorupdate() > 0);
  62. assert(Option::get()->ifeq('option_value', 789654123)->first()->option_name == 'surosql_test');
  63. osql::delete()->from('wp_options')->ifeq('option_value', 789654123)->exec();
  64. assert(osql::count()->from('option')->ifeq('option_value', 789654123)->var() == 0);
  65. }
  66. static function setupAssertHandler() {
  67. self::$assertValues = array(
  68. 'ASSERT_ACTIVE' => assert_options(ASSERT_ACTIVE, 1),
  69. 'ASSERT_WARNING' => assert_options(ASSERT_WARNING, 0),
  70. 'ASSERT_CALLBACK' => assert_options(ASSERT_CALLBACK, create_function('$file,$line,$code', 'echo "------------\nAssertion Failed: File \'$file\'\nLine \'$line\'\nCode \'$code\'\n------------\n";')),
  71. 'error_reporting' => error_reporting(E_ERROR),
  72. 'error_handler' => set_error_handler(create_function('$errno, $errstr, $errfile, $errline', 'if(error_reporting() != 0) {throw new Exception($errstr, $errno);}'))
  73. );
  74. }
  75. static function tearDownAssertHandler() {
  76. assert_options(ASSERT_ACTIVE, self::$assertValues['ASSERT_ACTIVE']);
  77. assert_options(ASSERT_WARNING, self::$assertValues['ASSERT_WARNING']);
  78. assert_options(ASSERT_CALLBACK, self::$assertValues['ASSERT_CALLBACK']);
  79. error_reporting(self::$assertValues['error_reporting']);
  80. set_error_handler(is_null(self::$assertValues['error_handler']) ? create_function('', 'return false;') : self::$assertValues['error_handler']);
  81. }
  82. static function runTests() {
  83. self::setupAssertHandler();
  84. echo "<pre>\n";
  85. $inst = new self();
  86. foreach(get_class_methods($inst) as $test) {
  87. if(substr($test, 0, 4) == 'test') {
  88. echo '-<b>', substr($test, 4), "</b>\n";
  89. call_user_func(array($inst, $test));
  90. }
  91. }
  92. echo "------------\nAll tests executed\n</pre>";
  93. self::tearDownAssertHandler();
  94. }
  95. }
  96. SurosqlWpdbTest::runTests();
  97. ?>