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