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)); }
/** * @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))); }
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()); }