Query/tests/BaseDriverTest.php

142 lines
3.2 KiB
PHP
Raw Permalink Normal View History

2016-10-12 22:12:25 -04:00
<?php declare(strict_types=1);
/**
* Query
*
2016-10-12 22:12:25 -04:00
* SQL Query Builder / Database Abstraction Layer
*
2020-04-10 20:54:31 -04:00
* PHP version 7.4
2016-10-12 22:12:25 -04:00
*
* @package Query
* @author Timothy J. Warren <tim@timshomepage.net>
2020-03-18 11:31:56 -04:00
* @copyright 2012 - 2020 Timothy J. Warren
2016-10-12 22:12:25 -04:00
* @license http://www.opensource.org/licenses/mit-license.html MIT License
2019-12-11 16:49:42 -05:00
* @link https://git.timshomepage.net/aviat/Query
* @version 3.0.0
*/
namespace Query\Tests;
2019-12-10 12:17:40 -05:00
use Query\QueryBuilderInterface;
/**
* Parent Database Test Class
*/
abstract class BaseDriverTest extends TestCase {
/**
2019-12-10 12:17:40 -05:00
* @var QueryBuilderInterface|null
*/
protected static $db;
2014-02-14 22:08:19 -05:00
abstract public function testConnection();
2014-02-25 13:47:35 -05:00
2019-12-10 12:17:40 -05:00
public static function tearDownAfterClass(): void
{
self::$db = NULL;
}
2014-02-25 13:47:35 -05:00
2019-12-10 12:17:40 -05:00
public function testGetTables(): void
{
2016-10-13 21:55:23 -04:00
$tables = self::$db->getTables();
2018-01-26 08:39:30 -05:00
$this->assertTrue(\is_array($tables));
2014-04-08 17:13:41 -04:00
$this->assertTrue( ! empty($tables));
}
2014-02-25 13:47:35 -05:00
2019-12-10 12:17:40 -05:00
public function testGetSystemTables(): void
{
2016-10-13 21:55:23 -04:00
$tables = self::$db->getSystemTables();
2018-01-26 08:39:30 -05:00
$this->assertTrue(\is_array($tables));
2014-04-08 17:13:41 -04:00
$this->assertTrue( ! empty($tables));
}
2014-04-08 17:13:41 -04:00
2019-12-10 12:17:40 -05:00
public function testBackupData(): void
2012-04-18 16:28:12 -04:00
{
2018-01-26 08:39:30 -05:00
$this->assertTrue(\is_string(self::$db->getUtil()->backupData(['create_delete', FALSE])));
$this->assertTrue(\is_string(self::$db->getUtil()->backupData(['create_delete', TRUE])));
2012-04-18 16:28:12 -04:00
}
2014-02-25 13:47:35 -05:00
2019-12-10 12:17:40 -05:00
public function testGetColumns(): void
{
2016-10-13 21:55:23 -04:00
$cols = self::$db->getColumns('test');
2018-01-26 08:39:30 -05:00
$this->assertTrue(\is_array($cols));
2014-04-08 17:13:41 -04:00
$this->assertTrue( ! empty($cols));
}
2014-02-25 13:47:35 -05:00
2019-12-10 12:17:40 -05:00
public function testGetTypes(): void
{
2016-10-13 21:55:23 -04:00
$types = self::$db->getTypes();
2018-01-26 08:39:30 -05:00
$this->assertTrue(\is_array($types));
2014-04-08 17:13:41 -04:00
$this->assertTrue( ! empty($types));
}
2014-02-25 13:47:35 -05:00
2019-12-10 12:17:40 -05:00
public function testGetFKs(): void
{
2018-01-26 08:39:30 -05:00
$expected = [[
'child_column' => 'ext_id',
'parent_table' => 'testconstraints',
'parent_column' => 'someid',
'update' => 'CASCADE',
'delete' => 'CASCADE'
2018-01-26 08:39:30 -05:00
]];
2016-10-13 21:55:23 -04:00
$keys = self::$db->getFks('testconstraints2');
$this->assertEqual($expected, $keys);
}
2019-12-10 12:17:40 -05:00
public function testGetIndexes(): void
{
2016-10-13 21:55:23 -04:00
$keys = self::$db->getIndexes('test');
2018-01-26 08:39:30 -05:00
$this->assertTrue(\is_array($keys));
}
2019-12-10 12:17:40 -05:00
public function testGetViews(): void
{
2016-10-13 21:55:23 -04:00
$views = self::$db->getViews();
2019-12-11 16:48:43 -05:00
2018-01-26 08:39:30 -05:00
$this->assertTrue(\is_array($views));
2019-12-11 16:48:43 -05:00
foreach (['numbersview', 'testview'] as $searchView)
{
$this->assertTrue(in_array($searchView, $views, TRUE));
}
}
2019-12-10 12:17:40 -05:00
public function testGetTriggers(): void
2014-04-28 16:41:46 -04:00
{
// @TODO standardize trigger output for different databases
2016-10-13 21:55:23 -04:00
$triggers = self::$db->getTriggers();
2018-01-26 08:39:30 -05:00
$this->assertTrue(\is_array($triggers));
2014-04-28 16:41:46 -04:00
}
2019-12-10 12:17:40 -05:00
public function testGetSequences(): void
2014-04-28 16:41:46 -04:00
{
2016-10-13 21:55:23 -04:00
$seqs = self::$db->getSequences();
2014-04-28 16:41:46 -04:00
// Normalize sequence names
$seqs = array_map('strtolower', $seqs);
2018-01-26 08:39:30 -05:00
$expected = ['newtable_seq'];
2014-04-28 16:41:46 -04:00
2018-01-26 08:39:30 -05:00
$this->assertTrue(\is_array($seqs));
2014-04-28 16:41:46 -04:00
$this->assertEqual($expected, $seqs);
}
2019-12-10 12:17:40 -05:00
public function testGetProcedures(): void
2014-04-28 16:41:46 -04:00
{
2016-10-13 21:55:23 -04:00
$procedures = self::$db->getProcedures();
2018-01-26 08:39:30 -05:00
$this->assertTrue(\is_array($procedures));
2014-04-28 16:41:46 -04:00
}
2019-12-10 12:17:40 -05:00
public function testGetFunctions(): void
2014-04-28 16:41:46 -04:00
{
2016-10-13 21:55:23 -04:00
$funcs = self::$db->getFunctions();
2018-01-26 08:39:30 -05:00
$this->assertTrue(\is_array($funcs));
2014-04-28 16:41:46 -04:00
}
public function testGetVersion(): void
{
$version = self::$db->getVersion();
$this->assertTrue(is_string($version));
$this->assertTrue(strlen($version) > 0);
}
}
// End of db_test.php