szuru/tests/Services/PostSnapshotProviderTest.php
2015-11-25 09:48:03 +01:00

106 lines
3.1 KiB
PHP

<?php
namespace Szurubooru\Tests\Services;
use Szurubooru\Dao\GlobalParamDao;
use Szurubooru\Dao\PostNoteDao;
use Szurubooru\Entities\GlobalParam;
use Szurubooru\Entities\Post;
use Szurubooru\Entities\PostNote;
use Szurubooru\Entities\Snapshot;
use Szurubooru\Entities\Tag;
use Szurubooru\Services\PostSnapshotProvider;
use Szurubooru\Tests\AbstractTestCase;
class PostSnapshotProviderTest extends AbstractTestCase
{
private $globalParamDaoMock;
public function setUp()
{
parent::setUp();
$this->globalParamDaoMock = $this->mock(GlobalParamDao::class);
$this->postNoteDaoMock = $this->mock(PostNoteDao::class);
}
public function testPostChangeSnapshot()
{
$tag1 = new Tag();
$tag2 = new Tag();
$tag1->setName('tag1');
$tag2->setName('tag2');
$post1 = new Post(1);
$post2 = new Post(2);
$post = new Post(5);
$post->setTags([$tag1, $tag2]);
$post->setRelatedPosts([$post1, $post2]);
$post->setContentChecksum('checksum');
$post->setSafety(Post::POST_SAFETY_SKETCHY);
$post->setSource('amazing source');
$post->setFlags(Post::FLAG_LOOP);
$this->postNoteDaoMock
->method('findByPostId')
->with($post->getId())
->willReturn([$this->getTestPostNote()]);
$postSnapshotProvider = $this->getPostSnapshotProvider();
$snapshot = $postSnapshotProvider->getChangeSnapshot($post);
$this->assertEquals([
'source' => 'amazing source',
'safety' => 'sketchy',
'contentChecksum' => 'checksum',
'featured' => false,
'tags' => ['tag1', 'tag2'],
'relations' => [1, 2],
'flags' => ['loop'],
'notes' => [['x' => 5, 'y' => 6, 'w' => 7, 'h' => 8, 'text' => 'text']],
], $snapshot->getData());
$this->assertEquals(Snapshot::TYPE_POST, $snapshot->getType());
$this->assertEquals(5, $snapshot->getPrimaryKey());
return $post;
}
/**
* @depends testPostChangeSnapshot
*/
public function testPostChangeSnapshotFeature($post)
{
$param = new GlobalParam;
$param->setValue($post->getId());
$this->globalParamDaoMock
->expects($this->once())
->method('findByKey')
->with(GlobalParam::KEY_FEATURED_POST)
->willReturn($param);
$this->postNoteDaoMock
->method('findByPostId')
->with($post->getId())
->willReturn([]);
$postSnapshotProvider = $this->getPostSnapshotProvider();
$snapshot = $postSnapshotProvider->getChangeSnapshot($post);
$this->assertTrue($snapshot->getData()['featured']);
}
private function getPostSnapshotProvider()
{
return new PostSnapshotProvider($this->globalParamDaoMock, $this->postNoteDaoMock);
}
private function getTestPostNote()
{
$postNote = new PostNote();
$postNote->setLeft(5);
$postNote->setTop(6);
$postNote->setWidth(7);
$postNote->setHeight(8);
$postNote->setText('text');
return $postNote;
}
}