protected function setUp() { parent::setUp(); if (!defined('WB_VERSION')) { $this->markTestSkipped("Skipping because WikibaseClient does not have '\n\t\t\t\t. 'a local site link table."); } $this->tablesUsed[] = 'wb_items_per_site'; $siteLinkTable = new SiteLinkTable('wb_items_per_site', false); $siteLinks = new SiteLinkList(array(new SiteLink('dewiki', 'Katze'), new SiteLink('enwiki', 'Kitten'), new SiteLink('eswiki', 'Gato'))); $item = new Item(new ItemId('Q9'), null, $siteLinks); $siteLinkTable->saveLinksOfItem($item); }
/** * Rebuilds EntityPerPageTable for specified pages * * @param ItemId[] $itemIds * * @return int */ private function rebuildSiteLinks(array $itemIds) { $this->entityPrefetcher->prefetch($itemIds); $c = 0; foreach ($itemIds as $itemId) { if (!$itemId instanceof ItemId) { // Just in case someone is using a EntityIdPager which doesn't filter non-Items continue; } $item = $this->entityLookup->getEntity($itemId); if (!$item) { continue; } $ok = $this->siteLinkTable->saveLinksOfItem($item); if (!$ok) { $this->report('Saving sitelinks for Item ' . $item->getId()->getSerialization() . ' failed'); } $c++; } // Wait for the slaves, just in case we e.g. hit a range of ids which need a lot of writes. wfWaitForSlaves(); return $c; }
/** * @depends testSaveLinksOfItem * @dataProvider itemProvider */ public function testClear(Item $item) { $this->assertTrue($this->siteLinkTable->clear() !== false); $this->assertEmpty($this->siteLinkTable->getSiteLinksForItem($item->getId())); }