ion/tests/mocks.php

191 lines
3.7 KiB
PHP
Raw Permalink Normal View History

2017-03-24 16:18:02 -04:00
<?php declare(strict_types=1);
/**
2017-03-24 16:18:02 -04:00
* Ion
*
* Building blocks for web development
*
2019-12-05 15:39:02 -05:00
* PHP version 7.2
2017-03-24 16:18:02 -04:00
*
* @package Ion
* @author Timothy J. Warren <tim@timshomepage.net>
2019-12-05 15:39:02 -05:00
* @copyright 2015 - 2019 Timothy J. Warren
2017-03-24 16:18:02 -04:00
* @license http://www.opensource.org/licenses/mit-license.html MIT License
2019-12-05 15:39:02 -05:00
* @version 3.0.0
* @link https://git.timshomepage.net/aviat/ion
*/
2016-10-19 13:24:08 -04:00
namespace Aviat\Ion\Tests;
use Aviat\Ion\Enum;
2016-08-26 17:21:50 -04:00
use Aviat\Ion\Exception\DoubleRenderException;
use Aviat\Ion\Friend;
use Aviat\Ion\Transformer\AbstractTransformer;
use Aviat\Ion\View;
2016-10-19 13:24:08 -04:00
use Aviat\Ion\View\{HtmlView, HttpView, JsonView};
// -----------------------------------------------------------------------------
// Mock the default error handler
// -----------------------------------------------------------------------------
class MockErrorHandler {
public function addDataTable($name, array $values=[]) {}
}
// -----------------------------------------------------------------------------
// Ion Mocks
// -----------------------------------------------------------------------------
class TestEnum extends Enum {
const FOO = 'bar';
const BAR = 'foo';
const FOOBAR = 'baz';
}
class FriendGrandParentTestClass {
protected $grandParentProtected = 84;
}
class FriendParentTestClass extends FriendGrandParentTestClass {
protected $parentProtected = 47;
private $parentPrivate = 654;
}
class FriendTestClass extends FriendParentTestClass {
protected $protected = 356;
private $private = 486;
protected function getProtected()
{
return 4;
}
private function getPrivate()
{
return 23;
}
}
class TestTransformer extends AbstractTransformer {
public function transform($item)
{
$out = [];
$genre_list = (array) $item;
foreach($genre_list as $genre)
{
$out[] = $genre['name'];
}
return $out;
}
}
class TestTransformerUntransform extends TestTransformer {
public function untransform($item)
{
return (array)$item;
}
}
trait MockViewOutputTrait {
2016-08-26 17:21:50 -04:00
/*protected function output() {
$reflect = new ReflectionClass($this);
$properties = $reflect->getProperties();
$props = [];
foreach($properties as $reflectProp)
{
$reflectProp->setAccessible(TRUE);
$props[$reflectProp->getName()] = $reflectProp->getValue($this);
}
$view = new TestView($this->container);
$friend = new Friend($view);
foreach($props as $name => $val)
{
$friend->__set($name, $val);
}
2016-08-26 17:21:50 -04:00
//$friend->output();
}*/
2018-01-17 15:32:41 -05:00
public function send(): void
2016-08-26 17:21:50 -04:00
{
if ($this->hasRendered)
{
throw new DoubleRenderException();
}
$this->hasRendered = TRUE;
}
}
class TestView extends View {
2018-01-17 15:32:41 -05:00
public function send(): void
{
2016-08-26 17:21:50 -04:00
if ($this->hasRendered)
{
throw new DoubleRenderException();
}
$this->hasRendered = TRUE;
}
2016-08-26 17:21:50 -04:00
public function output() {}
}
class TestHtmlView extends HtmlView {
2018-01-17 15:32:41 -05:00
protected function output(): void
2016-08-26 17:21:50 -04:00
{
if ($this->hasRendered)
{
throw new DoubleRenderException();
}
$this->hasRendered = TRUE;
}
}
class TestHttpView extends HttpView {
2018-01-17 15:32:41 -05:00
protected function output(): void
2016-08-26 17:21:50 -04:00
{
if ($this->hasRendered)
{
throw new DoubleRenderException();
}
$this->hasRendered = TRUE;
}
}
class TestJsonView extends JsonView {
public function __destruct() {}
2016-08-26 17:21:50 -04:00
2018-01-17 15:32:41 -05:00
protected function output(): void
2016-08-26 17:21:50 -04:00
{
if ($this->hasRendered)
{
throw new DoubleRenderException();
}
$this->hasRendered = TRUE;
}
}
// -----------------------------------------------------------------------------
// AnimeClient Mocks
// -----------------------------------------------------------------------------
trait MockInjectionTrait {
public function __get($key)
{
return $this->$key;
}
public function __set($key, $value)
{
$this->$key = $value;
return $this;
}
}
// End of mocks.php