TrackChange doesn't handle all return types of \DateTime::createFromFormat(...) (#1584)

* Added boolean check before setting the date
This commit is contained in:
Nick Winfield 2019-02-23 23:24:49 +00:00 committed by troosan
parent 9958a4825f
commit 81a1b2acff
2 changed files with 20 additions and 2 deletions

View File

@ -58,13 +58,13 @@ class TrackChange extends AbstractContainer
*
* @param string $changeType
* @param string $author
* @param null|int|\DateTime $date
* @param null|int|bool|\DateTime $date
*/
public function __construct($changeType = null, $author = null, $date = null)
{
$this->changeType = $changeType;
$this->author = $author;
if ($date !== null) {
if ($date !== null && $date !== false) {
$this->date = ($date instanceof \DateTime) ? $date : new \DateTime('@' . $date);
}
}

View File

@ -41,4 +41,22 @@ class TrackChangeTest extends \PHPUnit\Framework\TestCase
$this->assertEquals($date, $oTrackChange->getDate());
$this->assertEquals(TrackChange::INSERTED, $oTrackChange->getChangeType());
}
/**
* New instance with invalid \DateTime (produced by \DateTime::createFromFormat(...))
*/
public function testConstructDefaultWithInvalidDate()
{
$author = 'Test User';
$date = false;
$oTrackChange = new TrackChange(TrackChange::INSERTED, $author, $date);
$oText = new Text('dummy text');
$oText->setTrackChange($oTrackChange);
$this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\TrackChange', $oTrackChange);
$this->assertEquals($author, $oTrackChange->getAuthor());
$this->assertEquals($date, null);
$this->assertEquals(TrackChange::INSERTED, $oTrackChange->getChangeType());
}
}