376 lines
10 KiB
PHP
376 lines
10 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\Support\Exceptions {
|
|
|
|
/**
|
|
* xe_trans
|
|
*
|
|
* @param $message
|
|
* @param $args
|
|
*
|
|
* @return string
|
|
*/
|
|
function xe_trans($message, $args)
|
|
{
|
|
return 'translate test code';
|
|
}
|
|
}
|
|
|
|
|
|
namespace Xpressengine\Tests\Widget {
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
use Mockery as m;
|
|
|
|
use Xpressengine\User\Rating;
|
|
use Xpressengine\Widget\AbstractWidget;
|
|
use Xpressengine\Widget\WidgetHandler;
|
|
|
|
/**
|
|
* Class FakeWidget
|
|
*
|
|
* @package Xpressengine\Tests\Widget
|
|
*/
|
|
class FakeWidget extends AbstractWidget
|
|
{
|
|
/**
|
|
* @var array
|
|
*/
|
|
public static $ratingWhiteList = [Rating::SUPER, Rating::MANAGER, Rating::USER];
|
|
|
|
/**
|
|
* init
|
|
*
|
|
* @return void
|
|
*/
|
|
protected function init()
|
|
{
|
|
// TODO: Implement init() method.
|
|
}
|
|
|
|
/**
|
|
* getSettingForm
|
|
*
|
|
* @param array $args
|
|
*
|
|
* @return string
|
|
*/
|
|
public function renderSetting(array $args = [])
|
|
{
|
|
return 'fake Setup String';
|
|
}
|
|
|
|
/**
|
|
* boot
|
|
*
|
|
* @return void
|
|
*/
|
|
public static function boot()
|
|
{
|
|
// TODO: Implement boot() method.
|
|
}
|
|
|
|
/**
|
|
* getSettingsURI
|
|
*
|
|
* @return void
|
|
*/
|
|
public static function getSettingsURI()
|
|
{
|
|
// TODO: Implement getSettingsURI() method.
|
|
}
|
|
|
|
/**
|
|
* render
|
|
*
|
|
* @return mixed
|
|
* @internal param array $args to render parameter array
|
|
*
|
|
*/
|
|
public function render()
|
|
{
|
|
$dummyView = m::mock('Illuminate\Contracts\Support\Renderable');
|
|
$dummyView->shouldReceive('render')->andReturn('fake Render String');
|
|
return $dummyView;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Class WidgetHandlerTest
|
|
*
|
|
* @package Xpressengine\Tests\Widget
|
|
*/
|
|
class WidgetHandlerTest extends TestCase
|
|
{
|
|
/**
|
|
* @var \Mockery\MockInterface $guard
|
|
*/
|
|
protected $guard;
|
|
/**
|
|
* @var \Mockery\MockInterface $register
|
|
*/
|
|
protected $register;
|
|
/**
|
|
* @var \Mockery\MockInterface $register
|
|
*/
|
|
protected $factory;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
private $fakeWidgetClassName = 'Xpressengine\Tests\Widget\FakeWidget';
|
|
|
|
/**
|
|
* tearDown
|
|
*
|
|
* @return void
|
|
*/
|
|
public function tearDown()
|
|
{
|
|
m::close();
|
|
}
|
|
|
|
/**
|
|
* testGetClassName
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testGetClassName()
|
|
{
|
|
$widgetHandler = new WidgetHandler($this->register, $this->guard, $this->factory, false);
|
|
|
|
$register = $this->register;
|
|
$register->shouldReceive('get')->andReturn($this->fakeWidgetClassName);
|
|
|
|
$mockUser = m::mock('Xpressengine\User\UserInterface');
|
|
$mockUser->shouldReceive('getRating')->andReturn('super');
|
|
|
|
$guard = $this->guard;
|
|
$guard->shouldReceive('user')->andReturn($mockUser);
|
|
|
|
$widgetClassName = $widgetHandler->getClassName('widget/xpressengine@testWidgetId');
|
|
|
|
$this->assertEquals($this->fakeWidgetClassName, $widgetClassName);
|
|
|
|
}
|
|
|
|
/**
|
|
* testRender
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testRender()
|
|
{
|
|
$widgetHandler = new WidgetHandler($this->register, $this->guard, $this->factory, false);
|
|
|
|
$register = $this->register;
|
|
$register->shouldReceive('get')->andReturn($this->fakeWidgetClassName);
|
|
|
|
$mockUser = m::mock('Xpressengine\User\UserInterface');
|
|
$mockUser->shouldReceive('getRating')->andReturn('super');
|
|
|
|
$guard = $this->guard;
|
|
$guard->shouldReceive('user')->andReturn($mockUser);
|
|
|
|
$fakeWidgetRenderString = $widgetHandler->render('testWidgetId', []);
|
|
|
|
$this->assertEquals('fake Render String', $fakeWidgetRenderString);
|
|
}
|
|
|
|
/**
|
|
* testRenderNoGuard
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testRenderNoGuard()
|
|
{
|
|
$widgetHandler = new WidgetHandler($this->register, $this->guard, $this->factory, false);
|
|
|
|
$register = $this->register;
|
|
$register->shouldReceive('get')->andReturn($this->fakeWidgetClassName);
|
|
|
|
$mockUser = m::mock('Xpressengine\User\UserInterface');
|
|
$mockUser->shouldReceive('getRating')->andReturn('guest');
|
|
|
|
$guard = $this->guard;
|
|
$guard->shouldReceive('user')->andReturn($mockUser);
|
|
|
|
$fakeWidgetRenderString = $widgetHandler->render('testWidgetId', []);
|
|
|
|
$this->assertEquals('', $fakeWidgetRenderString);
|
|
}
|
|
|
|
/**
|
|
* testRenderExceptionOccurOnSuper
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testRenderExceptionOccurOnSuper()
|
|
{
|
|
$widgetHandler = new WidgetHandler($this->register, $this->guard, $this->factory, false);
|
|
|
|
$register = $this->register;
|
|
$register->shouldReceive('get')->andReturn(null);
|
|
|
|
$mockUser = m::mock('Xpressengine\User\UserInterface');
|
|
$mockUser->shouldReceive('getRating')->andReturn('super');
|
|
|
|
$guard = $this->guard;
|
|
$guard->shouldReceive('user')->andReturn($mockUser);
|
|
|
|
$view = $this->factory;
|
|
$view->shouldReceive('make')->andReturn($view);
|
|
$view->shouldReceive('render')->andReturn('widget error occur!');
|
|
|
|
$fakeWidgetRenderString = $widgetHandler->render('testWidgetId', []);
|
|
|
|
$this->assertEquals('widget error occur!', $fakeWidgetRenderString);
|
|
}
|
|
|
|
/**
|
|
* testRenderExceptionOccurOnGuest
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testRenderExceptionOccurOnGuest()
|
|
{
|
|
$widgetHandler = new WidgetHandler($this->register, $this->guard, $this->factory, false);
|
|
|
|
$register = $this->register;
|
|
$register->shouldReceive('get')->andReturn(null);
|
|
|
|
$mockUser = m::mock('Xpressengine\User\UserInterface');
|
|
$mockUser->shouldReceive('getRating')->andReturn('guest');
|
|
|
|
$guard = $this->guard;
|
|
$guard->shouldReceive('user')->andReturn($mockUser);
|
|
|
|
$fakeWidgetRenderString = $widgetHandler->render('testWidgetId', []);
|
|
|
|
$this->assertEquals('', $fakeWidgetRenderString);
|
|
}
|
|
|
|
/**
|
|
* testSetUp
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testSetup()
|
|
{
|
|
$widgetHandler = new WidgetHandler($this->register, $this->guard, $this->factory, false);
|
|
|
|
$register = $this->register;
|
|
$register->shouldReceive('get')->andReturn($this->fakeWidgetClassName);
|
|
|
|
$fakeWidgetSetupString = $widgetHandler->setup('testWidgetId');
|
|
|
|
$this->assertEquals('fake Setup String', $fakeWidgetSetupString);
|
|
|
|
}
|
|
|
|
/**
|
|
* testSetUpFail
|
|
*
|
|
* @return void
|
|
*
|
|
* @expectedException \XpressEngine\Widget\Exceptions\NotFoundWidgetException
|
|
*/
|
|
public function testSetUpFail()
|
|
{
|
|
$widgetHandler = new WidgetHandler($this->register, $this->guard, $this->factory, false);
|
|
|
|
$register = $this->register;
|
|
$register->shouldReceive('get')->andReturn(null);
|
|
|
|
$fakeWidgetSetupString = $widgetHandler->setup('testWidgetId');
|
|
|
|
}
|
|
|
|
/**
|
|
* testGetAll
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testGetAll()
|
|
{
|
|
$widgetHandler = new WidgetHandler($this->register, $this->guard, $this->factory, false);
|
|
|
|
$register = $this->register;
|
|
$register->shouldReceive('get')->andReturn(['FakeWidget']);
|
|
|
|
$fakeWidgets = $widgetHandler->getAll();
|
|
|
|
$this->assertEquals(['FakeWidget'], $fakeWidgets);
|
|
}
|
|
|
|
/**
|
|
* testGetAllWithFilter
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testGetAllWithFilter()
|
|
{
|
|
$widgetHandler = new WidgetHandler($this->register, $this->guard, $this->factory, false);
|
|
|
|
$register = $this->register;
|
|
$register->shouldReceive('get')->andReturn(['Xpressengine\Tests\Widget\FakeWidget']);
|
|
|
|
$filter = function ($widgetClassname) {
|
|
return false;
|
|
};
|
|
|
|
$fakeWidgets = $widgetHandler->getAll($filter);
|
|
|
|
$this->assertEquals([], $fakeWidgets);
|
|
}
|
|
|
|
/**
|
|
* testGetGeneratedCode
|
|
*
|
|
* @return void
|
|
*/
|
|
public function testGetGeneratedCode()
|
|
{
|
|
$widgetHandler = new WidgetHandler($this->register, $this->guard, $this->factory, false);
|
|
|
|
$id = 'fakeWidgetId';
|
|
$inputs = [
|
|
'args1' => 'value1',
|
|
'args2' => 'value2',
|
|
'args3' => 'value3',
|
|
];
|
|
|
|
$this->register->shouldReceive('get')->with('widget/'.$id)->andReturn($this->fakeWidgetClassName);
|
|
$resultString = $widgetHandler->generateCode($id, $inputs);
|
|
|
|
$expected = '<xe-widget><args1>value1</args1><args2>value2</args2><args3>value3</args3></xe-widget>';
|
|
|
|
$this->assertEquals($expected, $resultString);
|
|
}
|
|
|
|
/**
|
|
* setUp
|
|
*
|
|
* @return void
|
|
*/
|
|
public function setUp()
|
|
{
|
|
$registerMock = m::mock('Xpressengine\Plugin\PluginRegister');
|
|
$guardMock = m::mock('Xpressengine\User\GuardInterface');
|
|
$factoryMock = m::mock('Illuminate\Contracts\View\Factory');
|
|
|
|
$this->register = $registerMock;
|
|
$this->guard = $guardMock;
|
|
$this->factory = $factoryMock;
|
|
}
|
|
}
|
|
|
|
|
|
}
|