Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
10.00% |
2 / 20 |
CRAP | |
5.41% |
2 / 37 |
Post | |
0.00% |
0 / 1 |
|
10.00% |
2 / 20 |
740.86 | |
5.41% |
2 / 37 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
getId | |
100.00% |
1 / 1 |
2 | |
100.00% |
1 / 1 |
|||
getTitle | |
100.00% |
1 / 1 |
2 | |
100.00% |
1 / 1 |
|||
setTitle | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
getSlug | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 1 |
|||
setSlug | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
getContent | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 1 |
|||
setContent | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
getPublishedAt | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
setPublishedAt | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
getAuthor | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 1 |
|||
setAuthor | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
getComments | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
|||
addComment | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 4 |
|||
removeComment | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
getSummary | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 1 |
|||
setSummary | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
addTag | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 4 |
|||
removeTag | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
getTags | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 1 |
<?php | |
/* | |
* This file is part of the Symfony package. | |
* | |
* (c) Fabien Potencier <fabien@symfony.com> | |
* | |
* For the full copyright and license information, please view the LICENSE | |
* file that was distributed with this source code. | |
*/ | |
namespace Smalldb\StateMachine\Test\SymfonyDemo\Entity; | |
use Doctrine\Common\Collections\ArrayCollection; | |
use Doctrine\Common\Collections\Collection; | |
use Doctrine\ORM\Mapping as ORM; | |
use Smalldb\StateMachine\Test\SymfonyDemo\EntityInterface\PostImmutableInterface; | |
use Symfony\Component\Validator\Constraints as Assert; | |
/** | |
* @ORM\Entity(repositoryClass="Smalldb\StateMachine\Test\SymfonyDemo\Repository\PostRepository") | |
* @ORM\Table(name="symfony_demo_post") | |
* | |
* Defines the properties of the Post entity to represent the blog posts. | |
* | |
* See https://symfony.com/doc/current/book/doctrine.html#creating-an-entity-class | |
* | |
* Tip: if you have an existing database, you can generate these entity class automatically. | |
* See https://symfony.com/doc/current/cookbook/doctrine/reverse_engineering.html | |
* | |
* @author Ryan Weaver <weaverryan@gmail.com> | |
* @author Javier Eguiluz <javier.eguiluz@gmail.com> | |
* @author Yonel Ceruto <yonelceruto@gmail.com> | |
*/ | |
class Post implements PostImmutableInterface | |
{ | |
/** | |
* Use constants to define configuration options that rarely change instead | |
* of specifying them under parameters section in config/services.yaml file. | |
* | |
* See https://symfony.com/doc/current/best_practices/configuration.html#constants-vs-configuration-options | |
*/ | |
public const NUM_ITEMS = 10; | |
/** | |
* @var int | |
* | |
* @ORM\Id | |
* @ORM\GeneratedValue | |
* @ORM\Column(type="integer") | |
*/ | |
private $id; | |
/** | |
* @var string | |
* | |
* @ORM\Column(type="string") | |
* @Assert\NotBlank | |
*/ | |
private $title; | |
/** | |
* @var string | |
* | |
* @ORM\Column(type="string") | |
*/ | |
private $slug; | |
/** | |
* @var string | |
* | |
* @ORM\Column(type="string") | |
* @Assert\NotBlank(message="post.blank_summary") | |
* @Assert\Length(max=255) | |
*/ | |
private $summary; | |
/** | |
* @var string | |
* | |
* @ORM\Column(type="text") | |
* @Assert\NotBlank(message="post.blank_content") | |
* @Assert\Length(min=10, minMessage="post.too_short_content") | |
*/ | |
private $content; | |
/** | |
* @var \DateTime | |
* | |
* @ORM\Column(type="datetime") | |
*/ | |
private $publishedAt; | |
/** | |
* @var User | |
* | |
* @ORM\ManyToOne(targetEntity="Smalldb\StateMachine\Test\SymfonyDemo\Entity\User") | |
* @ORM\JoinColumn(nullable=false) | |
*/ | |
private $author; | |
/** | |
* @var Comment[]|ArrayCollection | |
* | |
* @ORM\OneToMany( | |
* targetEntity="Comment", | |
* mappedBy="post", | |
* orphanRemoval=true, | |
* cascade={"persist"} | |
* ) | |
* @ORM\OrderBy({"publishedAt": "DESC"}) | |
*/ | |
private $comments; | |
/** | |
* @var Tag[]|ArrayCollection | |
* | |
* @ORM\ManyToMany(targetEntity="Smalldb\StateMachine\Test\SymfonyDemo\Entity\Tag", cascade={"persist"}) | |
* @ORM\JoinTable(name="symfony_demo_post_tag") | |
* @ORM\OrderBy({"name": "ASC"}) | |
* @Assert\Count(max="4", maxMessage="post.too_many_tags") | |
*/ | |
private $tags; | |
public function __construct() | |
{ | |
$this->publishedAt = new \DateTime(); | |
$this->comments = new ArrayCollection(); | |
$this->tags = new ArrayCollection(); | |
} | |
public function getId(): ?int | |
{ | |
return $this->id; | |
} | |
public function getTitle(): ?string | |
{ | |
return $this->title; | |
} | |
public function setTitle(string $title): void | |
{ | |
$this->title = $title; | |
} | |
public function getSlug(): ?string | |
{ | |
return $this->slug; | |
} | |
public function setSlug(string $slug): void | |
{ | |
$this->slug = $slug; | |
} | |
public function getContent(): ?string | |
{ | |
return $this->content; | |
} | |
public function setContent(string $content): void | |
{ | |
$this->content = $content; | |
} | |
public function getPublishedAt(): \DateTime | |
{ | |
return $this->publishedAt; | |
} | |
public function setPublishedAt(\DateTime $publishedAt): void | |
{ | |
$this->publishedAt = $publishedAt; | |
} | |
public function getAuthor(): ?User | |
{ | |
return $this->author; | |
} | |
public function setAuthor(User $author): void | |
{ | |
$this->author = $author; | |
} | |
public function getComments(): Collection | |
{ | |
return $this->comments; | |
} | |
public function addComment(Comment $comment): void | |
{ | |
$comment->setPost($this); | |
if (!$this->comments->contains($comment)) { | |
$this->comments->add($comment); | |
} | |
} | |
public function removeComment(Comment $comment): void | |
{ | |
$this->comments->removeElement($comment); | |
} | |
public function getSummary(): ?string | |
{ | |
return $this->summary; | |
} | |
public function setSummary(string $summary): void | |
{ | |
$this->summary = $summary; | |
} | |
public function addTag(Tag ...$tags): void | |
{ | |
foreach ($tags as $tag) { | |
if (!$this->tags->contains($tag)) { | |
$this->tags->add($tag); | |
} | |
} | |
} | |
public function removeTag(Tag $tag): void | |
{ | |
$this->tags->removeElement($tag); | |
} | |
public function getTags(): Collection | |
{ | |
return $this->tags; | |
} | |
} |