Exemplo n.º 1
0
 public function testScript()
 {
     $dumpScript = new DumpRdf();
     $mockRepo = new MockRepository();
     $mockEntityPerPage = new MockEntityPerPage();
     $snakList = new SnakList();
     $snakList->addSnak(new PropertySomeValueSnak(new PropertyId('P12')));
     $snakList->addSnak(new PropertyValueSnak(new PropertyId('P12'), new StringValue('stringVal')));
     /** @var Entity[] $testEntities */
     $testEntities = array(new Item(new ItemId('Q1')), new Property(new PropertyId('P1'), null, 'string'), new Property(new PropertyId('P12'), null, 'string', new StatementList(array(new Statement(new PropertySomeValueSnak(new PropertyId('P999')), null, null, 'GUID1')))), new Item(new ItemId('Q2'), new Fingerprint(new TermList(array(new Term('en', 'en-label'), new Term('de', 'de-label'))), new TermList(array(new Term('fr', 'en-desc'), new Term('de', 'de-desc'))), new AliasGroupList(array(new AliasGroup('en', array('ali1', 'ali2')), new AliasGroup('dv', array('ali11', 'ali22'))))), new SiteLinkList(array(new SiteLink('enwiki', 'Berlin'), new SiteLink('dewiki', 'England', array(new ItemId('Q1'))))), new StatementList(array(new Statement(new PropertySomeValueSnak(new PropertyId('P12')), null, null, 'GUID1'), new Statement(new PropertySomeValueSnak(new PropertyId('P12')), $snakList, new ReferenceList(array(new Reference(array(new PropertyValueSnak(new PropertyId('P12'), new StringValue('refSnakVal')), new PropertyNoValueSnak(new PropertyId('P12')))))), 'GUID2')))));
     foreach ($testEntities as $key => $testEntity) {
         $mockRepo->putEntity($testEntity, $key, '20000101000000');
         $mockEntityPerPage->addEntityPage($testEntity->getId(), $key);
     }
     // Note: We are testing with the actual RDF bindings, so we can check for actual RDF output.
     $rdfBuilder = WikibaseRepo::getDefaultInstance()->getValueSnakRdfBuilderFactory();
     $dumpScript->setServices($mockEntityPerPage, new NullEntityPrefetcher(), MockSiteStore::newFromTestSites(), $this->getMockPropertyDataTypeLookup(), $rdfBuilder, $mockRepo, 'fooUri');
     $logFileName = tempnam(sys_get_temp_dir(), "Wikibase-DumpRdfTest");
     $outFileName = tempnam(sys_get_temp_dir(), "Wikibase-DumpRdfTest");
     $dumpScript->loadParamsAndArgs(null, array('log' => $logFileName, 'output' => $outFileName, 'format' => 'n-triples'));
     $dumpScript->execute();
     $expectedLog = file_get_contents(__DIR__ . '/../data/maintenance/dumpRdf-log.txt');
     $expectedOut = file_get_contents(__DIR__ . '/../data/maintenance/dumpRdf-out.txt');
     $actualOut = file_get_contents($outFileName);
     $actualOut = preg_replace('/<http:\\/\\/wikiba.se\\/ontology-beta#Dump> <http:\\/\\/schema.org\\/dateModified> "[^"]+"/', "<http://wikiba.se/ontology-beta#Dump> <http://schema.org/dateModified> \"2015-01-01T00:00:00Z\"", $actualOut);
     $this->assertEquals($this->fixLineEndings($expectedLog), $this->fixLineEndings(file_get_contents($logFileName)));
     $this->assertEquals($this->fixLineEndings($expectedOut), $this->fixLineEndings($actualOut));
 }
Exemplo n.º 2
0
 /**
  * @param string[] $path
  * @param Diff $diff
  *
  * @return DiffView
  */
 private function getDiffView(array $path, Diff $diff)
 {
     $siteStore = MockSiteStore::newFromTestSites();
     $entityIdFormatter = $this->getMock('Wikibase\\DataModel\\Services\\EntityId\\EntityIdFormatter');
     $entityIdFormatter->expects($this->any())->method('formatEntityId')->will($this->returnValue('FORMATTED BADGE ID'));
     $diffView = new DiffView($path, $diff, $siteStore, $entityIdFormatter);
     return $diffView;
 }
 /**
  * @return MergeChangeOpsFactory
  */
 protected function newChangeOpFactory()
 {
     $mockProvider = new ChangeOpTestMockProvider($this);
     $toItemId = new ItemId('Q3');
     $constraintProvider = $this->getMockBuilder('Wikibase\\Repo\\Validators\\EntityConstraintProvider')->disableOriginalConstructor()->getMock();
     $changeOpFactoryProvider = new ChangeOpFactoryProvider($constraintProvider, $mockProvider->getMockGuidGenerator(), $mockProvider->getMockGuidValidator(), $mockProvider->getMockGuidParser($toItemId), $mockProvider->getMockSnakValidator(), $mockProvider->getMockTermValidatorFactory(), MockSiteStore::newFromTestSites());
     return new MergeChangeOpsFactory($constraintProvider, $changeOpFactoryProvider, MockSiteStore::newFromTestSites());
 }
 /**
  * @param SpecialMergeItems $page
  * @param User $user
  */
 private function overrideServices(SpecialMergeItems $page, User $user)
 {
     $wikibaseRepo = WikibaseRepo::getDefaultInstance();
     $summaryFormatter = $wikibaseRepo->getSummaryFormatter();
     $changeOpsFactory = new MergeChangeOpsFactory($wikibaseRepo->getEntityConstraintProvider(), $wikibaseRepo->getChangeOpFactoryProvider(), MockSiteStore::newFromTestSites());
     $exceptionLocalizer = $this->getMock('Wikibase\\Repo\\Localizer\\ExceptionLocalizer');
     $exceptionLocalizer->expects($this->any())->method('getExceptionMessage')->will($this->returnCallback(function (Exception $ex) {
         if ($ex instanceof PHPUnit_Framework_Error) {
             throw $ex;
         }
         $text = get_class($ex);
         if ($ex instanceof MessageException) {
             $text .= ':' . $ex->getKey();
         } elseif ($ex instanceof ItemMergeException) {
             $text .= ':' . $ex->getErrorCode();
         } elseif ($ex instanceof TokenCheckException) {
             $text .= ':' . $ex->getErrorCode();
         } else {
             $text .= ':"' . $ex->getMessage() . '"';
         }
         return new RawMessage('(@' . $text . '@)');
     }));
     $page->initServices($wikibaseRepo->getEntityIdParser(), $exceptionLocalizer, new TokenCheckInteractor($user), new ItemMergeInteractor($changeOpsFactory, $this->mockRepository, $this->mockRepository, $this->getPermissionCheckers(), $summaryFormatter, $user, new RedirectCreationInteractor($this->mockRepository, $this->mockRepository, $this->getPermissionCheckers(), $summaryFormatter, $user, $this->getMockEditFilterHookRunner(), $this->mockRepository)));
 }
Exemplo n.º 5
0
 public function testSitelinkConflictNormalization()
 {
     $from = new Item(new ItemId('Q111'));
     $expectedFrom = clone $from;
     $from->getSiteLinkList()->addNewSiteLink('enwiki', 'FOo');
     $to = new Item(new ItemId('Q222'));
     $expectedTo = clone $to;
     $to->getSiteLinkList()->addNewSiteLink('enwiki', 'Foo');
     $enwiki = $this->getMock('Site');
     $enwiki->expects($this->once())->method('getGlobalId')->will($this->returnValue('enwiki'));
     $enwiki->expects($this->exactly(2))->method('normalizePageName')->will($this->returnValue('Foo'));
     $mockSiteStore = MockSiteStore::newFromTestSites();
     $mockSiteStore->saveSite($enwiki);
     $changeOps = $this->makeChangeOpsMerge($from, $to, array(), $mockSiteStore);
     $changeOps->apply();
     $this->assertTrue($from->equals($expectedFrom));
     $this->assertTrue($to->equals($expectedTo));
 }
 /**
  * @return ChangeOpFactoryProvider
  */
 protected function newChangeOpFactoryProvider()
 {
     $entityId = new ItemId('Q2');
     $constraintProvider = new EntityConstraintProvider($this->mockProvider->getMockLabelDescriptionDuplicateDetector(), $this->mockProvider->getMockSiteLinkConflictLookup());
     return new ChangeOpFactoryProvider($constraintProvider, $this->mockProvider->getMockGuidGenerator(), $this->mockProvider->getMockGuidValidator(), $this->mockProvider->getMockGuidParser($entityId), $this->mockProvider->getMockSnakValidator(), $this->mockProvider->getMockTermValidatorFactory(), MockSiteStore::newFromTestSites());
 }