Files
core/tests/Models/ViewpointRestorationTest.php
T
Basilius Sauter 1c53604244 Adjusted tests.
2019-06-27 14:39:03 +02:00

96 lines
3.6 KiB
PHP

<?php
declare(strict_types=1);
namespace LotGD\Core\Tests\Models;
use Composer\Repository\RepositoryInterface;
use Doctrine\Common\Persistence\ObjectRepository;
use Doctrine\ORM\EntityManager;
use LotGD\Core\Action;
use LotGD\Core\ActionGroup;
use LotGD\Core\Models\Scene;
use LotGD\Core\Models\SceneTemplate;
use LotGD\Core\Models\Viewpoint;
use LotGD\Core\Tests\CoreModelTestCase;
class ViewpointRestorationTest extends CoreModelTestCase
{
/** @var string default data set */
protected $dataset = "viewpoints";
protected function getActionGroup()
{
static $actionGroup = null;
if ($actionGroup !== null) {
$actionGroup = new ActionGroup("main", "Title", 0);
$actionGroup->addAction(new Action(1));
$actionGroup->addAction(new Action(2));
$actionGroup->addAction(new Action(3));
}
return $actionGroup;
}
protected function getViewpoint()
{
$sceneTemplateMock = $this->createMock(SceneTemplate::class);
$sceneMock = $this->createMock(Scene::class);
$sceneMock->method("getTitle")->willReturn("Scene Mock Title");
$sceneMock->method("getDescription")->willReturn("Scene Mock Description");
$sceneMock->method("getTemplate")->willReturn($sceneTemplateMock);
$repository = $this->createMock(ObjectRepository::class);
$repository->method("find")->willReturn($sceneTemplateMock);
$entityManager = $this->createMock(EntityManager::class);
$entityManager->method("getRepository")->willReturn($repository);
$actionGroup = $this->getActionGroup();
$viewpoint = new Viewpoint();
$viewpoint->changeFromScene($sceneMock);
$viewpoint->setActionGroups([$actionGroup]);
return [$entityManager, $viewpoint];
}
protected function getAlternativeViewpoint()
{
$sceneTemplateMock = $this->createMock(SceneTemplate::class);
$sceneMock = $this->createMock(Scene::class);
$sceneMock->method("getTitle")->willReturn("Another Scene Mock Title");
$sceneMock->method("getDescription")->willReturn("Another Scene Mock Description");
$sceneMock->method("getTemplate")->willReturn($sceneTemplateMock);
$repository = $this->createMock(ObjectRepository::class);
$repository->method("find")->willReturn($sceneTemplateMock);
$entityManager = $this->createMock(EntityManager::class);
$entityManager->method("getRepository")->willReturn($repository);
$viewpoint = new Viewpoint();
$viewpoint->changeFromScene($sceneMock);
return [$entityManager, $viewpoint];
}
public function testIfViewpointAfterUnserializationIsEqualToBeforeItsSerialization()
{
[$entityManager, $viewpoint] = $this->getViewpoint();
$viewpointRestoration = $viewpoint->getSnapshot();
$serialized = serialize($viewpointRestoration);
$viewpointRestored = unserialize($serialized);
[$entityManager2, $newViewpoint] = $this->getAlternativeViewpoint();
$newViewpoint->changeFromSnapshot($entityManager, $viewpointRestored);
$this->assertSame($viewpoint->getTitle(), $newViewpoint->getTitle());
$this->assertSame($viewpoint->getDescription(), $newViewpoint->getDescription());
$this->assertSame($viewpoint->getTemplate(), $newViewpoint->getTemplate());
$this->assertEquals($viewpoint->getActionGroups(), $newViewpoint->getActionGroups());;
$this->assertSame($viewpoint->getData(), $newViewpoint->getData());
$this->assertSame($viewpoint->getAttachments(), $newViewpoint->getAttachments());
}
}