/**
  * Sets up the test data.
  */
 public function setUp()
 {
     $siteLink = new SiteLink(WikibaseClient::getDefaultInstance()->getSettings()->getSetting('siteGlobalID'), 'WikibaseClientDataAccessTest');
     if ($this->siteLinkLookup->getItemIdForSiteLink($siteLink)) {
         // Already set up for this MockRepository
         return;
     }
     $stringProperty = $this->getTestProperty(new PropertyId('P342'), 'string', 'LuaTestStringProperty');
     $itemProperty = $this->getTestProperty(new PropertyId('P456'), 'wikibase-item', 'LuaTestItemProperty');
     $stringSnak = new PropertyValueSnak($stringProperty->getId(), new StringValue('Lua :)'));
     $statement1 = $this->getTestStatement($stringSnak);
     $statement1->setRank(Statement::RANK_PREFERRED);
     $qualifierSnak1 = new PropertyValueSnak(new PropertyId('P342'), new StringValue('A qualifier Snak'));
     $qualifierSnak2 = new PropertyValueSnak(new PropertyId('P342'), new StringValue('Moar qualifiers'));
     $referenceSnak = new PropertyValueSnak(new PropertyId('P342'), new StringValue('A reference'));
     $statement1->setQualifiers(new SnakList(array($qualifierSnak1, $qualifierSnak2)));
     $statement1->addNewReference($referenceSnak);
     $stringProperty->getStatements()->addStatement($statement1);
     $this->siteLinkLookup->putEntity($stringProperty);
     $this->siteLinkLookup->putEntity($itemProperty);
     $stringSnak2 = new PropertyValueSnak($stringProperty->getId(), new StringValue('Lua is clearly superior to the parser function'));
     $statement2 = $this->getTestStatement($stringSnak2);
     $statement2->setRank(Statement::RANK_NORMAL);
     $itemSnak = new PropertyValueSnak($itemProperty->getId(), new EntityIdValue(new ItemId('Q885588')));
     $statement3 = $this->getTestStatement($itemSnak);
     $statement3->setRank(Statement::RANK_NORMAL);
     $siteLinks = array($siteLink);
     $siteLinks[] = new SiteLink('fooSiteId', 'FooBarFoo');
     $labels = array('de' => 'Lua Test Item', 'en' => 'Test all the code paths');
     $this->createTestItem(new ItemId('Q32487'), $labels, array($statement1, $statement2), $siteLinks);
     $this->createTestItem(new ItemId('Q32488'), array(), array($statement1, $statement3), array());
     // Create another test item to test arbitrary access
     $this->createTestItem(new ItemId('Q199024'), array('de' => 'Arbitrary access \\o/'));
     $this->createTestItem(new ItemId('Q885588'), array('ku-latn' => 'Pisîk'));
 }