mirror of
https://github.com/torrentpier/torrentpier
synced 2025-08-22 22:33:55 -07:00
Change in code style and fix in phpdoc
This commit is contained in:
parent
ed691c8149
commit
2ce3fbe595
13 changed files with 266 additions and 7 deletions
|
@ -31,8 +31,12 @@ class Adapter extends \Zend\Db\Adapter\Adapter
|
|||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function __construct($driver, PlatformInterface $platform = null, ResultSetInterface $queryResultPrototype = null, ProfilerInterface $profiler = null)
|
||||
{
|
||||
public function __construct(
|
||||
$driver,
|
||||
PlatformInterface $platform = null,
|
||||
ResultSetInterface $queryResultPrototype = null,
|
||||
ProfilerInterface $profiler = null
|
||||
) {
|
||||
if ($driver instanceof Config) {
|
||||
$driver = $driver->toArray();
|
||||
}
|
||||
|
@ -85,7 +89,6 @@ class Adapter extends \Zend\Db\Adapter\Adapter
|
|||
$table = $this->prepareTable($table);
|
||||
$sql = $this->getSql();
|
||||
|
||||
|
||||
/** @var Insert $sqlInsert */
|
||||
$sqlInsert = $sql->insert($table);
|
||||
$sqlInsert->values($values);
|
||||
|
|
14
src/Di.php
14
src/Di.php
|
@ -12,12 +12,21 @@ class Di extends Container
|
|||
{
|
||||
private static $instance;
|
||||
|
||||
/**
|
||||
* Di constructor.
|
||||
*
|
||||
* @param array $values
|
||||
*/
|
||||
public function __construct(array $values = [])
|
||||
{
|
||||
parent::__construct($values);
|
||||
static::$instance = $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Di
|
||||
* @throws \RuntimeException
|
||||
*/
|
||||
public static function getInstance()
|
||||
{
|
||||
if (static::$instance instanceof Container) {
|
||||
|
@ -27,6 +36,11 @@ class Di extends Container
|
|||
throw new \RuntimeException('The container has not been initialized');
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $id
|
||||
* @return mixed
|
||||
* @throws \RuntimeException
|
||||
*/
|
||||
public function __get($id)
|
||||
{
|
||||
if ($this->offsetExists($id)) {
|
||||
|
|
|
@ -7,6 +7,10 @@ use Pimple\ServiceProviderInterface;
|
|||
use TorrentPier\Config;
|
||||
use Zend\Config\Factory;
|
||||
|
||||
/**
|
||||
* Class ConfigServiceProvider
|
||||
* @package TorrentPier\ServiceProviders
|
||||
*/
|
||||
class ConfigServiceProvider implements ServiceProviderInterface
|
||||
{
|
||||
/**
|
||||
|
|
|
@ -7,6 +7,10 @@ use Pimple\ServiceProviderInterface;
|
|||
use TorrentPier\Db\Adapter;
|
||||
use TorrentPier\Db\Connection;
|
||||
|
||||
/**
|
||||
* Class DbServiceProvider
|
||||
* @package TorrentPier\ServiceProviders
|
||||
*/
|
||||
class DbServiceProvider implements ServiceProviderInterface
|
||||
{
|
||||
/**
|
||||
|
|
|
@ -6,6 +6,10 @@ use Pimple\Container;
|
|||
use Pimple\ServiceProviderInterface;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
|
||||
/**
|
||||
* Class RequestServiceProvider
|
||||
* @package TorrentPier\ServiceProviders
|
||||
*/
|
||||
class RequestServiceProvider implements ServiceProviderInterface
|
||||
{
|
||||
public function register(Container $container)
|
||||
|
|
|
@ -11,6 +11,10 @@ use Zend\Db\Adapter\Adapter;
|
|||
use Zend\Db\Adapter\Driver\Mysqli\Mysqli;
|
||||
use Zend\Db\Adapter\Driver\Pdo\Pdo;
|
||||
|
||||
/**
|
||||
* Class SphinxServiceProvider
|
||||
* @package TorrentPier\ServiceProviders
|
||||
*/
|
||||
class SphinxServiceProvider implements ServiceProviderInterface
|
||||
{
|
||||
/**
|
||||
|
|
|
@ -7,6 +7,10 @@ use Pimple\ServiceProviderInterface;
|
|||
use Symfony\Component\Translation\Loader\PhpFileLoader;
|
||||
use Symfony\Component\Translation\Translator;
|
||||
|
||||
/**
|
||||
* Class TranslationServiceProvider
|
||||
* @package TorrentPier\ServiceProviders
|
||||
*/
|
||||
class TranslationServiceProvider implements ServiceProviderInterface
|
||||
{
|
||||
public function register(Container $container)
|
||||
|
|
|
@ -6,6 +6,10 @@ use Pimple\Container;
|
|||
use Pimple\ServiceProviderInterface;
|
||||
use Symfony\Bridge\Twig\Extension\TranslationExtension;
|
||||
|
||||
/**
|
||||
* Class TwigServiceProvider
|
||||
* @package TorrentPier\ServiceProviders
|
||||
*/
|
||||
class TwigServiceProvider implements ServiceProviderInterface
|
||||
{
|
||||
public function register(Container $container)
|
||||
|
|
|
@ -6,6 +6,10 @@ use Pimple\Container;
|
|||
use Pimple\ServiceProviderInterface;
|
||||
use TorrentPier\View;
|
||||
|
||||
/**
|
||||
* Class ViewServiceProvider
|
||||
* @package TorrentPier\ServiceProviders
|
||||
*/
|
||||
class ViewServiceProvider implements ServiceProviderInterface
|
||||
{
|
||||
public function register(Container $container)
|
||||
|
|
|
@ -9,6 +9,11 @@ class View
|
|||
*/
|
||||
protected $twig;
|
||||
|
||||
/**
|
||||
* View constructor.
|
||||
*
|
||||
* @param \Twig_Environment $twig
|
||||
*/
|
||||
public function __construct(\Twig_Environment $twig)
|
||||
{
|
||||
$this->twig = $twig;
|
||||
|
@ -17,11 +22,10 @@ class View
|
|||
/**
|
||||
* @param $template
|
||||
* @param array $params
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function make($template, $params = [])
|
||||
{
|
||||
return $this->twig->render($template.'.twig', $params);
|
||||
return $this->twig->render($template . '.twig', $params);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ class ConfigTest extends \PHPUnit_Framework_TestCase
|
|||
}
|
||||
|
||||
/**
|
||||
* Get value from array by key
|
||||
* Get value from array by key.
|
||||
*
|
||||
* @see \TorrentPier\Config::get
|
||||
*/
|
||||
|
|
209
tests/src/Db/AdapterTest.php
Normal file
209
tests/src/Db/AdapterTest.php
Normal file
|
@ -0,0 +1,209 @@
|
|||
<?php
|
||||
|
||||
namespace TorrentPier\Db;
|
||||
|
||||
use Zend\Db\Adapter\Driver\Pdo\Result;
|
||||
use Zend\Db\Adapter\Driver\Pdo\Statement;
|
||||
use Zend\Db\Adapter\Driver\Pdo\Connection;
|
||||
use Zend\Db\Adapter\Driver\Pdo\Pdo;
|
||||
use Zend\Db\Adapter\Platform\AbstractPlatform;
|
||||
use Zend\Db\Sql\Delete;
|
||||
use Zend\Db\Sql\Insert;
|
||||
use Zend\Db\Sql\Sql;
|
||||
use Zend\Db\Sql\Update;
|
||||
|
||||
class AdapterTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
const AFFECTED_ROWS = 2;
|
||||
|
||||
/**
|
||||
* @var \PHPUnit_Framework_MockObject_MockObject|Adapter
|
||||
*/
|
||||
protected $adapterMock;
|
||||
|
||||
/**
|
||||
* @var \PHPUnit_Framework_MockObject_MockObject|Sql
|
||||
*/
|
||||
protected $sqlMock;
|
||||
|
||||
/**
|
||||
* @var \PHPUnit_Framework_MockObject_MockObject|Statement
|
||||
*/
|
||||
protected $statementMock;
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
$resultMock = $this->getMock(Result::class, ['getGeneratedValue', 'getAffectedRows']);
|
||||
$resultMock->method('getGeneratedValue')->willReturn(self::AFFECTED_ROWS);
|
||||
$resultMock->method('getAffectedRows')->willReturn(self::AFFECTED_ROWS);
|
||||
|
||||
$this->statementMock = $this->getMock(Statement::class, ['execute']);
|
||||
$this->statementMock->method('execute')->willReturn($resultMock);
|
||||
|
||||
$this->adapterMock = $this->getMockBuilder(Adapter::class)
|
||||
->setMethods(['getSql', 'getPlatform', 'getDriver'])
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
$platformMock = $this->getMock(AbstractPlatform::class, ['getName', 'quoteIdentifier', 'quoteValue']);
|
||||
$platformMock->method('quoteIdentifier')->willReturnCallback(function($v) { return '`' . $v . '`'; });
|
||||
$platformMock->method('quoteValue')->willReturnCallback(function($v) {
|
||||
if (is_int($v)) {
|
||||
return $v;
|
||||
} elseif ($v instanceof \DateTime) {
|
||||
$v = $v->format('Y-m-d H:i:s');
|
||||
}
|
||||
|
||||
return '\'' . $v . '\'';
|
||||
});
|
||||
$platformMock->method('getName')->willReturn('platform name');
|
||||
$this->adapterMock->method('getPlatform')->willReturn($platformMock);
|
||||
|
||||
$connectionMock = $this->getMock(Connection::class);
|
||||
|
||||
$driverMock = $this->getMock(Pdo::class, [], [
|
||||
$connectionMock,
|
||||
$this->statementMock,
|
||||
$resultMock,
|
||||
]);
|
||||
$this->adapterMock->method('getDriver')->willReturn($driverMock);
|
||||
|
||||
$this->sqlMock = $this->getMockBuilder(Sql::class)
|
||||
->setMethods(['prepareStatementForSqlObject'])
|
||||
->setConstructorArgs([$this->adapterMock])
|
||||
->getMock();
|
||||
$this->adapterMock->method('getSql')->willReturn($this->sqlMock);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create sql insert query.
|
||||
* @covers \TorrentPier\Db\Adapter::insert
|
||||
*/
|
||||
public function testInsert()
|
||||
{
|
||||
$date = new \DateTime('now', new \DateTimeZone('UTC'));
|
||||
|
||||
$this->sqlMock->expects(static::once())
|
||||
->method('prepareStatementForSqlObject')
|
||||
->willReturnCallback(function (Insert $sqlObject) use ($date) {
|
||||
static::assertEquals(
|
||||
join(' ', [
|
||||
"INSERT INTO",
|
||||
"`tableName` (`field_int`, `field_str`, `field_date`)",
|
||||
"VALUES (123, 'string', '{$date->format('Y-m-d H:i:s')}')",
|
||||
]),
|
||||
$this->sqlMock->buildSqlString($sqlObject)
|
||||
);
|
||||
return $this->statementMock;
|
||||
});
|
||||
|
||||
$actual = $this->adapterMock->insert('tableName', [
|
||||
'field_int' => 123,
|
||||
'field_str' => 'string',
|
||||
'field_date' => $date,
|
||||
]);
|
||||
|
||||
static::assertEquals(self::AFFECTED_ROWS, $actual);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create sql update query.
|
||||
* @covers \TorrentPier\Db\Adapter::update
|
||||
*/
|
||||
public function testUpdate()
|
||||
{
|
||||
$date = new \DateTime('now', new \DateTimeZone('UTC'));
|
||||
|
||||
$this->sqlMock->expects(static::once())
|
||||
->method('prepareStatementForSqlObject')
|
||||
->willReturnCallback(function (Update $sqlObject) use ($date) {
|
||||
static::assertEquals(
|
||||
join(' ', [
|
||||
"UPDATE `tableName` SET",
|
||||
"`field_int` = 123, `field_str` = 'string', `field_date` = '{$date->format('Y-m-d H:i:s')}'",
|
||||
"WHERE \"field_id\" = 1"
|
||||
]),
|
||||
$this->sqlMock->buildSqlString($sqlObject)
|
||||
);
|
||||
return $this->statementMock;
|
||||
});
|
||||
|
||||
$actual = $this->adapterMock->update('tableName', [
|
||||
'field_int' => 123,
|
||||
'field_str' => 'string',
|
||||
'field_date' => $date,
|
||||
], [
|
||||
'field_id' => 1
|
||||
]);
|
||||
|
||||
static::assertEquals(self::AFFECTED_ROWS, $actual);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create sql delete query.
|
||||
* @covers \TorrentPier\Db\Adapter::delete
|
||||
*/
|
||||
public function testDelete()
|
||||
{
|
||||
$this->sqlMock->expects(static::once())
|
||||
->method('prepareStatementForSqlObject')
|
||||
->willReturnCallback(function (Delete $sqlObject) {
|
||||
static::assertEquals(
|
||||
"DELETE FROM `tableName` WHERE \"field_id\" = 1",
|
||||
$this->sqlMock->buildSqlString($sqlObject)
|
||||
);
|
||||
return $this->statementMock;
|
||||
});
|
||||
|
||||
$actual = $this->adapterMock->delete('tableName', [
|
||||
'field_id' => 1
|
||||
]);
|
||||
|
||||
static::assertEquals(self::AFFECTED_ROWS, $actual);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create sql increment query.
|
||||
* @covers \TorrentPier\Db\Adapter::increment
|
||||
*/
|
||||
public function testIncrement()
|
||||
{
|
||||
$this->sqlMock->expects(static::once())
|
||||
->method('prepareStatementForSqlObject')
|
||||
->willReturnCallback(function (Update $sqlObject) {
|
||||
static::assertEquals(
|
||||
"UPDATE `tableName` SET `inc` = \"inc\" + 1 WHERE \"field_id\" = 1",
|
||||
$this->sqlMock->buildSqlString($sqlObject)
|
||||
);
|
||||
return $this->statementMock;
|
||||
});
|
||||
|
||||
$actual = $this->adapterMock->increment('tableName', 'inc', ['field_id' => 1]);
|
||||
|
||||
static::assertEquals(self::AFFECTED_ROWS, $actual);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create sql decrement query.
|
||||
* @covers \TorrentPier\Db\Adapter::decrement
|
||||
*/
|
||||
public function testDecrement()
|
||||
{
|
||||
$this->sqlMock->expects(static::once())
|
||||
->method('prepareStatementForSqlObject')
|
||||
->willReturnCallback(function (Update $sqlObject) {
|
||||
static::assertEquals(
|
||||
"UPDATE `tableName` SET `inc` = \"inc\" - 1 WHERE \"field_id\" = 1",
|
||||
$this->sqlMock->buildSqlString($sqlObject)
|
||||
);
|
||||
return $this->statementMock;
|
||||
});
|
||||
|
||||
$actual = $this->adapterMock->decrement('tableName', 'inc', ['field_id' => 1]);
|
||||
|
||||
static::assertEquals(self::AFFECTED_ROWS, $actual);
|
||||
}
|
||||
}
|
|
@ -9,13 +9,14 @@ namespace TorrentPier;
|
|||
class ViewTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* @see \TorrentPier\View::make
|
||||
* @covers \TorrentPier\View::make
|
||||
*/
|
||||
public function testMake()
|
||||
{
|
||||
$templateFileName = 'template';
|
||||
$templateParam = ['key' => 'value'];
|
||||
|
||||
/** @var \Twig_Environment|\PHPUnit_Framework_MockObject_MockObject $mockTwig */
|
||||
$mockTwig = $this
|
||||
->getMockBuilder(\Twig_Environment::class)
|
||||
->setMethods(['render'])
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue