more tests and make classes final

This commit is contained in:
Dennis Eichhorn 2021-10-21 22:16:06 +02:00
parent 513a0e1a1b
commit 6dd9fad78c
10 changed files with 405 additions and 89 deletions

View File

@ -58,7 +58,7 @@ class Comment
* @var int|CommentList * @var int|CommentList
* @since 1.0.0 * @since 1.0.0
*/ */
private $list = 0; public $list = 0;
/** /**
* Title * Title
@ -98,7 +98,7 @@ class Comment
* @var null|int|self * @var null|int|self
* @since 1.0.0 * @since 1.0.0
*/ */
private $ref = null; public $ref = null;
/** /**
* Media files * Media files
@ -131,32 +131,6 @@ class Comment
return $this->id; return $this->id;
} }
/**
* Reference id
*
* @param mixed $ref Reference
*
* @return void
*
* @since 1.0.0
*/
public function setRef($ref) : void
{
$this->ref = $ref;
}
/**
* Get the reference
*
* @return mixed
*
* @since 1.0.0
*/
public function getRef()
{
return $this->ref;
}
/** /**
* Set the status * Set the status
* *
@ -183,38 +157,22 @@ class Comment
return $this->status; return $this->status;
} }
/**
* Set the list this comment belongs to
*
* @param int|CommentList $list List
*
* @return void
*
* @since 1.0.0
*/
public function setList($list) : void
{
$this->list = $list;
}
/**
* Get the list this comment belongs to
*
* @return int|CommentList
*
* @since 1.0.0
*/
public function getList()
{
return $this->list;
}
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
public function jsonSerialize() : array public function jsonSerialize() : array
{ {
return []; return [
'id' => $this->id,
'title' => $this->title,
'content' => $this->content,
'list' => $this->list,
'ref' => $this->ref,
'status' => $this->status,
'createdAt' => $this->createdAt,
'createdBy' => $this->createdBy,
];
} }
/** /**

View File

@ -38,10 +38,10 @@ class CommentVote
/** /**
* Account. * Account.
* *
* @var Account * @var int
* @since 1.0.0 * @since 1.0.0
*/ */
public Account $createdBy; public int $createdBy = 0;
/** /**
* Created at * Created at
@ -74,7 +74,18 @@ class CommentVote
*/ */
public function __construct() public function __construct()
{ {
$this->createdBy = new NullAccount();
$this->createdAt = new \DateTimeImmutable(); $this->createdAt = new \DateTimeImmutable();
} }
/**
* Get id.
*
* @return int Model id
*
* @since 1.0.0
*/
public function getId() : int
{
return $this->id;
}
} }

View File

@ -22,15 +22,24 @@ use Modules\Comments\Models\CommentList;
*/ */
class CommentListTest extends \PHPUnit\Framework\TestCase class CommentListTest extends \PHPUnit\Framework\TestCase
{ {
private CommentList $list;
/**
* {@inheritdoc}
*/
protected function setUp() : void
{
$this->list = new CommentList();
}
/** /**
* @covers Modules\Comments\Models\CommentList * @covers Modules\Comments\Models\CommentList
* @group module * @group module
*/ */
public function testDefault() : void public function testDefault() : void
{ {
$list = new CommentList(); self::assertEquals(0, $this->list->getId());
self::assertEquals(0, $list->getId()); self::assertEquals([], $this->list->getComments());
self::assertEquals([], $list->getComments());
} }
/** /**
@ -39,15 +48,14 @@ class CommentListTest extends \PHPUnit\Framework\TestCase
*/ */
public function testGetSet() : void public function testGetSet() : void
{ {
$list = new CommentList();
$comment = new Comment(); $comment = new Comment();
$comment->title = 'Test Title'; $comment->title = 'Test Title';
$comment->contentRaw = 'TestRaw'; $comment->contentRaw = 'TestRaw';
$comment->content = 'Test Content'; $comment->content = 'Test Content';
$list->addComment($comment); $this->list->addComment($comment);
self::assertEquals('Test Title', $list->getComments()[0]->title); self::assertEquals('Test Title', $this->list->getComments()[0]->title);
self::assertEquals('TestRaw', $list->getComments()[0]->contentRaw); self::assertEquals('TestRaw', $this->list->getComments()[0]->contentRaw);
self::assertEquals('Test Content', $list->getComments()[0]->content); self::assertEquals('Test Content', $this->list->getComments()[0]->content);
} }
} }

View File

@ -34,8 +34,8 @@ class CommentMapperTest extends \PHPUnit\Framework\TestCase
$comment->createdBy = new NullAccount(1); $comment->createdBy = new NullAccount(1);
$comment->title = 'Test Title'; $comment->title = 'Test Title';
$comment->content = 'Test Content'; $comment->content = 'Test Content';
$comment->setRef(null); $comment->ref = null;
$comment->setList(new CommentList()); $comment->list = new CommentList();
$id = CommentMapper::create($comment); $id = CommentMapper::create($comment);
self::assertGreaterThan(0, $comment->getId()); self::assertGreaterThan(0, $comment->getId());
@ -46,7 +46,7 @@ class CommentMapperTest extends \PHPUnit\Framework\TestCase
self::assertEquals($comment->createdBy->getId(), $commentR->createdBy->getId()); self::assertEquals($comment->createdBy->getId(), $commentR->createdBy->getId());
self::assertEquals($comment->title, $commentR->title); self::assertEquals($comment->title, $commentR->title);
self::assertEquals($comment->content, $commentR->content); self::assertEquals($comment->content, $commentR->content);
self::assertEquals($comment->getRef(), $commentR->getRef()); self::assertEquals($comment->ref, $commentR->ref);
self::assertEquals($comment->getList()->getId(), $commentR->getList()->getId()); self::assertEquals($comment->list->getId(), $commentR->list->getId());
} }
} }

View File

@ -15,7 +15,9 @@ declare(strict_types=1);
namespace Modules\Comments\tests\Models; namespace Modules\Comments\tests\Models;
use Modules\Admin\Models\NullAccount; use Modules\Admin\Models\NullAccount;
use Modules\Media\Models\Media;
use Modules\Comments\Models\Comment; use Modules\Comments\Models\Comment;
use Modules\Comments\Models\CommentStatus;
use Modules\Comments\Models\NullComment; use Modules\Comments\Models\NullComment;
/** /**
@ -23,45 +25,133 @@ use Modules\Comments\Models\NullComment;
*/ */
class CommentTest extends \PHPUnit\Framework\TestCase class CommentTest extends \PHPUnit\Framework\TestCase
{ {
private Comment $comment;
/**
* {@inheritdoc}
*/
protected function setUp() : void
{
$this->comment = new Comment();
}
/** /**
* @covers Modules\Comments\Models\Comment * @covers Modules\Comments\Models\Comment
* @group module * @group module
*/ */
public function testDefault() : void public function testDefault() : void
{ {
$comment = new Comment(); self::assertEquals(0, $this->comment->getId());
self::assertEquals(0, $comment->getId());
$date = new \DateTime('now'); $date = new \DateTime('now');
self::assertEquals($date->format('Y-m-d'), $comment->createdAt->format('Y-m-d')); self::assertEquals($date->format('Y-m-d'), $this->comment->createdAt->format('Y-m-d'));
self::assertEquals(0, $comment->createdBy->getId()); self::assertEquals(0, $this->comment->createdBy->getId());
self::assertEquals(0, $comment->getList()); self::assertEquals(0, $this->comment->list);
self::assertEquals(0, $comment->getRef()); self::assertEquals(0, $this->comment->ref);
self::assertEquals('', $comment->title); self::assertEquals('', $this->comment->title);
self::assertEquals('', $comment->content); self::assertEquals('', $this->comment->content);
self::assertEquals([], $this->comment->getMedia());
} }
/** /**
* @covers Modules\Comments\Models\Comment * @covers Modules\Comments\Models\Comment
* @group module * @group module
*/ */
public function testGetSet() : void public function testCreatedByInputOutput() : void
{ {
$comment = new Comment(); $this->comment->createdBy = new NullAccount(1);
self::assertEquals(1, $this->comment->createdBy->getId());
}
$comment->createdBy = new NullAccount(1); /**
self::assertEquals(1, $comment->createdBy->getId()); * @covers Modules\Comments\Models\Comment
* @group module
*/
public function testListInputOutput() : void
{
$this->comment->list = 3;
self::assertEquals(3, $this->comment->list);
}
$comment->setList(2); /**
self::assertEquals(2, $comment->getList()); * @covers Modules\Comments\Models\Comment
* @group module
*/
public function testRefInputOutput() : void
{
$this->comment->ref = 2;
self::assertEquals(2, $this->comment->ref);
$comment->setRef(new NullComment(3)); $this->comment->ref = new NullComment(3);
self::assertEquals(3, $comment->getRef()->getId()); self::assertEquals(3, $this->comment->ref->getId());
}
$comment->title = 'Test Title'; /**
self::assertEquals('Test Title', $comment->title); * @covers Modules\Comments\Models\Comment
* @group module
*/
public function testTitleInputOutput() : void
{
$this->comment->title = 'Test Title';
self::assertEquals('Test Title', $this->comment->title);
}
$comment->content = 'Test Content'; /**
self::assertEquals('Test Content', $comment->content); * @covers Modules\Comments\Models\Comment
* @group module
*/
public function testContentInputOutput() : void
{
$this->comment->content = 'Test Content';
self::assertEquals('Test Content', $this->comment->content);
}
/**
* @covers Modules\Comments\Models\Comment
* @group module
*/
public function testStatusInputOutput() : void
{
$this->comment->setStatus(CommentStatus::INVISIBLE);
self::assertEquals(CommentStatus::INVISIBLE, $this->comment->getStatus());
}
/**
* @covers Modules\Comments\Models\Comment
* @group module
*/
public function testMediaInputOutput() : void
{
$this->comment->addMedia(new Media());
self::assertCount(1, $this->comment->getMedia());
}
/**
* @covers Modules\CMS\Models\PageL11n
* @group module
*/
public function testSerialize() : void
{
$this->comment->title = 'Title';
$this->comment->content = 'Content';
$this->comment->list = 2;
$this->comment->ref = 1;
$this->comment->createdBy = new NullAccount(2);
$serialized = $this->comment->jsonSerialize();
unset($serialized['createdAt']);
unset($serialized['createdBy']);
self::assertEquals(
[
'id' => 0,
'title' => 'Title',
'content' => 'Content',
'list' => 2,
'ref' => 1,
'status' => CommentStatus::VISIBLE,
],
$serialized
);
} }
} }

View File

@ -0,0 +1,57 @@
<?php
/**
* Orange Management
*
* PHP Version 8.0
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\Comments\tests\Models;
use Modules\Admin\Models\NullAccount;
use Modules\Comments\Models\CommentList;
use Modules\Comments\Models\CommentListMapper;
use Modules\Comments\Models\Comment;
use Modules\Comments\Models\CommentMapper;
use Modules\Comments\Models\CommentVote;
use Modules\Comments\Models\CommentVoteMapper;
/**
* @internal
*/
class CommentVoteMapperTest extends \PHPUnit\Framework\TestCase
{
/**
* @covers Modules\Comments\Models\CommentVote
* @group module
*/
public function testCR() : void
{
$list = new CommentList();
$lId = CommentListMapper::create($list);
$comment = new Comment();
$comment->title = 'TestComment';
$comment->createdBy = new NullAccount(1);
$comment->list = $lId;
$cId = CommentMapper::create($comment);
$vote = new CommentVote();
$vote->comment = $cId;
$vote->score = 1;
$vote->createdBy = 1;
CommentVoteMapper::create($vote);
$voteR = CommentvoteMapper::findVote($cId, 1);
self::assertEquals($vote->comment, $voteR->comment);
self::assertEquals($vote->createdBy, $voteR->createdBy);
}
}

View File

@ -0,0 +1,66 @@
<?php
/**
* Orange Management
*
* PHP Version 8.0
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\Comments\tests\Models;
use Modules\Comments\Models\CommentVote;
/**
* @internal
*/
class CommentVoteTest extends \PHPUnit\Framework\TestCase
{
private CommentVote $vote;
/**
* {@inheritdoc}
*/
protected function setUp() : void
{
$this->vote = new CommentVote();
}
/**
* @covers Modules\Comments\Models\CommentVote
* @group module
*/
public function testDefault() : void
{
self::assertEquals(0, $this->vote->getId());
self::assertEquals(0, $this->vote->score);
self::assertEquals(0, $this->vote->comment);
self::assertEquals(0, $this->vote->createdBy);
self::assertInstanceOf('\DateTimeImmutable', $this->vote->createdAt);
}
/**
* @covers Modules\Comments\Models\CommentVote
* @group module
*/
public function testScoreInputOutput() : void
{
$this->vote->score = 1;
self::assertEquals(1, $this->vote->score);
}
/**
* @covers Modules\Comments\Models\CommentVote
* @group module
*/
public function testCommentInputOutput() : void
{
$this->vote->comment = 1;
self::assertEquals(1, $this->vote->comment);
}
}

View File

@ -0,0 +1,42 @@
<?php
/**
* Orange Management
*
* PHP Version 8.0
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\Comments\tests\Models;
use Modules\Comments\Models\NullComment;
/**
* @internal
*/
final class NullCommentTest extends \PHPUnit\Framework\TestCase
{
/**
* @covers Modules\Comments\Models\NullComment
* @group framework
*/
public function testNull() : void
{
self::assertInstanceOf('\Modules\Comments\Models\Comment', new NullComment());
}
/**
* @covers Modules\Comments\Models\NullComment
* @group framework
*/
public function testId() : void
{
$null = new NullComment(2);
self::assertEquals(2, $null->getId());
}
}

View File

@ -0,0 +1,42 @@
<?php
/**
* Orange Management
*
* PHP Version 8.0
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\Comments\tests\Models;
use Modules\Comments\Models\NullCommentList;
/**
* @internal
*/
final class NullCommentListTest extends \PHPUnit\Framework\TestCase
{
/**
* @covers Modules\Comments\Models\NullCommentList
* @group framework
*/
public function testNull() : void
{
self::assertInstanceOf('\Modules\Comments\Models\CommentList', new NullCommentList());
}
/**
* @covers Modules\Comments\Models\NullCommentList
* @group framework
*/
public function testId() : void
{
$null = new NullCommentList(2);
self::assertEquals(2, $null->getId());
}
}

View File

@ -0,0 +1,42 @@
<?php
/**
* Orange Management
*
* PHP Version 8.0
*
* @package tests
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace Modules\Comments\tests\Models;
use Modules\Comments\Models\NullCommentVote;
/**
* @internal
*/
final class NullCommentVoteTest extends \PHPUnit\Framework\TestCase
{
/**
* @covers Modules\Comments\Models\NullCommentVote
* @group framework
*/
public function testNull() : void
{
self::assertInstanceOf('\Modules\Comments\Models\CommentVote', new NullCommentVote());
}
/**
* @covers Modules\Comments\Models\NullCommentVote
* @group framework
*/
public function testId() : void
{
$null = new NullCommentVote(2);
self::assertEquals(2, $null->getId());
}
}