public function deserializationProvider() { $serializations = array(); $serializations[] = array(new Statement(new PropertyNoValueSnak(42)), array('mainsnak' => array('snaktype' => 'novalue', 'property' => 'P42'), 'type' => 'claim')); $serializations[] = array(new Statement(new PropertyNoValueSnak(42)), array('mainsnak' => array('snaktype' => 'novalue', 'property' => 'P42'), 'type' => 'statement')); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setGuid('q42'); $serializations[] = array($statement, array('id' => 'q42', 'mainsnak' => array('snaktype' => 'novalue', 'property' => 'P42'), 'type' => 'claim')); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setRank(Statement::RANK_PREFERRED); $serializations[] = array($statement, array('mainsnak' => array('snaktype' => 'novalue', 'property' => 'P42'), 'type' => 'statement', 'rank' => 'preferred')); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setRank(Statement::RANK_NORMAL); $serializations[] = array($statement, array('mainsnak' => array('snaktype' => 'novalue', 'property' => 'P42'), 'type' => 'statement', 'rank' => 'normal')); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setRank(Statement::RANK_DEPRECATED); $serializations[] = array($statement, array('mainsnak' => array('snaktype' => 'novalue', 'property' => 'P42'), 'type' => 'statement', 'rank' => 'deprecated')); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setQualifiers(new SnakList(array())); $serializations[] = array($statement, array('mainsnak' => array('snaktype' => 'novalue', 'property' => 'P42'), 'type' => 'statement', 'rank' => 'normal')); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setQualifiers(new SnakList(array(new PropertyNoValueSnak(42)))); $serializations[] = array($statement, array('mainsnak' => array('snaktype' => 'novalue', 'property' => 'P42'), 'qualifiers' => array('P42' => array(array('snaktype' => 'novalue', 'property' => 'P42'))), 'type' => 'statement', 'rank' => 'normal')); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setReferences(new ReferenceList()); $serializations[] = array($statement, array('mainsnak' => array('snaktype' => 'novalue', 'property' => "P42"), 'references' => array(), 'type' => 'statement', 'rank' => 'normal')); return $serializations; }
/** * @param Snak $mainSnak * @param Snak[]|SnakList|null $qualifiers * @param Reference[]|ReferenceList|null $references * @param string|null $guid */ public function addNewStatement(Snak $mainSnak, $qualifiers = null, $references = null, $guid = null) { $qualifiers = is_array($qualifiers) ? new SnakList($qualifiers) : $qualifiers; $references = is_array($references) ? new ReferenceList($references) : $references; $statement = new Statement($mainSnak, $qualifiers, $references); $statement->setGuid($guid); $this->addStatement($statement); }
public function snaksProvider() { $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setGuid('test'); $statement2 = new Statement(new PropertyNoValueSnak(42)); $statement2->setGuid('test2'); return array(array(new StatementList()), array(new StatementList(array($statement))), array(new StatementList(array($statement, $statement2)))); }
/** * @param Snak $mainSnak * * @return Statement */ private function makeStatement(Snak $mainSnak) { static $guidCounter = 0; $guidCounter++; $statement = new Statement($mainSnak); $statement->setGuid('EntityViewTest$' . $guidCounter); return $statement; }
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); }
public function testReturnsFalseForVerboseStatementWithoutReferences() { $statement = new Statement(new PropertyValueSnak(42, new StringValue('\\o/'))); $statement->setGuid('kittens of doom'); $statement->setRank(Statement::RANK_PREFERRED); $statement->setQualifiers(new SnakList(array(new PropertyValueSnak(1, new StringValue('wee')), new PropertyValueSnak(2, new StringValue('woo')), new PropertyValueSnak(3, new StringValue('waa'))))); $filter = new ReferencedStatementFilter(); $this->assertFalse($filter->statementMatches($statement)); }
private function makeStatement(Snak $mainSnak, $guid = null) { if ($guid === null) { $this->guidCounter++; $guid = 'TEST$statement-' . $this->guidCounter; } $claim = new Statement($mainSnak); $claim->setGuid($guid); return $claim; }
public function testLabelLookupFallsBackToId() { $labelLookup = $this->getMock('Queryr\\Resources\\Builders\\ResourceLabelLookup'); $labelLookup->expects($this->any())->method('getLabelByIdAndLanguage')->will($this->returnValue(null)); $statement = new Statement(new PropertyValueSnak(42, new EntityIdValue(new ItemId('Q1337')))); $statement->setGuid('first guid'); $builder = new SimpleStatementsBuilder('en', $labelLookup); $simpleStatements = $builder->buildFromStatements(new StatementList([$statement])); $expected = SimpleStatement::newInstance()->withPropertyName('P42')->withPropertyId(new PropertyId('P42'))->withType('string')->withValues([new StringValue('Q1337')]); $this->assertEquals([$expected], $simpleStatements); }
public function testLabelLookupFallsBackToId() { $labelLookup = $this->getMock(LabelLookup::class); $labelLookup->expects($this->any())->method('getLabelByIdAndLanguage')->will($this->returnValue(null)); $statement = new Statement(new PropertyValueSnak(42, new EntityIdValue(new ItemId('Q1337')))); $statement->setGuid('first guid'); $builder = new SimpleStatementsBuilder('en', $labelLookup, new UrlBuilder('http://test')); $simpleStatements = $builder->buildFromStatements(new StatementList([$statement])); $expected = SimpleStatement::newInstance()->withPropertyName('P42')->withPropertyId(new PropertyId('P42'))->withPropertyUrl('http://test/properties/P42')->withType('queryr-entity-identity')->withValues([new EntityIdentityValue(new ItemId('Q1337'), 'Q1337', 'http://test/items/Q1337')]); $this->assertEquals([$expected], $simpleStatements); }
public function testStatementListSerializerWithOptionObjectsForMaps() { $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setGuid('test'); $statementSerializerMock = $this->getMock('\\Serializers\\Serializer'); $statementSerializerMock->expects($this->any())->method('serialize')->with($this->equalTo($statement))->will($this->returnValue(array('mockedsuff' => array(), 'type' => 'statement'))); $serializer = new StatementListSerializer($statementSerializerMock, true); $statementList = new StatementList(array($statement)); $serial = new stdClass(); $serial->P42 = array(array('mockedsuff' => array(), 'type' => 'statement')); $this->assertEquals($serial, $serializer->serialize($statementList)); }
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); }
/** * @see ChangeOp::apply * * @param Entity $entity * @param Summary|null $summary * * @throws ChangeOpException */ public function apply(Entity $entity, Summary $summary = null) { if ($this->statement->getGuid() === null) { $this->statement->setGuid($this->guidGenerator->newGuid($entity->getId())); } $guid = $this->guidParser->parse($this->statement->getGuid()); if ($this->guidValidator->validate($guid->getSerialization()) === false) { throw new ChangeOpException("Claim does not have a valid GUID"); } elseif (!$entity->getId()->equals($guid->getEntityId())) { throw new ChangeOpException("Claim GUID invalid for given entity"); } $this->applyClaimToEntity($entity, $summary); }
public function buildDeserializer() { $entityIdDeserializerMock = $this->getMock('\\Deserializers\\Deserializer'); $entityIdDeserializerMock->expects($this->any())->method('deserialize')->with($this->equalTo('P42'))->will($this->returnValue(new PropertyId('P42'))); $termListDeserializerMock = $this->getMock('\\Deserializers\\Deserializer'); $termListDeserializerMock->expects($this->any())->method('deserialize')->with($this->equalTo(array('en' => array('lang' => 'en', 'value' => 'foo'))))->will($this->returnValue(new TermList(array(new Term('en', 'foo'))))); $aliasGroupListDeserializerMock = $this->getMock('\\Deserializers\\Deserializer'); $aliasGroupListDeserializerMock->expects($this->any())->method('deserialize')->with($this->equalTo(array('en' => array('lang' => 'en', 'values' => array('foo', 'bar')))))->will($this->returnValue(new AliasGroupList(array(new AliasGroup('en', array('foo', 'bar')))))); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setGuid('test'); $statementListDeserializerMock = $this->getMock('\\Deserializers\\Deserializer'); $statementListDeserializerMock->expects($this->any())->method('deserialize')->with($this->equalTo(array('P42' => array(array('mainsnak' => array('snaktype' => 'novalue', 'property' => 'P42'), 'type' => 'statement', 'rank' => 'normal')))))->will($this->returnValue(new StatementList(array($statement)))); return new PropertyDeserializer($entityIdDeserializerMock, $termListDeserializerMock, $aliasGroupListDeserializerMock, $statementListDeserializerMock); }
public function testArrayObjectNotConstructedFromObject() { $statement1 = new Statement(new PropertyNoValueSnak(1)); $statement1->setGuid('1'); $statement2 = new Statement(new PropertyNoValueSnak(2)); $statement2->setGuid('2'); $object = new ArrayObject(); $object->append($statement1); $byPropertyIdArray = new ByPropertyIdArray($object); // According to the documentation append() "cannot be called when the ArrayObject was // constructed from an object." This test makes sure it was not constructed from an object. $byPropertyIdArray->append($statement2); $this->assertCount(2, $byPropertyIdArray); }
/** * @see ChangeOp::apply * * @param EntityDocument $entity * @param Summary|null $summary * * @throws ChangeOpException */ public function apply(EntityDocument $entity, Summary $summary = null) { if (!$entity instanceof StatementListHolder) { throw new InvalidArgumentException('$entity must be a StatementListHolder'); } if ($this->statement->getGuid() === null) { $this->statement->setGuid($this->guidGenerator->newGuid($entity->getId())); } $guid = $this->guidParser->parse($this->statement->getGuid()); if ($this->guidValidator->validate($guid->getSerialization()) === false) { throw new ChangeOpException("Claim does not have a valid GUID"); } elseif (!$entity->getId()->equals($guid->getEntityId())) { throw new ChangeOpException("Claim GUID invalid for given entity"); } $this->applyStatementToEntity($entity, $summary); }
public function testStatementsArePatched() { $s1337 = new Statement(new PropertyNoValueSnak(1337)); $s1337->setGuid('s1337'); $s23 = new Statement(new PropertyNoValueSnak(23)); $s23->setGuid('s23'); $s42 = new Statement(new PropertyNoValueSnak(42)); $s42->setGuid('s42'); $patch = new EntityDiff(array('claim' => new Diff(array('s42' => new DiffOpRemove($s42), 's23' => new DiffOpAdd($s23))))); $property = Property::newFromType('kittens'); $property->getStatements()->addStatement($s1337); $property->getStatements()->addStatement($s42); $expectedProperty = Property::newFromType('kittens'); $expectedProperty->getStatements()->addStatement($s1337); $expectedProperty->getStatements()->addStatement($s23); $this->assertEquals($expectedProperty, $this->getPatchedProperty($property, $patch)); }
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 diffProvider() { $diffs = array(); $diffOps = array('label' => new Diff(array('en' => new DiffOpAdd('foobar'), 'de' => new DiffOpRemove('onoez'), 'nl' => new DiffOpChange('foo', 'bar')), true)); $diffs[] = new EntityDiff($diffOps); $diffOps['description'] = new Diff(array('en' => new DiffOpAdd('foobar'), 'de' => new DiffOpRemove('onoez'), 'nl' => new DiffOpChange('foo', 'bar')), true); $diffs[] = new EntityDiff($diffOps); $diffOps['aliases'] = new Diff(array('en' => new Diff(array(new DiffOpAdd('foobar'), new DiffOpRemove('onoez')), false), 'de' => new Diff(array(new DiffOpRemove('foo')), false)), true); $diffs[] = new EntityDiff($diffOps); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setGuid('EntityDiffTest$foo'); $statementListDiffer = new StatementListDiffer(); $diffOps['claim'] = $statementListDiffer->getDiff(new StatementList($statement), new StatementList()); $diffs[] = new EntityDiff($diffOps); $argLists = array(); foreach ($diffs as $diff) { $argLists[] = array($diff); } return $argLists; }
public function testFoo() { $statement0 = new Statement(new PropertyNoValueSnak(42)); $statement0->setGuid('s0'); $statement1 = new Statement(new PropertySomeValueSnak(42)); $statement1->setGuid('s1'); $statement2 = new Statement(new PropertyValueSnak(42, new StringValue('ohi'))); $statement2->setGuid('s2'); $statement3 = new Statement(new PropertyNoValueSnak(1)); $statement3->setGuid('s3'); $patch = new Diff(array('s0' => new DiffOpRemove($statement0), 's2' => new DiffOpAdd($statement2), 's3' => new DiffOpAdd($statement3))); $source = new StatementList(); $source->addStatement($statement0); $source->addStatement($statement1); $expected = new StatementList(); $expected->addStatement($statement1); $expected->addStatement($statement2); $expected->addStatement($statement3); $this->assertListResultsFromPatch($expected, $source, $patch); }
public function serializationProvider() { $serializations = array(); $serializations[] = array(array('mainsnak' => array('snaktype' => 'novalue', 'property' => 'P42'), 'type' => 'statement', 'rank' => 'normal'), new Statement(new PropertyNoValueSnak(42))); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setGuid('q42'); $serializations[] = array(array('id' => 'q42', 'mainsnak' => array('snaktype' => 'novalue', 'property' => 'P42'), 'type' => 'statement', 'rank' => 'normal'), $statement); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setRank(Statement::RANK_PREFERRED); $serializations[] = array(array('mainsnak' => array('snaktype' => 'novalue', 'property' => 'P42'), 'type' => 'statement', 'rank' => 'preferred'), $statement); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setRank(Statement::RANK_DEPRECATED); $serializations[] = array(array('mainsnak' => array('snaktype' => 'novalue', 'property' => 'P42'), 'type' => 'statement', 'rank' => 'deprecated'), $statement); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setQualifiers(new SnakList(array())); $serializations[] = array(array('mainsnak' => array('snaktype' => 'novalue', 'property' => "P42"), 'type' => 'statement', 'rank' => 'normal'), $statement); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setQualifiers(new SnakList(array(new PropertyNoValueSnak(42)))); $serializations[] = array(array('mainsnak' => array('snaktype' => 'novalue', 'property' => "P42"), 'qualifiers' => array('P42' => array(array('snaktype' => 'novalue', 'property' => 'P42'))), 'qualifiers-order' => array('P42'), 'type' => 'statement', 'rank' => 'normal'), $statement); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setReferences(new ReferenceList(array(new Reference(array(new PropertyNoValueSnak(1)))))); $serializations[] = array(array('mainsnak' => array('snaktype' => 'novalue', 'property' => "P42"), 'references' => array(array('hash' => 'da39a3ee5e6b4b0d3255bfef95601890afd80709', 'snaks' => array())), 'type' => 'statement', 'rank' => 'normal'), $statement); return $serializations; }
public function snaksProvider() { $statements = array(); $statements[] = array(new Statement(new PropertyNoValueSnak(42))); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setGuid('q42'); $statements[] = array($statement); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setRank(Statement::RANK_PREFERRED); $statements[] = array($statement); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setRank(Statement::RANK_DEPRECATED); $statements[] = array($statement); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setQualifiers(new SnakList(array())); $statements[] = array($statement); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setQualifiers(new SnakList(array(new PropertySomeValueSnak(42), new PropertyNoValueSnak(42), new PropertySomeValueSnak(24)))); $statements[] = array($statement); $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setReferences(new ReferenceList(array(new Reference(array(new PropertySomeValueSnak(42), new PropertyNoValueSnak(42), new PropertySomeValueSnak(24)))))); $statements[] = array($statement); return $statements; }
public function testAddStatementWithGuid() { $list = new StatementList(); $list->addNewStatement($this->newSnak(42, 'foo'), null, null, 'kittens'); $statement = new Statement($this->newSnak(42, 'foo')); $statement->setGuid('kittens'); $this->assertEquals(new StatementList($statement), $list); }
public function testSetClaims() { $property = Property::newFromType('string'); $statement0 = new Statement(new PropertyNoValueSnak(42)); $statement0->setGuid('TEST$NVS42'); $statement1 = new Statement(new PropertySomeValueSnak(42)); $statement1->setGuid('TEST$SVS42'); $statements = array($statement0, $statement1); $property->setClaims(new Claims($statements)); $this->assertEquals(count($statements), $property->getStatements()->count(), 'added some statements'); $property->setClaims(new Claims()); $this->assertTrue($property->getStatements()->isEmpty(), 'should be empty again'); }
/** * @param Snak $mainSnak * * @return Statement */ private function getTestStatement(Snak $mainSnak) { $statement = new Statement($mainSnak); $statement->setGuid(uniqid('kittens', true)); return $statement; }
public function testGivenStatementWithDifferentGuids_equalsReturnsFalse() { $statement = new Statement(new PropertyNoValueSnak(42)); $differentStatement = new Statement(new PropertyNoValueSnak(42)); $differentStatement->setGuid('kittens'); $this->assertFalse($statement->equals($differentStatement)); }
public function deserializationProvider() { $statement = new Statement(new PropertyNoValueSnak(42)); $statement->setGuid('test'); return array(array(new StatementList(), array()), array(new StatementList(array($statement)), array('P42' => array(array('mainsnak' => array('snaktype' => 'novalue', 'property' => 'P42'), 'type' => 'statement', 'rank' => 'normal'))))); }
private function newStatement($propertyId, $guid) { $statement = new Statement(new PropertyNoValueSnak($propertyId)); $statement->setGuid($guid); return $statement; }
/** * @return array 1=>from 2=>to 3=>expectedFrom 4=>expectedTo */ public function provideData() { $testCases = array(); $itemWithEnLabel = new Item(); $itemWithEnLabel->getFingerprint()->setLabel('en', 'foo'); $testCases['labelMerge'] = array($itemWithEnLabel->copy(), new Item(), new Item(), $itemWithEnLabel->copy()); $testCases['identicalLabelMerge'] = array($itemWithEnLabel->copy(), $itemWithEnLabel->copy(), new Item(), $itemWithEnLabel->copy()); $itemWithEnBarLabel = new Item(); $itemWithEnBarLabel->getFingerprint()->setLabel('en', 'bar'); $itemWithLabelAndAlias = new Item(); $itemWithLabelAndAlias->getFingerprint()->setLabel('en', 'bar'); $itemWithLabelAndAlias->getFingerprint()->setAliasGroup('en', array('foo')); $testCases['labelAsAliasMerge'] = array($itemWithEnLabel->copy(), $itemWithEnBarLabel->copy(), new Item(), $itemWithLabelAndAlias->copy()); $itemWithDescription = new Item(); $itemWithDescription->getFingerprint()->setDescription('en', 'foo'); $testCases['descriptionMerge'] = array($itemWithDescription->copy(), new Item(), new Item(), $itemWithDescription->copy()); $testCases['identicalDescriptionMerge'] = array($itemWithDescription->copy(), $itemWithDescription->copy(), new Item(), $itemWithDescription->copy()); $itemWithBarDescription = new Item(); $itemWithBarDescription->getFingerprint()->setDescription('en', 'bar'); $testCases['ignoreConflictDescriptionMerge'] = array($itemWithDescription->copy(), $itemWithBarDescription->copy(), $itemWithDescription->copy(), $itemWithBarDescription->copy(), array('description')); $itemWithFooBarAliases = new Item(); $itemWithFooBarAliases->getFingerprint()->setAliasGroup('en', array('foo', 'bar')); $testCases['aliasMerge'] = array($itemWithFooBarAliases->copy(), new Item(), new Item(), $itemWithFooBarAliases->copy()); $itemWithFooBarBazAliases = new Item(); $itemWithFooBarBazAliases->getFingerprint()->setAliasGroup('en', array('foo', 'bar', 'baz')); $testCases['duplicateAliasMerge'] = array($itemWithFooBarAliases->copy(), $itemWithFooBarBazAliases->copy(), new Item(), $itemWithFooBarBazAliases->copy()); $itemWithLink = new Item(); $itemWithLink->getSiteLinkList()->addNewSiteLink('enwiki', 'foo'); $testCases['linkMerge'] = array($itemWithLink->copy(), new Item(), new Item(), $itemWithLink->copy()); $testCases['sameLinkLinkMerge'] = array($itemWithLink->copy(), $itemWithLink->copy(), new Item(), $itemWithLink->copy()); $itemWithBarLink = new Item(); $itemWithBarLink->getSiteLinkList()->addNewSiteLink('enwiki', 'bar'); $testCases['ignoreConflictLinkMerge'] = array($itemWithLink->copy(), $itemWithBarLink->copy(), $itemWithLink->copy(), $itemWithBarLink->copy(), array('sitelink')); $statement = new Statement(new PropertyNoValueSnak(new PropertyId('P56'))); $statement->setGuid('Q111$D8404CDA-25E4-4334-AF13-A390BCD9C556'); $itemWithStatement = new Item(); $itemWithStatement->getStatements()->addStatement($statement); $testCases['statementMerge'] = array($itemWithStatement->copy(), new Item(), new Item(), $itemWithStatement->copy()); $qualifiedStatement = new Statement(new PropertyNoValueSnak(new PropertyId('P56')), new SnakList(array(new PropertyNoValueSnak(new PropertyId('P56'))))); $qualifiedStatement->setGuid('Q111$D8404CDA-25E4-4334-AF13-A390BCD9C556'); $itemWithQualifiedStatement = new Item(); $itemWithQualifiedStatement->getStatements()->addStatement($qualifiedStatement); $testCases['statementWithQualifierMerge'] = array($itemWithQualifiedStatement->copy(), new Item(), new Item(), $itemWithQualifiedStatement->copy()); $anotherQualifiedStatement = new Statement(new PropertyNoValueSnak(new PropertyId('P88')), new SnakList(array(new PropertyNoValueSnak(new PropertyId('P88'))))); $anotherQualifiedStatement->setGuid('Q111$D8404CDA-25E4-4334-AF88-A3290BCD9C0F'); $selfReferencingStatement = new Statement(new PropertyValueSnak(new PropertyId('P42'), new EntityIdValue(new ItemId('Q111')))); $selfReferencingStatement->setGuid('Q111$D74D43D7-BD8F-4240-A058-24C5171ABBFA'); $bigItem = new Item(); $bigItem->setId(111); $bigItem->getFingerprint()->setLabel('en', 'foo'); $bigItem->getFingerprint()->setLabel('pt', 'ptfoo'); $bigItem->getFingerprint()->setDescription('en', 'foo'); $bigItem->getFingerprint()->setDescription('pl', 'pldesc'); $bigItem->getFingerprint()->setAliasGroup('en', array('foo', 'bar')); $bigItem->getFingerprint()->setAliasGroup('de', array('defoo', 'debar')); $bigItem->getSiteLinkList()->addNewSiteLink('dewiki', 'foo'); $bigItem->getStatements()->addStatement($anotherQualifiedStatement); $bigItem->getStatements()->addStatement($selfReferencingStatement); $testCases['itemMerge'] = array($bigItem->copy(), new Item(), new Item(), $bigItem->copy()); $referencingStatement = new Statement(new PropertyValueSnak(new PropertyId('P42'), new EntityIdValue(new ItemId('Q222')))); $referencingStatement->setGuid('Q111$949A4D27-0EBC-46A7-BF5F-AA2DD33C0443'); $bigItem->getSiteLinkList()->addNewSiteLink('nlwiki', 'bar'); $bigItem->getStatements()->addStatement($referencingStatement); $smallerItem = new Item(); $smallerItem->setId(222); $smallerItem->getFingerprint()->setLabel('en', 'toLabel'); $smallerItem->getFingerprint()->setDescription('pl', 'toDescription'); $smallerItem->getSiteLinkList()->addNewSiteLink('nlwiki', 'toLink'); $smallerMergedItem = new Item(); $smallerMergedItem->setId(222); $smallerMergedItem->getFingerprint()->setDescription('pl', 'pldesc'); $smallerMergedItem->getSiteLinkList()->addNewSiteLink('nlwiki', 'bar'); $bigMergedItem = new Item(); $bigMergedItem->setId(111); $bigMergedItem->getFingerprint()->setLabel('en', 'toLabel'); $bigMergedItem->getFingerprint()->setLabel('pt', 'ptfoo'); $bigMergedItem->getFingerprint()->setDescription('en', 'foo'); $bigMergedItem->getFingerprint()->setDescription('pl', 'toDescription'); $bigMergedItem->getFingerprint()->setAliasGroup('en', array('foo', 'bar')); $bigMergedItem->getFingerprint()->setAliasGroup('de', array('defoo', 'debar')); $bigMergedItem->getSiteLinkList()->addNewSiteLink('dewiki', 'foo'); $bigMergedItem->getSiteLinkList()->addNewSiteLink('nlwiki', 'toLink'); $bigMergedItem->setStatements(new StatementList($anotherQualifiedStatement, $selfReferencingStatement, $referencingStatement)); $testCases['ignoreConflictItemMerge'] = array($bigItem->copy(), $smallerItem->copy(), $smallerMergedItem->copy(), $bigMergedItem->copy(), array('description', 'sitelink', 'statement')); return $testCases; }
public function validateProvider() { $p11 = new PropertyId('P11'); $q17 = new ItemId('Q17'); //NOTE: the mock validator will consider the string "INVALID" to be invalid. $goodSnak = new PropertyValueSnak($p11, new StringValue('good')); $badSnak = new PropertyValueSnak($p11, new StringValue('INVALID')); $brokenSnak = new PropertyValueSnak($p11, new NumberValue(23)); $guidGenerator = new GuidGenerator(); $cases = array(); $statement = new Statement($badSnak); $statement->setGuid($guidGenerator->newGuid($q17)); $cases['invalid value in main snak'] = array($q17, $statement); $statement = new Statement($brokenSnak); $statement->setGuid($guidGenerator->newGuid($q17)); $cases['mismatching value in main snak'] = array($q17, $statement); $statement = new Statement($goodSnak); $statement->setGuid($guidGenerator->newGuid($q17)); $statement->setQualifiers(new SnakList(array($badSnak))); $cases['bad snak in qualifiers'] = array($q17, $statement); $statement = new Statement($goodSnak); $statement->setGuid($guidGenerator->newGuid($q17)); $statement->setQualifiers(new SnakList(array($brokenSnak))); $cases['mismatching value in qualifier'] = array($q17, $statement); $statement = new Statement($goodSnak); $reference = new Reference(new SnakList(array($badSnak))); $statement->setGuid($guidGenerator->newGuid($q17)); $statement->setReferences(new ReferenceList(array($reference))); $cases['bad snak in reference'] = array($q17, $statement); $statement = new Statement($goodSnak); $reference = new Reference(new SnakList(array($badSnak))); $statement->setGuid($guidGenerator->newGuid($q17)); $statement->setReferences(new ReferenceList(array($reference))); $cases['mismatching value in reference'] = array($q17, $statement); return $cases; }
public function testBadPropertyError() { $store = WikibaseRepo::getDefaultInstance()->getEntityStore(); $property = Property::newFromType('quantity'); $property = $store->saveEntity($property, '', $GLOBALS['wgUser'], EDIT_NEW)->getEntity(); $item = new Item(); /** @var Item $item */ $item = $store->saveEntity($item, '', $GLOBALS['wgUser'], EDIT_NEW)->getEntity(); $guidGenerator = new GuidGenerator(); $statement = new Statement(new PropertyNoValueSnak($property->getId())); $statement->setGuid($guidGenerator->newGuid($item->getId())); $item->getStatements()->addStatement($statement); $store->saveEntity($item, '', $GLOBALS['wgUser'], EDIT_UPDATE); // try to change the main snak's property $badProperty = Property::newFromType('string'); $badProperty = $store->saveEntity($badProperty, '', $GLOBALS['wgUser'], EDIT_NEW)->getEntity(); $badSerialization = array('id' => $statement->getGuid(), 'mainsnak' => array('snaktype' => 'novalue', 'property' => $badProperty->getId()->getSerialization()), 'type' => 'statement', 'rank' => 'normal'); $params = array('action' => 'wbsetclaim', 'claim' => FormatJson::encode($badSerialization)); try { $this->doApiRequestWithToken($params); $this->fail('Changed main snak property did not raise an error'); } catch (UsageException $e) { $this->assertEquals('modification-failed', $e->getCodeString(), 'Changed main snak property'); } }