for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace QB\MySQL\Statement;
use QB\Generic\Expr\Expr;
use QB\Generic\Statement\InsertTest as GenericInsertTest;
class InsertTest extends GenericInsertTest
{
public function testOnDuplicateKeyUpdate()
$sql = (string)$this->getSut('foo')
->addModifier(Insert::HIGH_PRIORITY)
->addValues('1234', '2345')
->setOnDuplicateKeyUpdate(new Expr('bar = bar + 1'));
$parts = [];
$parts[] = 'INSERT HIGH_PRIORITY INTO foo';
$parts[] = 'VALUES (?, ?)';
$parts[] = 'ON DUPLICATE KEY UPDATE bar = bar + 1';
$expectedSql = implode(PHP_EOL, $parts);
$this->assertSame($expectedSql, $sql);
}
public function testComplex()
$select = new Select();
$select->addColumn(new Expr('1'));
->addModifier(Insert::IGNORE)
->setSelect($select);
$parts[] = 'INSERT IGNORE INTO foo';
$parts[] = 'SELECT 1';
/**
* @param string $table
*
* @return Insert
*/
protected function getSut(string $table): Insert
return (new Insert())->setInto($table);