diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index ca6b864..0000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,27 +0,0 @@ -before_script: - # Install dependencies - - sh build/docker_install.sh > /dev/null - - curl -sS https://getcomposer.org/installer | php - - php composer.phar install --ignore-platform-reqs -services: - - mysql:latest - - postgres:alpine - -variables: - MYSQL_ROOT_PASSWORD: foo-bar-baz - MYSQL_DATABASE: test - MYSQL_USER: test - MYSQL_PASSWORD: test - POSTGRES_DB: test - POSTGRES_USER: test - POSTGRES_PASSWORD: test - -test:7.1: - image: php:7.1-alpine - script: - - vendor/bin/phpunit -c build --no-coverage - -test:7.2: - image: php:7.2-alpine - script: - - vendor/bin/phpunit -c build --no-coverage diff --git a/RoboFile.php b/RoboFile.php index be6f8f0..7f26934 100644 --- a/RoboFile.php +++ b/RoboFile.php @@ -190,7 +190,7 @@ class RoboFile extends \Robo\Tasks { { $this->lint(); $this->taskPhpUnit() - ->configFile('phpunit.xml') + ->configFile('build/phpunit.xml') ->run(); $this->_run(["php tests/index.php"]); } @@ -290,4 +290,4 @@ class RoboFile extends \Robo\Tasks { { $this->taskExec(implode($join_on, $cmd_parts))->run(); } -} \ No newline at end of file +} diff --git a/build/header_comment.txt b/build/header_comment.txt index 3a2caa5..a7dad37 100644 --- a/build/header_comment.txt +++ b/build/header_comment.txt @@ -3,11 +3,12 @@ * * SQL Query Builder / Database Abstraction Layer * - * PHP version 7.1 + * PHP version 7.2 * * @package Query * @author Timothy J. Warren * @copyright 2012 - 2018 Timothy J. Warren * @license http://www.opensource.org/licenses/mit-license.html MIT License * @link https://git.timshomepage.net/aviat4ion/Query + * @version 3.0.0 */ diff --git a/build/phpunit.xml b/build/phpunit.xml index 5baa61a..5eebd20 100644 --- a/build/phpunit.xml +++ b/build/phpunit.xml @@ -1,6 +1,5 @@ @@ -29,6 +28,6 @@ - + \ No newline at end of file diff --git a/sonar-project.properties b/sonar-project.properties deleted file mode 100644 index ab9114d..0000000 --- a/sonar-project.properties +++ /dev/null @@ -1,7 +0,0 @@ -sonar.projectKey=query -sonar.projectName=Query Builder -sonar.projectVersion=2.5.1 -sonar.sources=src -sonar.language=php -sonar.php.coverage.reportPath=build/logs/clover.xml -sonar.php.tests.reportPath=build/logs/junit.xml \ No newline at end of file diff --git a/src/Drivers/AbstractDriver.php b/src/Drivers/AbstractDriver.php index 609170e..5cee898 100644 --- a/src/Drivers/AbstractDriver.php +++ b/src/Drivers/AbstractDriver.php @@ -14,6 +14,8 @@ */ namespace Query\Drivers; +use function dbFilter; + use InvalidArgumentException; use PDO; use PDOStatement; @@ -297,7 +299,7 @@ abstract class AbstractDriver */ public function quoteIdent($identifier) { - if (\is_array($identifier)) + if (is_array($identifier)) { return array_map([$this, __METHOD__], $identifier); } @@ -480,14 +482,14 @@ abstract class AbstractDriver public function driverQuery($query, $filteredIndex=TRUE): ?array { // Call the appropriate method, if it exists - if (\is_string($query) && method_exists($this->sql, $query)) + if (is_string($query) && method_exists($this->sql, $query)) { $query = $this->getSql()->$query(); } // Return if the values are returned instead of a query, // or if the query doesn't apply to the driver - if ( ! \is_string($query)) + if ( ! is_string($query)) { return $query; } @@ -498,7 +500,7 @@ abstract class AbstractDriver $flag = $filteredIndex ? PDO::FETCH_NUM : PDO::FETCH_ASSOC; $all = $res->fetchAll($flag); - return $filteredIndex ? \dbFilter($all, 0) : $all; + return $filteredIndex ? dbFilter($all, 0) : $all; } /** @@ -526,7 +528,7 @@ abstract class AbstractDriver * * @param string $table * @param mixed $data - * @return null|array + * @return array */ public function insertBatch(string $table, array $data=[]): array { @@ -539,6 +541,7 @@ abstract class AbstractDriver { $vals = array_merge($vals, array_values($group)); } + $table = $this->quoteTable($table); $fields = array_keys($firstRow); @@ -577,7 +580,7 @@ abstract class AbstractDriver // Get the keys of the current set of data, except the one used to // set the update condition $fields = array_unique( - array_reduce($data, function ($previous, $current) use (&$affectedRows, $where) { + array_reduce($data, static function ($previous, $current) use (&$affectedRows, $where) { $affectedRows++; $keys = array_diff(array_keys($current), [$where]); @@ -685,4 +688,4 @@ abstract class AbstractDriver return $this->tablePrefix . $str; } -} \ No newline at end of file +} diff --git a/src/Drivers/DriverInterface.php b/src/Drivers/DriverInterface.php index 64921ca..e4140ce 100644 --- a/src/Drivers/DriverInterface.php +++ b/src/Drivers/DriverInterface.php @@ -14,6 +14,7 @@ */ namespace Query\Drivers; +use InvalidArgumentException; use PDOStatement; /** @@ -36,8 +37,8 @@ interface DriverInterface { * * @param string $sql * @param array $data - * @return \PDOStatement|null - * @throws \InvalidArgumentException + * @return PDOStatement|null + * @throws InvalidArgumentException */ public function prepareQuery(string $sql, array $data): PDOStatement; @@ -129,15 +130,6 @@ interface DriverInterface { */ public function getTriggers(): ?array; - /** - * Quotes a string for use in a query (from native PDO) - * - * @param string $string - * @param int $parameter_type - * @return string - */ - public function quote($string, $parameter_type = NULL); - /** * Surrounds the string with the databases identifier escape characters * @@ -236,4 +228,4 @@ interface DriverInterface { * @return void */ public function setLastQuery(string $queryString): void; -} \ No newline at end of file +} diff --git a/src/QueryBuilder.php b/src/QueryBuilder.php index c58a6c0..dccb9e5 100644 --- a/src/QueryBuilder.php +++ b/src/QueryBuilder.php @@ -14,6 +14,8 @@ */ namespace Query; +use function regexInArray; + use BadMethodCallException; use PDOStatement; use Query\Drivers\DriverInterface; @@ -1059,7 +1061,7 @@ class QueryBuilder implements QueryBuilderInterface { // Determine the correct conjunction $conjunctionList = array_column($queryMap, 'conjunction'); - if (empty($queryMap) || ( ! \regexInArray($conjunctionList, "/^ ?\n?WHERE/i"))) + if (empty($queryMap) || ( ! regexInArray($conjunctionList, "/^ ?\n?WHERE/i"))) { $conj = "\nWHERE "; } @@ -1152,10 +1154,10 @@ class QueryBuilder implements QueryBuilderInterface { * @param int $totalTime * @return void */ - protected function _appendQuery(array $values = NULL, string $sql, int $totalTime): void + protected function _appendQuery(array $values, string $sql, int $totalTime): void { $evals = \is_array($values) ? $values : []; - $esql = str_replace('?', "%s", $sql); + $esql = str_replace('?', '%s', $sql); // Quote string values foreach($evals as &$v) diff --git a/tests/BaseDriverTest.php b/tests/BaseDriverTest.php index 3ec6328..ab63ece 100644 --- a/tests/BaseDriverTest.php +++ b/tests/BaseDriverTest.php @@ -14,58 +14,60 @@ */ namespace Query\Tests; +use Query\QueryBuilderInterface; + /** * Parent Database Test Class */ abstract class BaseDriverTest extends TestCase { /** - * @var \Query\QueryBuilderInterface|null + * @var QueryBuilderInterface|null */ protected static $db; abstract public function testConnection(); - public static function tearDownAfterClass() + public static function tearDownAfterClass(): void { self::$db = NULL; } - public function testGetTables() + public function testGetTables(): void { $tables = self::$db->getTables(); $this->assertTrue(\is_array($tables)); $this->assertTrue( ! empty($tables)); } - public function testGetSystemTables() + public function testGetSystemTables(): void { $tables = self::$db->getSystemTables(); $this->assertTrue(\is_array($tables)); $this->assertTrue( ! empty($tables)); } - public function testBackupData() + public function testBackupData(): void { $this->assertTrue(\is_string(self::$db->getUtil()->backupData(['create_delete', FALSE]))); $this->assertTrue(\is_string(self::$db->getUtil()->backupData(['create_delete', TRUE]))); } - public function testGetColumns() + public function testGetColumns(): void { $cols = self::$db->getColumns('test'); $this->assertTrue(\is_array($cols)); $this->assertTrue( ! empty($cols)); } - public function testGetTypes() + public function testGetTypes(): void { $types = self::$db->getTypes(); $this->assertTrue(\is_array($types)); $this->assertTrue( ! empty($types)); } - public function testGetFKs() + public function testGetFKs(): void { $expected = [[ 'child_column' => 'ext_id', @@ -79,13 +81,13 @@ abstract class BaseDriverTest extends TestCase { $this->assertEqual($expected, $keys); } - public function testGetIndexes() + public function testGetIndexes(): void { $keys = self::$db->getIndexes('test'); $this->assertTrue(\is_array($keys)); } - public function testGetViews() + public function testGetViews(): void { $views = self::$db->getViews(); $expected = ['numbersview', 'testview']; @@ -93,7 +95,7 @@ abstract class BaseDriverTest extends TestCase { $this->assertTrue(\is_array($views)); } - public function testGetTriggers() + public function testGetTriggers(): void { // @TODO standardize trigger output for different databases @@ -101,7 +103,7 @@ abstract class BaseDriverTest extends TestCase { $this->assertTrue(\is_array($triggers)); } - public function testGetSequences() + public function testGetSequences(): void { $seqs = self::$db->getSequences(); @@ -114,13 +116,13 @@ abstract class BaseDriverTest extends TestCase { $this->assertEqual($expected, $seqs); } - public function testGetProcedures() + public function testGetProcedures(): void { $procedures = self::$db->getProcedures(); $this->assertTrue(\is_array($procedures)); } - public function testGetFunctions() + public function testGetFunctions(): void { $funcs = self::$db->getFunctions(); $this->assertTrue(\is_array($funcs)); diff --git a/tests/BaseQueryBuilderTest.php b/tests/BaseQueryBuilderTest.php index fe27371..d808875 100644 --- a/tests/BaseQueryBuilderTest.php +++ b/tests/BaseQueryBuilderTest.php @@ -17,6 +17,7 @@ namespace Query\Tests; use BadMethodCallException; use PDO; use Query\Exception\BadDBDriverException; +use Query\QueryBuilderInterface; /** * Query builder parent test class @@ -24,7 +25,7 @@ use Query\Exception\BadDBDriverException; abstract class BaseQueryBuilderTest extends TestCase { /** - * @var \Query\QueryBuilderInterface|null + * @var QueryBuilderInterface|null */ protected static $db; @@ -36,7 +37,7 @@ abstract class BaseQueryBuilderTest extends TestCase { } } - public static function tearDownAfterClass() + public static function tearDownAfterClass(): void { if (PHP_SAPI !== 'cli' && PHP_SAPI !== 'phpdbg') { @@ -47,17 +48,17 @@ abstract class BaseQueryBuilderTest extends TestCase { } // ! Driver-specific results - abstract public function testQueryExplain(); + abstract public function testQueryExplain(): void; // ! Get tests - public function testInvalidConnectionName() + public function testInvalidConnectionName(): void { $this->expectException('InvalidArgumentException'); Query('foo'); } - public function testFunctionGet() + public function testFunctionGet(): void { $query = self::$db->select('id, COUNT(id) as count') ->from('test') @@ -67,7 +68,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testGet() + public function testGet(): void { $query = self::$db->get('test'); @@ -76,14 +77,14 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertTrue(\is_string($lastQuery)); } - public function testPrefixGet() + public function testPrefixGet(): void { $query = self::$db->from('test')->get(); $this->assertIsA($query, 'PDOStatement'); } - public function testGetWNumRows() + public function testGetWNumRows(): void { $query = self::$db->get('test'); $numrows = count($query->fetchAll(PDO::FETCH_NUM)); @@ -91,28 +92,28 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertEqual(self::$db->numRows(), $numrows); } - public function testGetLimit() + public function testGetLimit(): void { $query = self::$db->get('test', 2); $this->assertIsA($query, 'PDOStatement'); } - public function testGetLimitSkip() + public function testGetLimitSkip(): void { $query = self::$db->get('test', 2, 1); $this->assertIsA($query, 'PDOStatement'); } - public function testGetWhere() + public function testGetWhere(): void { $query = self::$db->getWhere('test', ['id !=' => 1], 2, 1); $this->assertIsA($query, 'PDOStatement'); } - public function testHaving() + public function testHaving(): void { $query = self::$db->select('id') ->from('test') @@ -124,7 +125,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testOrHaving() + public function testOrHaving(): void { $query = self::$db->select('id') ->from('test') @@ -136,7 +137,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } // ! Select tests - public function testSelectWhereGet() + public function testSelectWhereGet(): void { $query = self::$db->select('id, key as k, val') ->where('id >', 1) @@ -146,7 +147,17 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testSelectAvg() + public function testSelectWhereGetNoAs(): void + { + $query = self::$db->select('id, key, val') + ->where('id >', 1) + ->where('id <', 900) + ->get('test', 2, 1); + + $this->assertIsA($query, 'PDOStatement'); + } + + public function testSelectAvg(): void { $query = self::$db->selectAvg('id', 'di') ->get('test'); @@ -154,7 +165,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testSelectSum() + public function testSelectSum(): void { $query = self::$db->selectSum('id', 'di') ->get('test'); @@ -162,7 +173,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testSelectDistinct() + public function testSelectDistinct(): void { $query = self::$db->selectSum('id', 'di') ->distinct() @@ -171,7 +182,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testSelectGet() + public function testSelectGet(): void { $query = self::$db->select('id, key as k, val') ->get('test', 2, 1); @@ -179,7 +190,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testSelectFromGet() + public function testSelectFromGet(): void { $query = self::$db->select('id, key as k, val') ->from('test ct') @@ -189,7 +200,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testSelectFromLimitGet() + public function testSelectFromLimitGet(): void { $query = self::$db->select('id, key as k, val') ->from('test ct') @@ -200,7 +211,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testSelectWhereGet2() + public function testSelectWhereGet2(): void { $query = self::$db->select('id, key as k, val') ->where('id !=', 1) @@ -209,7 +220,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testSelectMax() + public function testSelectMax(): void { $query = self::$db->selectMax('id', 'di') ->get('test'); @@ -217,7 +228,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testSelectMin() + public function testSelectMin(): void { $query = self::$db->selectMin('id', 'di') ->get('test'); @@ -225,7 +236,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testMultiOrderBy() + public function testMultiOrderBy(): void { $query = self::$db->from('test') ->orderBy('id, key') @@ -234,7 +245,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } // ! Grouping tests - public function testGroup() + public function testGroup(): void { $query = self::$db->select('id, key as k, val') ->from('test') @@ -248,7 +259,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testOrGroup() + public function testOrGroup(): void { $query = self::$db->select('id, key as k, val') ->from('test') @@ -265,7 +276,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testOrNotGroup() + public function testOrNotGroup(): void { $query = self::$db->select('id, key as k, val') ->from('test') @@ -282,7 +293,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testAndNotGroupStart() + public function testAndNotGroupStart(): void { $query = self::$db->select('id, key as k, val') ->from('test') @@ -299,7 +310,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testNotGroupStart() + public function testNotGroupStart(): void { $query = self::$db->select('id, key as k, val') ->from('test') @@ -312,7 +323,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testGroupCamelCase() + public function testGroupCamelCase(): void { $query = self::$db->select('id, key as k, val') ->from('test') @@ -329,7 +340,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } // ! Where In tests - public function testWhereIn() + public function testWhereIn(): void { $query = self::$db->from('test') ->whereIn('id', [0, 6, 56, 563, 341]) @@ -338,7 +349,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testOrWhereIn() + public function testOrWhereIn(): void { $query = self::$db->from('test') ->where('key', 'false') @@ -348,7 +359,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testWhereNotIn() + public function testWhereNotIn(): void { $query = self::$db->from('test') ->where('key', 'false') @@ -358,7 +369,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testOrWhereNotIn() + public function testOrWhereNotIn(): void { $query = self::$db->from('test') ->where('key', 'false') @@ -368,7 +379,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } // ! Query modifier tests - public function testOrderBy() + public function testOrderBy(): void { $query = self::$db->select('id, key as k, val') ->from('test') @@ -382,7 +393,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testOrderByRandom() + public function testOrderByRandom(): void { $query = self::$db->select('id, key as k, val') ->from('test') @@ -395,7 +406,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testGroupBy() + public function testGroupBy(): void { $query = self::$db->select('id, key as k, val') ->from('test') @@ -413,7 +424,7 @@ abstract class BaseQueryBuilderTest extends TestCase { //public function testOr - public function testOrWhere() + public function testOrWhere(): void { $query = self::$db->select('id, key as k, val') ->from('test') @@ -425,7 +436,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testLike() + public function testLike(): void { $query = self::$db->from('test') ->like('key', 'og') @@ -434,7 +445,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testOrLike() + public function testOrLike(): void { $query = self::$db->from('test') ->like('key', 'og') @@ -444,7 +455,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testOrNotLike() + public function testOrNotLike(): void { $query = self::$db->from('test') ->like('key', 'og', 'before') @@ -454,7 +465,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testNotLike() + public function testNotLike(): void { $query = self::$db->from('test') ->like('key', 'og', 'before') @@ -464,7 +475,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testLikeBefore() + public function testLikeBefore(): void { $query = self::$db->from('test') ->like('key', 'og', 'before') @@ -473,7 +484,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testLikeAfter() + public function testLikeAfter(): void { $query = self::$db->from('test') ->like('key', 'og', 'after') @@ -482,7 +493,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testJoin() + public function testJoin(): void { $query = self::$db->from('test ct') ->join('join cj', 'cj.id = ct.id') @@ -491,7 +502,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testLeftJoin() + public function testLeftJoin(): void { $query = self::$db->from('test ct') ->join('join cj', 'cj.id = ct.id', 'left') @@ -500,7 +511,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testInnerJoin() + public function testInnerJoin(): void { $query = self::$db->from('test ct') ->join('join cj', 'cj.id = ct.id', 'inner') @@ -509,7 +520,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testJoinWithMultipleWhereValues() + public function testJoinWithMultipleWhereValues(): void { $query = self::$db->from('test ct') ->join('join cj', 'cj.id=ct.id', 'inner') @@ -523,7 +534,7 @@ abstract class BaseQueryBuilderTest extends TestCase { } // ! DB update tests - public function testInsert() + public function testInsert(): void { $query = self::$db->set('id', 98) ->set('key', 84) @@ -534,7 +545,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertTrue(self::$db->affectedRows() > 0); } - public function testInsertArray() + public function testInsertArray(): void { $query = self::$db->insert('test', [ 'id' => 587, @@ -545,7 +556,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testInsertBatch() + public function testInsertBatch(): void { $data = [ [ @@ -570,7 +581,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testUpdate() + public function testUpdate(): void { $query = self::$db->where('id', 7) ->update('test', [ @@ -582,13 +593,13 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testUpdateBatchNull() + public function testUpdateBatchNull(): void { $query = self::$db->updateBatch('test', [], ''); $this->assertNull($query); } - public function testDriverUpdateBatch() + public function testDriverUpdateBatch(): void { $data = [ [ @@ -607,7 +618,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertEquals(2, $affectedRows); } - public function testSetArrayUpdate() + public function testSetArrayUpdate(): void { $array = [ 'id' => 22, @@ -622,7 +633,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testWhereSetUpdate() + public function testWhereSetUpdate(): void { $query = self::$db->where('id', 36) ->set('id', 36) @@ -633,14 +644,14 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertIsA($query, 'PDOStatement'); } - public function testDelete() + public function testDelete(): void { $query = self::$db->delete('test', ['id' => 5]); $this->assertIsA($query, 'PDOStatement'); } - public function testDeleteWithMultipleWhereValues() + public function testDeleteWithMultipleWhereValues(): void { $query = self::$db->delete('test', [ 'id' => 5, @@ -651,21 +662,21 @@ abstract class BaseQueryBuilderTest extends TestCase { } // ! Non-data read queries - public function testCountAll() + public function testCountAll(): void { $query = self::$db->countAll('test'); $this->assertTrue(is_numeric($query)); } - public function testCountAllResults() + public function testCountAllResults(): void { $query = self::$db->countAllResults('test'); $this->assertTrue(is_numeric($query)); } - public function testCountAllResults2() + public function testCountAllResults2(): void { $query = self::$db->select('id, key as k, val') ->from('test') @@ -677,25 +688,25 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertTrue(is_numeric($query)); } - public function testNumRows() + public function testNumRows(): void { self::$db->get('test'); $this->assertTrue(is_numeric(self::$db->numRows())); } // ! Compiled Query tests - public function testGetCompiledSelect() + public function testGetCompiledSelect(): void { $sql = self::$db->getCompiledSelect('test'); $qbRes = self::$db->get('test'); $sqlRes = self::$db->query($sql); - $this->assertIsA($qbRes,'PDOStatement', "Query Builder Result is a PDO Statement"); - $this->assertIsA($sqlRes, 'PDOStatement', "SQL Result is a PDO Statement"); + $this->assertIsA($qbRes,'PDOStatement', 'Query Builder Result is a PDO Statement'); + $this->assertIsA($sqlRes, 'PDOStatement', 'SQL Result is a PDO Statement'); //$this->assertEquals($qbRes, $sqlRes); } - public function testGetCompiledUpdate() + public function testGetCompiledUpdate(): void { $sql = self::$db->set([ 'id' => 4, @@ -706,7 +717,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertTrue(\is_string($sql)); } - public function testGetCompiledInsert() + public function testGetCompiledInsert(): void { $sql = self::$db->set([ 'id' => 4, @@ -717,7 +728,7 @@ abstract class BaseQueryBuilderTest extends TestCase { $this->assertTrue(\is_string($sql)); } - public function testGetCompiledDelete() + public function testGetCompiledDelete(): void { $sql = self::$db->where('id', 4) ->getCompiledDelete('test'); @@ -728,7 +739,7 @@ abstract class BaseQueryBuilderTest extends TestCase { /** * Handles invalid drivers */ - public function testBadDriver() + public function testBadDriver(): void { $params = [ 'host' => '127.0.0.1', @@ -744,14 +755,14 @@ abstract class BaseQueryBuilderTest extends TestCase { self::$db = Query($params); } - public function testBadMethod() + public function testBadMethod(): void { $this->expectException(BadMethodCallException::class); self::$db->foo(); } - public function testBadNumRows() + public function testBadNumRows(): void { self::$db->set([ 'id' => 999, diff --git a/tests/ConnectionManagerTest.php b/tests/ConnectionManagerTest.php index 3019d0c..054185d 100644 --- a/tests/ConnectionManagerTest.php +++ b/tests/ConnectionManagerTest.php @@ -21,17 +21,17 @@ class ConnectionManagerTest extends TestCase { protected static $instance; - public static function setUpBeforeClass() + public static function setUpBeforeClass(): void { self::$instance = ConnectionManager::getInstance(); } - public static function tearDownAfterClass() + public static function tearDownAfterClass(): void { self::$instance = NULL; } - public function testNoClone() + public function testNoClone(): void { $this->expectException('DomainException'); $this->expectExceptionMessage("Can't clone singleton"); @@ -39,7 +39,7 @@ class ConnectionManagerTest extends TestCase { $this->assertNull($clone); } - public function testNoSerialize() + public function testNoSerialize(): void { $this->expectException(DomainException::class); $this->expectExceptionMessage('No serializing of singleton'); @@ -50,14 +50,14 @@ class ConnectionManagerTest extends TestCase { self::$instance->__sleep(); } - public function testNoUnserialize() + public function testNoUnserialize(): void { $this->expectException(DomainException::class); $this->expectExceptionMessage("Can't unserialize singleton"); self::$instance->__wakeup(); } - public function testParseParams() + public function testParseParams(): void { $params = new class { public $type = 'sqlite'; @@ -77,7 +77,7 @@ class ConnectionManagerTest extends TestCase { $this->assertEqual($expected, self::$instance->parseParams($params)); } - public function testConnect() + public function testConnect(): void { $params = new class { public $type = 'sqlite'; @@ -96,7 +96,7 @@ class ConnectionManagerTest extends TestCase { $this->assertEqual($conn, self::$instance->getConnection()); } - public function testGetConnection() + public function testGetConnection(): void { $params = (object) [ 'type' => 'sqlite', diff --git a/tests/Drivers/MySQL/MySQLDriverTest.php b/tests/Drivers/MySQL/MySQLDriverTest.php index 66002bc..a3d7705 100644 --- a/tests/Drivers/MySQL/MySQLDriverTest.php +++ b/tests/Drivers/MySQL/MySQLDriverTest.php @@ -26,7 +26,7 @@ use TypeError; */ class MySQLDriverTest extends BaseDriverTest { - public static function setUpBeforeClass() + public static function setUpBeforeClass(): void { $params = get_json_config(); if ($var = getenv('TRAVIS')) @@ -46,17 +46,17 @@ class MySQLDriverTest extends BaseDriverTest { self::$db->setTablePrefix('create_'); } - public function testExists() + public function testExists(): void { $this->assertTrue(\in_array('mysql', PDO::getAvailableDrivers(), TRUE)); } - public function testConnection() + public function testConnection(): void { $this->assertIsA(self::$db, Driver::class); } - public function testCreateTable() + public function testCreateTable(): void { self::$db->exec(file_get_contents(QTEST_DIR.'/db_files/mysql.sql')); @@ -95,7 +95,7 @@ class MySQLDriverTest extends BaseDriverTest { } - public function testTruncate() + public function testTruncate(): void { self::$db->truncate('test'); $this->assertEquals(0, self::$db->countAll('test')); @@ -104,13 +104,13 @@ class MySQLDriverTest extends BaseDriverTest { $this->assertEquals(0, self::$db->countAll('join')); } - public function testPreparedStatements() + public function testPreparedStatements(): void { $sql = <<prepareQuery($sql, [1,"boogers", "Gross"]); + $statement = self::$db->prepareQuery($sql, [1, 'boogers', 'Gross']); $res = $statement->execute(); @@ -118,7 +118,7 @@ SQL; } - public function testBadPreparedStatement() + public function testBadPreparedStatement(): void { if (is_a($this, \UnitTestCase::class)) { @@ -137,21 +137,21 @@ SQL; } - public function testPrepareExecute() + public function testPrepareExecute(): void { $sql = <<prepareExecute($sql, [ - 2, "works", 'also?' + 2, 'works', 'also?' ]); $this->assertInstanceOf('PDOStatement', $res); } - public function testCommitTransaction() + public function testCommitTransaction(): void { $res = self::$db->beginTransaction(); @@ -162,7 +162,7 @@ SQL; $this->assertTrue($res); } - public function testRollbackTransaction() + public function testRollbackTransaction(): void { $res = self::$db->beginTransaction(); @@ -173,17 +173,17 @@ SQL; $this->assertTrue($res); } - public function testGetSchemas() + public function testGetSchemas(): void { $this->assertNull(self::$db->getSchemas()); } - public function testGetSequences() + public function testGetSequences(): void { $this->assertNull(self::$db->getSequences()); } - public function testBackup() + public function testBackup(): void { $this->assertTrue(\is_string(self::$db->getUtil()->backupStructure())); } diff --git a/tests/Drivers/MySQL/MySQLQueryBuilderTest.php b/tests/Drivers/MySQL/MySQLQueryBuilderTest.php index 0cc74df..c9bd721 100644 --- a/tests/Drivers/MySQL/MySQLQueryBuilderTest.php +++ b/tests/Drivers/MySQL/MySQLQueryBuilderTest.php @@ -22,7 +22,7 @@ use Query\Tests\BaseQueryBuilderTest; */ class MySQLQueryBuilderTest extends BaseQueryBuilderTest { - public static function setUpBeforeClass() + public static function setUpBeforeClass(): void { $params = get_json_config(); if ($var = getenv('TRAVIS')) // Travis CI Connection Info @@ -49,12 +49,12 @@ class MySQLQueryBuilderTest extends BaseQueryBuilderTest { self::$db = Query($params); } - public function testExists() + public function testExists(): void { $this->assertTrue(\in_array('mysql', PDO::getAvailableDrivers(), TRUE)); } - public function testQueryExplain() + public function testQueryExplain(): void { $query = self::$db->select('id, key as k, val') ->explain() diff --git a/tests/Drivers/PgSQL/PgSQLDriverTest.php b/tests/Drivers/PgSQL/PgSQLDriverTest.php index ea70b5a..d42a086 100644 --- a/tests/Drivers/PgSQL/PgSQLDriverTest.php +++ b/tests/Drivers/PgSQL/PgSQLDriverTest.php @@ -27,7 +27,7 @@ use TypeError; */ class PgSQLDriverTest extends BaseDriverTest { - public function setUp() + public function setUp(): void { // If the database isn't installed, skip the tests if ( ! class_exists(Driver::class)) @@ -36,7 +36,7 @@ class PgSQLDriverTest extends BaseDriverTest { } } - public static function setUpBeforeClass() + public static function setUpBeforeClass(): void { $params = get_json_config(); @@ -54,20 +54,20 @@ class PgSQLDriverTest extends BaseDriverTest { self::$db->setTablePrefix('create_'); } - public function testExists() + public function testExists(): void { $drivers = PDO::getAvailableDrivers(); $this->assertTrue(in_array('pgsql', $drivers, TRUE)); } - public function testConnection() + public function testConnection(): void { if (empty(self::$db)) return; $this->assertIsA(self::$db, Driver::class); } - public function testCreateTable() + public function testCreateTable(): void { self::$db->exec(file_get_contents(QTEST_DIR.'/db_files/pgsql.sql')); @@ -117,7 +117,7 @@ class PgSQLDriverTest extends BaseDriverTest { } - public function testTruncate() + public function testTruncate(): void { self::$db->truncate('test'); $this->assertEquals(0, self::$db->countAll('test')); @@ -126,7 +126,7 @@ class PgSQLDriverTest extends BaseDriverTest { $this->assertEquals(0, self::$db->countAll('join')); } - public function testPreparedStatements() + public function testPreparedStatements(): void { $sql = <<prepareQuery($sql, 'foo'); } - public function testPrepareExecute() + public function testPrepareExecute(): void { if (empty(self::$db)) return; @@ -186,7 +186,7 @@ SQL; ], $res); } - public function testCommitTransaction() + public function testCommitTransaction(): void { if (empty(self::$db)) return; @@ -199,7 +199,7 @@ SQL; $this->assertTrue($res); } - public function testRollbackTransaction() + public function testRollbackTransaction(): void { if (empty(self::$db)) return; @@ -212,17 +212,17 @@ SQL; $this->assertTrue($res); } - public function testGetSchemas() + public function testGetSchemas(): void { $this->assertTrue(\is_array(self::$db->getSchemas())); } - public function testGetDBs() + public function testGetDBs(): void { $this->assertTrue(\is_array(self::$db->getDbs())); } - public function testGetFunctions() + public function testGetFunctions(): void { $this->assertNull(self::$db->getFunctions()); } diff --git a/tests/Drivers/PgSQL/PgSQLQueryBuilderTest.php b/tests/Drivers/PgSQL/PgSQLQueryBuilderTest.php index 879f028..1ebee90 100644 --- a/tests/Drivers/PgSQL/PgSQLQueryBuilderTest.php +++ b/tests/Drivers/PgSQL/PgSQLQueryBuilderTest.php @@ -22,7 +22,7 @@ use Query\Tests\BaseQueryBuilderTest; */ class PgSQLQueryBuilderTest extends BaseQueryBuilderTest { - public static function setUpBeforeClass() + public static function setUpBeforeClass(): void { $params = get_json_config(); if (getenv('TRAVIS')) // Travis CI Connection Info @@ -51,7 +51,7 @@ class PgSQLQueryBuilderTest extends BaseQueryBuilderTest { self::$db = Query($params); } - public function setUp() + public function setUp(): void { // If the database isn't installed, skip the tests if ( ! \in_array('pgsql', PDO::getAvailableDrivers(), TRUE)) @@ -60,12 +60,12 @@ class PgSQLQueryBuilderTest extends BaseQueryBuilderTest { } } - public function testExists() + public function testExists(): void { $this->assertTrue(\in_array('pgsql', PDO::getAvailableDrivers(), TRUE)); } - public function testQueryExplain() + public function testQueryExplain(): void { $query = self::$db->select('id, key as k, val') ->explain() @@ -109,7 +109,7 @@ class PgSQLQueryBuilderTest extends BaseQueryBuilderTest { $this->assertEqual($expected, $res);*/ } - public function testBackupStructure() + public function testBackupStructure(): void { $this->assertEquals('', self::$db->getUtil()->backupStructure()); } diff --git a/tests/Drivers/SQLite/SQLiteDriverTest.php b/tests/Drivers/SQLite/SQLiteDriverTest.php index e262b43..32f5731 100644 --- a/tests/Drivers/SQLite/SQLiteDriverTest.php +++ b/tests/Drivers/SQLite/SQLiteDriverTest.php @@ -27,7 +27,7 @@ use Query\Tests\BaseDriverTest; */ class SQLiteDriverTest extends BaseDriverTest { - public static function setupBeforeClass() + public static function setupBeforeClass(): void { $params = [ 'type' => 'sqlite', @@ -47,7 +47,7 @@ class SQLiteDriverTest extends BaseDriverTest { // ! Util Method tests // -------------------------------------------------------------------------- - public function testCreateTable() + public function testCreateTable(): void { self::$db->exec(file_get_contents(QTEST_DIR.'/db_files/sqlite.sql')); @@ -80,7 +80,7 @@ SQL; $this->assertEqual($expectedArray, $sqlArray); }*/ - public function testBackupStructure() + public function testBackupStructure(): void { $sql = mb_trim(self::$db->getUtil()->backupStructure()); $expected = <<assertEqual($expectedArray, $resultArray); } - public function testDeleteTable() + public function testDeleteTable(): void { $sql = self::$db->getUtil()->deleteTable('create_delete'); @@ -170,7 +170,7 @@ SQL; // ! General tests // -------------------------------------------------------------------------- - public function testConnection() + public function testConnection(): void { $class = Driver::class; @@ -182,13 +182,13 @@ SQL; unset($db); } - public function testTruncate() + public function testTruncate(): void { self::$db->truncate('create_test'); $this->assertEquals(0, self::$db->countAll('create_test')); } - public function testPreparedStatements() + public function testPreparedStatements(): void { $sql = <<beginTransaction(); @@ -239,7 +239,7 @@ SQL; $this->assertTrue($res); } - public function testRollbackTransaction() + public function testRollbackTransaction(): void { $res = self::$db->beginTransaction(); @@ -250,12 +250,12 @@ SQL; $this->assertTrue($res); } - public function testGetDBs() + public function testGetDBs(): void { $this->assertTrue(\is_array(self::$db->getDbs())); } - public function testGetSchemas() + public function testGetSchemas(): void { $this->assertNull(self::$db->getSchemas()); } @@ -264,25 +264,25 @@ SQL; // ! SQL tests // -------------------------------------------------------------------------- - public function testGetSystemTables() + public function testGetSystemTables(): void { $sql = self::$db->getSystemTables(); $this->assertTrue(\is_array($sql)); } - public function testGetSequences() + public function testGetSequences(): void { $sql = self::$db->getSequences(); $this->assertEquals(['create_test'], $sql); } - public function testGetFunctions() + public function testGetFunctions(): void { $this->expectException(NotImplementedException::class); self::$db->getFunctions(); } - public function testGetProcedures() + public function testGetProcedures(): void { $this->expectException(NotImplementedException::class); self::$db->getProcedures(); diff --git a/tests/Drivers/SQLite/SQLiteQueryBuilderTest.php b/tests/Drivers/SQLite/SQLiteQueryBuilderTest.php index af9b34f..daf77a8 100644 --- a/tests/Drivers/SQLite/SQLiteQueryBuilderTest.php +++ b/tests/Drivers/SQLite/SQLiteQueryBuilderTest.php @@ -24,20 +24,20 @@ use Query\Tests\BaseQueryBuilderTest; */ class SQLiteQueryBuilderTest extends BaseQueryBuilderTest { - public static function setUpBeforeClass() + public static function setUpBeforeClass(): void { // Defined in the SQLiteTest.php file self::$db = Query('test_sqlite'); } - public function testQueryFunctionAlias() + public function testQueryFunctionAlias(): void { $db = Query('test_sqlite'); $this->assertTrue(self::$db === $db, 'Alias passed into query function gives the original object back'); } - public function testQueryExplain() + public function testQueryExplain(): void { $query = self::$db->select('id, key as k, val') ->explain() @@ -84,6 +84,15 @@ use Query\Tests\BaseQueryBuilderTest; ], ]; + $expectedPossibilities[] = [ + [ + 'id' => '6', + 'parent' => '0', + 'notused' => '0', + 'detail' => 'SEARCH TABLE create_test USING INTEGER PRIMARY KEY (rowid>? AND rowidparser = new QueryParser($db); } - public function testGeneric() + public function testGeneric(): void { $matches = $this->parser->parseJoin('table1.field1=table2.field2'); $this->assertEqual($matches['combined'], [ @@ -40,7 +40,7 @@ class QueryParserTest extends TestCase { ]); } - public function testGeneric2() + public function testGeneric2(): void { $matches = $this->parser->parseJoin('db1.table1.field1!=db2.table2.field2'); $this->assertEqual($matches['combined'], [ @@ -48,7 +48,7 @@ class QueryParserTest extends TestCase { ]); } - public function testWUnderscore() + public function testWUnderscore(): void { $matches = $this->parser->parseJoin('table_1.field1 = tab_le2.field_2'); $this->assertEqual($matches['combined'], [ @@ -56,7 +56,7 @@ class QueryParserTest extends TestCase { ]); } - public function testFunction() + public function testFunction(): void { $matches = $this->parser->parseJoin('table1.field1 > SUM(3+5)'); $this->assertEqual($matches['combined'], [