private function addStatements(Item $item) { $statement = new Statement(new PropertyValueSnak(42, new StringValue('kittens'))); $statement->setGuid('first guid'); $item->getStatements()->addStatement($statement); $statement = new Statement(new PropertyNoValueSnak(23)); $statement->setGuid('second guid'); $item->getStatements()->addStatement($statement); }
/** * @depends testGivenKnownItemId_itemIsReturned */ public function testDataIsOrderedByStatementId() { $item = new Item(new ItemId('Q1')); $item->getStatements()->addNewStatement(new PropertyValueSnak(new PropertyId('P1337'), new StringValue('kittens'))); $item->getStatements()->addNewStatement(new PropertyValueSnak(new PropertyId('P23'), new StringValue('cats'))); $item->getStatements()->addNewStatement(new PropertyValueSnak(new PropertyId('P42'), new StringValue('bunnies'))); $this->testEnvironment->insertItem($item); $client = $this->createClient(); $client->request('GET', '/items/Q1'); $this->assertSame(['P23', 'P42', 'P1337'], array_keys(json_decode($client->getResponse()->getContent(), true)['data'])); }
private function patchItem(Item $item, EntityDiff $patch) { $this->fingerprintPatcher->patchFingerprint($item->getFingerprint(), $patch); if ($patch instanceof ItemDiff) { $item->setSiteLinkList($this->siteLinkListPatcher->getPatchedSiteLinkList($item->getSiteLinkList(), $patch->getSiteLinkDiff())); } $item->setStatements($this->statementListPatcher->getPatchedStatementList($item->getStatements(), $patch->getClaimsDiff())); }
public function testClaimsAreDiffed() { $firstItem = new Item(); $secondItem = new Item(); $secondItem->getStatements()->addNewStatement(new PropertySomeValueSnak(42), null, null, 'guid'); $differ = new ItemDiffer(); $diff = $differ->diffItems($firstItem, $secondItem); $this->assertCount(1, $diff->getClaimsDiff()->getAdditions()); }
public function findSnaksProvider() { $propertyId = new PropertyId('P1337'); $statement1 = new Statement(new PropertyValueSnak($propertyId, new StringValue('a kitten!'))); $statement1->setGuid('Q42$1'); $statement2 = new Statement(new PropertyValueSnak($propertyId, new StringValue('two kittens!!'))); $statement2->setGuid('Q42$2'); // A Statement with a lower rank which should not affect the output $statement3 = new Statement(new PropertyValueSnak($propertyId, new StringValue('three kittens!!!'))); $statement3->setGuid('Q42$3'); $statement3->setRank(Statement::RANK_DEPRECATED); $item = new Item(new ItemId('Q42')); $item->getStatements()->addStatement($statement1); $item->getStatements()->addStatement($statement2); $item->getStatements()->addStatement($statement3); $snaksNormal = array(new PropertyValueSnak($propertyId, new StringValue('a kitten!')), new PropertyValueSnak($propertyId, new StringValue('two kittens!!'))); $snakDeprecated = array(new PropertyValueSnak($propertyId, new StringValue('three kittens!!!'))); return array(array($snaksNormal, $item, new PropertyId('P1337')), array(array(), $item, new PropertyId('P90001')), array($snakDeprecated, $item, new PropertyId('P1337'), array(Statement::RANK_DEPRECATED))); }
public function testSuggestByItem() { $item = new Item(new ItemId('Q42')); $snak = new PropertySomeValueSnak(new PropertyId('P1')); $guid = 'claim0'; $item->getStatements()->addNewStatement($snak, null, null, $guid); $res = $this->suggester->suggestByItem($item, 100, 0.0, 'item'); $this->assertEquals(new PropertyId('p2'), $res[0]->getPropertyId()); $this->assertEquals(new PropertyId('p3'), $res[1]->getPropertyId()); }
/** * Finds a statement in the target entity with the same main snak and qualifiers as $fromStatement * * @param Statement $fromStatement * * @return Statement|false Statement to merge reference into or false */ private function findEquivalentStatement($fromStatement) { $fromHash = $this->getStatementHash($fromStatement); /** @var Statement $statement */ foreach ($this->toItem->getStatements() as $statement) { $toHash = $this->getStatementHash($statement); if ($toHash === $fromHash) { return $statement; } } return false; }
public function testGetStatementFromEntity() { $helper = $this->getNewInstance(); $item = new Item(new ItemId('Q42')); $snak = new PropertyValueSnak(2754236, new StringValue('test')); $statement = new Statement($snak); $statement->setGuid('q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0F'); $item->getStatements()->addStatement($statement); $guid = $statement->getGuid(); $this->assertEquals($statement, $helper->getStatementFromEntity($guid, $item)); $this->setExpectedException('\\UsageException'); $helper->getStatementFromEntity('q42$D8404CDA-25E4-4334-AF13-A3290BCD9C0N', $item); }
public function testSerialize() { $item = new Item(); $item->setLabel('de', 'German'); $item->setDescription('de', 'German'); $item->setAliases('de', array('German')); $item->setAliases('en', array('English')); $item->getStatements()->addNewStatement(new PropertyNoValueSnak(1)); $instance = $this->newInstance(); $serialization = $instance->serialize($item); $expected = array('type' => 'item', 'labels' => array('en' => array('source-language' => '<SOURCE>')), 'descriptions' => array('en' => array('source-language' => '<SOURCE>')), 'aliases' => array('en' => array(array('language' => 'en', 'value' => 'English'))), 'claims' => array('P1' => array(array('mainsnak' => array('snaktype' => 'novalue', 'property' => 'P1', 'datatype' => '<DATATYPE>'), 'type' => 'statement', 'rank' => 'normal')))); $this->assertSame($expected, $serialization); }
public function testAttemptSave() { $mockApiBase = $this->getMockApiBase(); $mockApiBase->expects($this->once())->method('isWriteMode')->will($this->returnValue(true)); $mockApiBase->expects($this->atLeastOnce())->method('getContext')->will($this->returnValue($this->newContext())); $mockApiBase->expects($this->atLeastOnce())->method('extractRequestParams')->will($this->returnValue(array())); $helper = new EntitySavingHelper($mockApiBase, $this->getMockErrorReporter(), $this->getMockSummaryFormatter(), $this->getMockEditEntityFactory(1)); $entity = new Item(); $entity->setId(new ItemId('Q444')); $entity->getFingerprint()->setLabel('en', 'Foo'); $entity->getSiteLinkList()->addNewSiteLink('enwiki', 'APage'); $entity->getStatements()->addNewStatement(new PropertyNoValueSnak(new PropertyId('P8'))); $summary = 'A String Summary'; $flags = 0; $status = $helper->attemptSaveEntity($entity, $summary, $flags); $this->assertTrue($status->isGood()); }
/** * Returns a MockRepository. The following entities are defined: * * - Items Q23 * - Item Q42 * - Redirect Q2233 -> Q23 * - Redirect Q222333 -> Q23 * - Property P5 (item reference) * * @return MockRepository */ private function getMockRepository() { $mockRepo = new MockRepository(); $p5 = new Property(new PropertyId('P5'), null, 'wikibase-item'); $p5->getFingerprint()->setLabel('en', 'Label5'); $mockRepo->putEntity($p5); $q23 = new Item(new ItemId('Q23')); $q23->getFingerprint()->setLabel('en', 'Label23'); $mockRepo->putEntity($q23); $q2233 = new EntityRedirect(new ItemId('Q2233'), new ItemId('Q23')); $mockRepo->putRedirect($q2233); $q222333 = new EntityRedirect(new ItemId('Q222333'), new ItemId('Q23')); $mockRepo->putRedirect($q222333); $q42 = new Item(new ItemId('Q42')); $q42->getFingerprint()->setLabel('en', 'Label42'); $snak = new PropertyValueSnak($p5->getId(), new EntityIdValue($q2233->getEntityId())); $q42->getStatements()->addNewStatement($snak, null, null, 'Q42$DEADBEEF'); $mockRepo->putEntity($q42); return $mockRepo; }
public function deserializationProvider() { $provider = array(array(new Item(), array('type' => 'item'))); $item = new Item(new ItemId('Q42')); $provider[] = array($item, array('type' => 'item', 'id' => 'Q42')); $item = new Item(); $item->getFingerprint()->setLabel('en', 'foo'); $provider[] = array($item, array('type' => 'item', 'labels' => array('en' => array('lang' => 'en', 'value' => 'foo')))); $item = new Item(); $item->getFingerprint()->setDescription('en', 'foo'); $provider[] = array($item, array('type' => 'item', 'descriptions' => array('en' => array('lang' => 'en', 'value' => 'foo')))); $item = new Item(); $item->getFingerprint()->setAliasGroup('en', array('foo', 'bar')); $provider[] = array($item, array('type' => 'item', 'aliases' => array('en' => array('lang' => 'en', 'values' => array('foo', 'bar'))))); $item = new Item(); $item->getStatements()->addNewStatement(new PropertyNoValueSnak(42), null, null, 'test'); $provider[] = array($item, array('type' => 'item', 'claims' => array('P42' => array(array('mainsnak' => array('snaktype' => 'novalue', 'property' => 'P42'), 'type' => 'statement', 'rank' => 'normal'))))); $item = new Item(); $item->addSiteLink(new SiteLink('enwiki', 'Nyan Cat')); $provider[] = array($item, array('type' => 'item', 'sitelinks' => array('enwiki' => array('site' => 'enwiki', 'title' => 'Nyan Cat', 'badges' => array())))); return $provider; }
public function entityProvider() { $entities = array(); $entity = new Item(new ItemId('Q42')); $entities[] = array($entity); $entity = new Item(); $entity->setLabels(array('en' => 'Nyan Cat', 'fr' => 'Nyan Cat')); $entities[] = array($entity); $entity = new Item(); $entity->setDescriptions(array('en' => 'A Nyan Cat', 'fr' => 'A Nyan Cat')); $entities[] = array($entity); $entity = new Item(); $entity->setAliases('en', array('Cat', 'My cat')); $entity->setAliases('fr', array('Cat')); $entities[] = array($entity); $entity = new Item(); $entity->getStatements()->addNewStatement(new PropertyNoValueSnak(42), null, null, 'guid'); $entities[] = array($entity); $item = new Item(); $item->addSiteLink(new SiteLink('enwiki', 'Nyan Cat')); $entities[] = array($item); $entities[] = array(Property::newFromType('string')); return $entities; }
public function provideValidate() { $p11 = new PropertyId('P11'); $q17 = new ItemId('Q17'); $item = new Item($q17); $claimGuid = $this->mockProvider->getGuidGenerator()->newGuid($q17); $oldSnak = new PropertyValueSnak($p11, new StringValue("old reference")); $oldReference = new Reference(new SnakList(array($oldSnak))); $snak = new PropertyNoValueSnak($p11); $qualifiers = new SnakList(array($oldSnak)); $item->getStatements()->addNewStatement($snak, $qualifiers, null, $claimGuid); //NOTE: the mock validator will consider the string "INVALID" to be invalid. $badSnak = new PropertyValueSnak($p11, new StringValue('INVALID')); $brokenSnak = new PropertyValueSnak($p11, new NumberValue(23)); $badReference = new Reference(new SnakList(array($badSnak))); $brokenReference = new Reference(new SnakList(array($brokenSnak))); $refHash = $oldReference->getHash(); $cases = array(); $cases['invalid snak value'] = array($item, $claimGuid, $badReference, ''); $cases['invalid snak value type'] = array($item, $claimGuid, $brokenReference, $refHash); return $cases; }
private function newItem() { $item = new Item(new ItemId('Q7799929')); $item->setLabel('en', 'kitten item'); $statements = $item->getStatements(); $statements->addNewStatement(new PropertyValueSnak(42, new StringValue('http://an.url.com'))); $statements->addNewStatement(new PropertyValueSnak(42, new StringValue('https://another.url.org'))); $statements->addNewStatement(new PropertyValueSnak(10, new StringValue('File:This is a file.pdf'))); $statements->addNewStatement(new PropertyValueSnak(10, new StringValue('File:Selfie.jpg'))); return $item; }
public function testFullEntityGetEntityResponse() { $item = new Item(new ItemId('Q123098')); //Basic $item->setLabel('de', 'foo-de'); $item->setLabel('qu', 'foo-qu'); $item->setAliases('en', array('bar', 'baz')); $item->setAliases('de-formal', array('bar', 'baz')); $item->setDescription('en', 'en-desc'); $item->setDescription('pt', 'ptDesc'); $item->getSiteLinkList()->addNewSiteLink('enwiki', 'Berlin', array(new ItemId('Q333'))); $item->getSiteLinkList()->addNewSiteLink('zh_classicalwiki', 'User:Addshore', array()); $snak = new PropertyValueSnak(65, new StringValue('snakStringValue')); $qualifiers = new SnakList(); $qualifiers->addSnak(new PropertyValueSnak(65, new StringValue('string!'))); $qualifiers->addSnak(new PropertySomeValueSnak(65)); $references = new ReferenceList(); $references->addNewReference(array(new PropertySomeValueSnak(65), new PropertySomeValueSnak(68))); $guid = 'imaguid'; $item->getStatements()->addNewStatement($snak, $qualifiers, $references, $guid); $entityLookup = new MockRepository(); $entityLookup->putEntity($item); $entityAccessor = $this->getEntityAccessor($entityLookup, null, 'qug'); $expected = array('id' => 'Q123098', 'type' => 'item', 'labels' => array('de' => array('language' => 'de', 'value' => 'foo-de')), 'descriptions' => array('en' => array('language' => 'en', 'value' => 'en-desc')), 'aliases' => array('en' => array(1 => array('language' => 'en', 'value' => 'bar'), 2 => array('language' => 'en', 'value' => 'baz'))), 'claims' => array('P65' => array(1 => array('id' => 'imaguid', 'type' => 'statement', 'mainsnak' => array('snaktype' => 'value', 'property' => 'P65', 'datatype' => 'structured-cat', 'datavalue' => array('value' => 'snakStringValue', 'type' => 'string')), 'qualifiers' => array('P65' => array(1 => array('hash' => 'e95e866e7fa1c18bd06dae9b712cb99545107eb8', 'snaktype' => 'value', 'property' => 'P65', 'datavalue' => array('value' => 'string!', 'type' => 'string'), 'datatype' => 'structured-cat'), 2 => array('hash' => '210b00274bf03247a89de918f15b12142ebf9e56', 'snaktype' => 'somevalue', 'property' => 'P65', 'datatype' => 'structured-cat'))), 'rank' => 'normal', 'qualifiers-order' => array(1 => 'P65'), 'references' => array(1 => array('hash' => 'bdc5f7185904d6d3219e13b7443571dda8c4bee8', 'snaks' => array('P65' => array(1 => array('snaktype' => 'somevalue', 'property' => 'P65', 'datatype' => 'structured-cat')), 'P68' => array(1 => array('snaktype' => 'somevalue', 'property' => 'P68', 'datatype' => 'structured-cat'))), 'snaks-order' => array(1 => 'P65', 2 => 'P68')))))), 'sitelinks' => array('enwiki' => array('site' => 'enwiki', 'title' => 'Berlin', 'badges' => array(1 => 'Q333')), 'zh_classicalwiki' => array('site' => 'zh_classicalwiki', 'title' => 'User:Addshore', 'badges' => array())), 'schemaVersion' => 2); $this->assertEquals($expected, $entityAccessor->getEntity('Q123098')); }
private function getContent() { $item = new Item(); $item->getFingerprint()->setLabel('en', 'Kitten'); $item->getSiteLinkList()->addNewSiteLink('enwiki', 'Kitten'); $item->getStatements()->addNewStatement(new PropertyNoValueSnak(new PropertyId('P1'))); $entityContentFactory = WikibaseRepo::getDefaultInstance()->getEntityContentFactory(); return $entityContentFactory->newFromEntity($item); }
/** * @param ItemId $qid * @param PropertyId $pid * @param DataValue $value * * @return Item */ private function getItemWithStatement(ItemId $qid, PropertyId $pid, DataValue $value) { $snak = new PropertyValueSnak($pid, $value); $item = new Item($qid); $item->getStatements()->addNewStatement($snak); return $item; }
public function testGenerateSuggestionsWithItem() { $itemId = new ItemId('Q42'); $item = new Item($itemId); $snak = new PropertySomeValueSnak(new PropertyId('P12')); $guid = 'claim0'; $item->getStatements()->addNewStatement($snak, null, null, $guid); $this->lookup->expects($this->once())->method('getEntity')->with($this->equalTo($itemId))->will($this->returnValue($item)); $this->suggester->expects($this->any())->method('suggestByItem')->with($this->equalTo($item))->will($this->returnValue(array('foo'))); $result3 = $this->suggestionGenerator->generateSuggestionsByItem('Q42', 100, 0.0, 'item'); $this->assertEquals($result3, array('foo')); }
/** * @param Item $item * @return string|bool */ private function getImage(Item $item) { $values = $this->getBestValues($item->getStatements(), new PropertyId('P18')); if (empty($values)) { return false; } return $this->apiInteractor->getImageUrl($values[0]->getValue(), '280px'); }
/** * @dataProvider provideTestAddEntityRevision */ public function testAddEntityRevision($addMetaData, array $expected) { $result = $this->getDefaultResult(); $item = new Item(new ItemId('Q123098')); //Basic $item->setLabel('de', 'foo'); $item->setLabel('zh_classical', 'Longer Label'); $item->setAliases('en', array('bar', 'baz')); $item->setAliases('zh', array('????????')); $item->setDescription('pt', 'ptDesc'); $item->setDescription('pl', 'Longer Description For An Item'); $item->getSiteLinkList()->addNewSiteLink('enwiki', 'Berlin', array(new ItemId('Q333'))); $item->getSiteLinkList()->addNewSiteLink('zh_classicalwiki', 'User:Addshore', array()); $snak = new PropertyValueSnak(new PropertyId('P65'), new StringValue('snakStringValue')); $qualifiers = new SnakList(); $qualifiers->addSnak(new PropertyValueSnak(new PropertyId('P65'), new StringValue('string!'))); $qualifiers->addSnak(new PropertySomeValueSnak(new PropertyId('P65'))); $references = new ReferenceList(); $referenceSnaks = new SnakList(); $referenceSnaks->addSnak(new PropertySomeValueSnak(new PropertyId('P65'))); $referenceSnaks->addSnak(new PropertySomeValueSnak(new PropertyId('P68'))); $references->addReference(new Reference($referenceSnaks)); $guid = 'imaguid'; $item->getStatements()->addNewStatement($snak, $qualifiers, $references, $guid); $entityRevision = new EntityRevision($item, 33, '20131126202923'); $resultBuilder = $this->getResultBuilder($result, $addMetaData); $resultBuilder->addEntityRevision('Q1230000', $entityRevision); $data = $result->getResultData(); $this->assertEquals($expected, $data); }
private function addStatements() { $this->simpleItem->statements = $this->statementsBuilder->buildFromStatements($this->item->getStatements()); }
private function newItemWithClaim($itemIdString, $mainSnak) { $item = new Item(new ItemId($itemIdString)); $item->getStatements()->addNewStatement($mainSnak, null, null, $itemIdString . '$D8499CDA-25E4-4334-AG03-A3290BCD9CQP'); return $item; }
public function testExceptionThrownWhenToHasLink() { $from = new Item(new ItemId('Q111')); $to = new Item(new ItemId('Q222')); $to->getStatements()->addNewStatement(new PropertyValueSnak(new PropertyId('P42'), new EntityIdValue(new ItemId('Q111')))); $changeOps = $this->makeChangeOpsMerge($from, $to); $this->setExpectedException('\\Wikibase\\ChangeOp\\ChangeOpException', 'The two items cannot be merged because one of them links to the other using property P42'); $changeOps->apply(); }
private function getBaseItem() { $item = new Item(new ItemId('Q42')); $item->getFingerprint()->setLabel('en', 'Same'); $item->getFingerprint()->setDescription('en', 'Same'); $item->getFingerprint()->setAliasGroup('en', array('Same')); $item->getSiteLinkList()->addNewSiteLink('enwiki', 'Same'); $item->getStatements()->addNewStatement(new PropertyNoValueSnak(42)); return $item; }
private function addStatementListToSerialization(Item $item, array &$serialization) { $serialization['claims'] = $this->statementListSerializer->serialize($item->getStatements()); }
public function testIsStub_nonStubItem() { $item = new Item(); $item->getStatements()->addNewStatement(new PropertyNoValueSnak(42)); $content = ItemContent::newFromItem($item); $this->assertFalse($content->isStub()); }
/** * @see SuggesterEngine::suggestByEntity * * @param Item $item * @param int $limit * @param float $minProbability * @param string $context * @return Suggestion[] */ public function suggestByItem(Item $item, $limit, $minProbability, $context) { $statements = $item->getStatements()->toArray(); $ids = array(); $idTuples = array(); foreach ($statements as $statement) { $numericPropertyId = $this->getNumericIdFromPropertyId($statement->getMainSnak()->getPropertyId()); $ids[] = $numericPropertyId; if (!isset($this->classifyingPropertyIds[$numericPropertyId])) { $idTuples[] = $this->buildTupleCondition($numericPropertyId, '0'); } else { if ($statement->getMainSnak()->getType() === "value") { $dataValue = $statement->getMainSnak()->getDataValue(); $numericEntityId = (int) substr($dataValue->getEntityId()->getSerialization(), 1); $idTuples[] = $this->buildTupleCondition($numericPropertyId, $numericEntityId); } } } return $this->getSuggestions($ids, $idTuples, $limit, $minProbability, $context); }
private function makeNewItemWithClaim($itemIdString, $snak) { $item = new Item(new ItemId($itemIdString)); $item->getStatements()->addNewStatement($snak, null, null, $this->mockProvider->getGuidGenerator()->newGuid($item->getId())); return $item; }
private function newItemWithClaim($itemIdString, $snak) { $item = new Item(new ItemId($itemIdString)); $item->getStatements()->addNewStatement($snak, null, null, $item->getId()->getSerialization() . '$D8404CDA-25E4-4334-AG93-A3290BCD9C0P'); return $item; }