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

134 lines
4.0 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\Seo;
use Mockery as m;
use Xpressengine\Seo\Setting;
use Xpressengine\Storage\File;
class SettingTest extends \PHPUnit\Framework\TestCase
{
public function tearDown()
{
m::close();
}
public function testExists()
{
list($cfg, $storage, $media, $keygen) = $this->getMocks();
$instance = new Setting($cfg, $storage, $media, $keygen);
$cfg->shouldReceive('get')->once()->andReturnNull();
$this->assertFalse($instance->exists());
$mockConfig = m::mock('Xpressengine\Config\ConfigEntity');
$cfg->shouldReceive('get')->once()->andReturn($mockConfig);
$this->assertTrue($instance->exists());
$this->assertTrue($instance->exists());
}
public function testGet()
{
list($cfg, $storage, $media, $keygen) = $this->getMocks();
$instance = m::mock(Setting::class, [$cfg, $storage, $media, $keygen])
->shouldAllowMockingProtectedMethods()
->makePartial();
$instance->shouldReceive('exists')->once()->andReturn(false);
$val = $instance->get('title');
$this->assertNull($val);
}
public function testSet()
{
list($cfg, $storage, $media, $keygen) = $this->getMocks();
$instance = new Setting($cfg, $storage, $media, $keygen);
$id = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx';
$mockConfig = m::mock('Xpressengine\Config\ConfigEntity');
$mockConfig->shouldReceive('get')->once()->with('uuid')->andReturnNull();
$keygen->shouldReceive('generate')->once()->andReturn($id);
$mockConfig->shouldReceive('set')->once()->with('uuid', $id);
$cfg->shouldReceive('set')->once()->with(
m::on(function () { return true; }),
[
'foo' => 'bar',
'baz' => 'qux'
]
)->andReturn($mockConfig);
$cfg->shouldReceive('modify')->once()->with($mockConfig);
$instance->set([
'foo' => 'bar',
'baz' => 'qux'
]);
}
public function testGetSiteImage()
{
list($cfg, $storage, $media, $keygen) = $this->getMocks();
$instance = m::mock(Setting::class, [$cfg, $storage, $media, $keygen])
->shouldAllowMockingProtectedMethods()
->makePartial();
$id = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx';
$instance->shouldReceive('get')->with('uuid')->andReturn($id);
$mockFile = m::mock('Xpressengine\Storage\File');
$mockImage = m::mock('Xpressengine\Media\Models\Image');
$storage->shouldReceive('fetchByFileable')->with($id)->andReturn([$mockFile]);
$media->shouldReceive('make')->once()->with($mockFile)->andReturn($mockImage);
$image = $instance->getSiteImage();
$this->assertInstanceOf('Xpressengine\Media\Models\Image', $image);
}
public function testSetSiteImage()
{
list($cfg, $storage, $media, $keygen) = $this->getMocks();
$instance = m::mock(Setting::class, [$cfg, $storage, $media, $keygen])
->shouldAllowMockingProtectedMethods()
->makePartial();
$id = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx';
$mockImage = m::mock('Xpressengine\Media\Models\Image');
$instance->shouldReceive('get')->with('uuid')->andReturn($id);
$storage->shouldReceive('unBindAll')->once()->with($id, true);
$storage->shouldReceive('bind')->once()->with($id, $mockImage);
$instance->setSiteImage($mockImage);
}
private function getMocks()
{
return [
m::mock('Xpressengine\Config\ConfigManager'),
m::mock('Xpressengine\Storage\Storage'),
m::mock('Xpressengine\Media\MediaManager'),
m::mock('Xpressengine\Keygen\Keygen'),
];
}
}