webworld888/core/tests/Database/ProxyManagerTest.php
2021-10-26 19:14:12 +09:00

160 lines
4.4 KiB
PHP

<?php
/**
* @author XE Developers <developers@xpressengine.com>
* @copyright 2020 Copyright XEHub Corp. <https://www.xehub.io>
* @license http://www.gnu.org/licenses/lgpl-3.0-standalone.html LGPL
* @link https://xpressengine.io
*/
namespace Xpressengine\Tests\Database;
use Mockery as m;
use PHPUnit\Framework\TestCase;
use Xpressengine\Database\ProxyManager;
/**
* Class ProxyManagerTest
* @package Xpressengine\Tests\Database
* @author XE Developers <developers@xpressengine.com>
* @copyright 2020 Copyright XEHub Corp. <https://www.xehub.io>
* @license http://www.gnu.org/licenses/lgpl-3.0-standalone.html LGPL
* @link https://xpressengine.io
*/
class ProxyManagerTest extends TestCase
{
/**
* @var \Xpressengine\Register\Container
*/
protected $register;
/**
* tear down
*
* @return void
*/
public function tearDown()
{
ProxyManager::destruct();
m::close();
}
/**
* set up
*
* @return void
*/
public function setUp()
{
$register = m::mock('Xpressengine\Register\Container');
$register->shouldReceive('set');
$this->register = $register;
}
/**
* @return m\MockInterface|\Xpressengine\Database\ProxyInterface
*/
private function getProxyInstance()
{
return m::mock('Xpressengine\Database\ProxyInterface');
}
/**
* test register
*
* @return void
*/
public function testRegister()
{
$register = $this->register;
$proxyManager = ProxyManager::instance($register);
$proxyInstance = $this->getProxyInstance();
$register->shouldReceive('push');
$proxyManager->register($proxyInstance);
}
/**
* test get registered
*
* @return void
*/
public function testGets()
{
$register = $this->register;
$proxyManager = ProxyManager::instance($register);
$proxyInstance = $this->getProxyInstance();
$register->shouldReceive('get')->andReturn([
$proxyInstance
]);
$result = $proxyManager->gets($proxyInstance);
$this->assertInstanceOf('Xpressengine\Database\ProxyInterface', $result[0]);
}
/**
* test get registered proxy
*
* @expectedException \Xpressengine\Database\Exceptions\NotExistsProxyException
* @return void
*/
public function testGetProxy()
{
$register = $this->register;
$proxyManager = ProxyManager::instance($register);
$proxyInstance = $this->getProxyInstance();
$register->shouldReceive('get')->with(ProxyManager::REGISTER_KEY, 'a')->andReturn($proxyInstance);
$register->shouldReceive('get')->with(ProxyManager::REGISTER_KEY, 'b')->andReturn(null);
$result = $proxyManager->getProxy('a');
$this->assertInstanceOf('Xpressengine\Database\ProxyInterface', $result);
$proxyManager->getProxy('b');
}
/**
* test proxy interface
*
* @return void
*/
public function testProxyInterface()
{
$register = $this->register;
$proxyManager = ProxyManager::instance($register);
$connector = m::mock('Xpressengine\Database\VirtualConnectionInterface');
$proxyInstance = $this->getProxyInstance();
$proxyInstance->shouldReceive('set');
$proxyInstance->shouldReceive('insert');
$proxyInstance->shouldReceive('update');
$proxyInstance->shouldReceive('delete');
$register->shouldReceive('get')->andReturn([
$proxyInstance
]);
$proxyManager->set($connector, []);
$proxyManager->insert([]);
$proxyManager->update([], []);
$proxyManager->delete([]);
$query = m::mock('Xpressengine\Database\DynamicQuery');
$proxyInstance->shouldReceive('get')->andReturn($query);
$proxyInstance->shouldReceive('first')->andReturn($query);
$proxyInstance->shouldReceive('wheres')->andReturn($query);
$proxyInstance->shouldReceive('orders')->andReturn($query);
$this->assertInstanceOf('Xpressengine\Database\DynamicQuery', $proxyManager->get($query));
$this->assertInstanceOf('Xpressengine\Database\DynamicQuery', $proxyManager->first($query));
$this->assertInstanceOf('Xpressengine\Database\DynamicQuery', $proxyManager->wheres($query, []));
$this->assertInstanceOf('Xpressengine\Database\DynamicQuery', $proxyManager->orders($query, []));
}
}