fix replacing an initial comment in accompanying period

This commit is contained in:
Julien Fastré 2021-05-18 19:19:22 +02:00
parent 30c53b17f7
commit 8e95166c24
2 changed files with 11 additions and 3 deletions

View File

@ -394,9 +394,10 @@ class AccompanyingPeriod
*/ */
public function setInitialComment(?Comment $comment = null): self public function setInitialComment(?Comment $comment = null): self
{ {
if (NULL === $comment && NULL !== $this->initialComment) { if (NULL !== $this->initialComment) {
$this->removeComment($this->initialComment); $this->removeComment($this->initialComment);
} elseif ($comment instanceof Comment) { }
if ($comment instanceof Comment) {
$this->addComment($comment); $this->addComment($comment);
} }

View File

@ -137,6 +137,7 @@ class AccompanyingPeriodTest extends \PHPUnit\Framework\TestCase
{ {
$period = new AccompanyingPeriod(new \DateTime()); $period = new AccompanyingPeriod(new \DateTime());
$comment = new Comment(); $comment = new Comment();
$replacingComment = new Comment();
$period->setInitialComment(NULL); $period->setInitialComment(NULL);
$this->assertNull($period->getInitialComment()); $this->assertNull($period->getInitialComment());
@ -146,9 +147,15 @@ class AccompanyingPeriodTest extends \PHPUnit\Framework\TestCase
$this->assertSame($period, $comment->getAccompanyingPeriod()); $this->assertSame($period, $comment->getAccompanyingPeriod());
$this->assertEquals(0, count($period->getComments()), "The initial comment should not appears in the list of comments"); $this->assertEquals(0, count($period->getComments()), "The initial comment should not appears in the list of comments");
$period->setInitialComment($replacingComment);
$this->assertSame($period->getInitialComment(), $replacingComment);
$this->assertSame($period, $replacingComment->getAccompanyingPeriod());
$this->assertEquals(0, count($period->getComments()), "The initial comment should not appears in the list of comments");
$this->assertNull($comment->getAccompanyingPeriod());
$period->setInitialComment(NULL); $period->setInitialComment(NULL);
$this->assertNull($period->getInitialComment()); $this->assertNull($period->getInitialComment());
$this->assertNull($comment->getAccompanyingPeriod()); $this->assertNull($replacingComment->getAccompanyingPeriod());
$this->assertEquals(0, count($period->getComments()), "The initial comment should not appears in the list of comments"); $this->assertEquals(0, count($period->getComments()), "The initial comment should not appears in the list of comments");
} }
} }