public function testValueObject()
 {
     $entityId = new ItemId('Q1');
     $revisionData = new RevisionData('', '', '', null, '<SITE>', array());
     $instance = new ExternalChange($entityId, $revisionData, '<TYPE>');
     $this->assertSame($entityId, $instance->getEntityId());
     $this->assertSame($revisionData, $instance->getRev());
     $this->assertSame('<TYPE>', $instance->getChangeType());
     $this->assertSame('<SITE>', $instance->getSiteId());
 }
 private function assertExternalChangeEquals(ExternalChange $expected, ExternalChange $actual, $message = '')
 {
     if ($message !== '') {
         $message .= "\n";
     }
     $this->assertEquals($expected->getChangeType(), $actual->getChangeType(), $message . 'getChangeType');
     $this->assertEquals($expected->getEntityId(), $actual->getEntityId(), $message . 'getEntityId');
     $expectedRev = $expected->getRev();
     $actualRev = $actual->getRev();
     $this->assertEquals($expectedRev->getPageId(), $actualRev->getPageId(), $message . 'rev:getPageId');
     $this->assertEquals($expectedRev->getParentId(), $actualRev->getParentId(), $message . 'rev:getParentId');
     $this->assertEquals($expectedRev->getRevId(), $actualRev->getRevId(), $message . 'rev:getRevId');
     $this->assertEquals($expectedRev->getSiteId(), $actualRev->getSiteId(), $message . 'rev:getSiteId');
     $this->assertEquals($expectedRev->getTimestamp(), $actualRev->getTimestamp(), $message . 'rev:getTimestamp');
     $this->assertEquals($expectedRev->getUserName(), $actualRev->getUserName(), $message . 'rev:getUserName');
 }
 /**
  * @param ExternalChange $externalChange
  * @param Title $title
  * @param int $count
  * @param string $flag - flag formatted by ChangesList::recentChangesFlags()
  *
  * @return string HTML
  */
 public function format(ExternalChange $externalChange, Title $title, $count, $flag)
 {
     $changeType = $externalChange->getChangeType();
     $rev = $externalChange->getRev();
     $entityId = $externalChange->getEntityId();
     $line = $changeType === 'restore' || $changeType === 'remove' ? $this->formatDeletionLogLink() : $this->formatDiffHist($entityId, $rev, $count);
     $line .= $this->changeSeparator();
     $line .= $flag . ' ';
     $line .= Linker::link($title);
     if ($changeType !== 'remove') {
         $line .= $this->formatEntityLink($entityId);
     }
     $line .= $this->formatTimestamp($rev->getTimestamp());
     $line .= $this->formatUserLinks($rev->getUserName());
     $commentHtml = $rev->getCommentHtml();
     if ($commentHtml === null || $commentHtml === '') {
         $commentHtml = Linker::formatComment($rev->getComment(), $title, false, $externalChange->getSiteId());
     }
     $line .= $this->wrapCommentBlock($commentHtml);
     return $line;
 }