PHP Classes

File: tests/QuoteThenQueryTest.php

Recommend this page to a friend!
  Classes of Scott Arciszewski   EasyDB   tests/QuoteThenQueryTest.php   Download  
File: tests/QuoteThenQueryTest.php
Role: Class source
Content type: text/plain
Description: Class source
Class: EasyDB
Simple Database Abstraction Layer around PDO
Author: By
Last change: manually changing to squish "method name is not in camel caps format" style error
single-lining test classes after composer run fix-style
running composer run fix-style
Date: 6 years ago
Size: 1,802 bytes
 

Contents

Class file image Download
<?php
declare(strict_types=1);

namespace
ParagonIE\EasyDB\Tests;

use
PDOStatement;

/**
 * Class ExecTest
 * @package ParagonIE\EasyDB\Tests
 */
class QuoteThenQueryTest extends EasyDBWriteTest
{

   
/**
     * @dataProvider goodFactoryCreateArgument2EasyDBInsertManyProvider
     * @depends ParagonIE\EasyDB\Tests\QuoteTest::testQuote
     * @depends ParagonIE\EasyDB\Tests\EscapeIdentifierTest::testEscapeIdentifier
     * @depends ParagonIE\EasyDB\Tests\EscapeIdentifierTest::testEscapeIdentifierThrowsSomething
     * @param callable $cb
     * @param array $maps
     */
   
public function testQuery(callable $cb, array $maps)
    {
       
$db = $this->easyDBExpectedFromCallable($cb);
       
$table = 'irrelevant_but_valid_tablename';

       
$first = $maps[0];

       
// Let's make sure our keys are escaped.
       
$keys = \array_keys($first);
        foreach (
$keys as $i => $v) {
           
$keys[$i] = $db->escapeIdentifier($v);
        }

        foreach (
$maps as $params) {
           
$queryString = "INSERT INTO " . $db->escapeIdentifier($table) . " (";

           
// Now let's append a list of our columns.
           
$queryString .= \implode(', ', $keys);

           
// This is the middle piece.
           
$queryString .= ") VALUES (";

           
// Now let's concatenate the ? placeholders
           
$queryString .= \implode(
               
', ',
                \
array_map(
                    function (
$val) use ($db) {
                        return
$db->quote($val);
                    },
                   
$params
               
)
            );

           
// Necessary to close the open ( above
           
$queryString .= ");";

           
$this->assertInstanceOf(PDOStatement::class, $db->query($queryString));
        }
    }
}