public function testGetPagesUsing()
 {
     $q3 = new ItemId('Q3');
     $q4 = new ItemId('Q4');
     $q6 = new ItemId('Q6');
     $u3s = new EntityUsage($q3, EntityUsage::SITELINK_USAGE);
     $u3l = new EntityUsage($q3, EntityUsage::LABEL_USAGE, 'de');
     $u4l = new EntityUsage($q4, EntityUsage::LABEL_USAGE, 'de');
     $u4t = new EntityUsage($q4, EntityUsage::TITLE_USAGE);
     $this->putUsages(23, array($u3s, $u3l, $u4l), '20150102030405');
     $this->putUsages(42, array($u4l, $u4t), '20150102030405');
     $pages = $this->lookup->getPagesUsing(array($q6));
     Assert::assertEmpty(iterator_to_array($pages));
     $pages = $this->lookup->getPagesUsing(array($q3));
     $this->assertSamePageEntityUsages(array(23 => new PageEntityUsages(23, array($u3s, $u3l))), iterator_to_array($pages), 'Pages using Q3');
     $pages = $this->lookup->getPagesUsing(array($q4, $q3), array(EntityUsage::makeAspectKey(EntityUsage::LABEL_USAGE, 'de')));
     $this->assertSamePageEntityUsages(array(23 => new PageEntityUsages(23, array($u3l, $u4l)), 42 => new PageEntityUsages(42, array($u4l))), iterator_to_array($pages), 'Pages using "label" on Q4 or Q3');
     $pages = $this->lookup->getPagesUsing(array($q3), array(EntityUsage::ALL_USAGE));
     Assert::assertEmpty(iterator_to_array($pages), 'Pages using "all" on Q3');
     $pages = $this->lookup->getPagesUsing(array($q4), array(EntityUsage::SITELINK_USAGE));
     Assert::assertEmpty(iterator_to_array($pages), 'Pages using "sitelinks" on Q4');
     $pages = $this->lookup->getPagesUsing(array($q3, $q4), array(EntityUsage::TITLE_USAGE, EntityUsage::SITELINK_USAGE));
     Assert::assertCount(2, iterator_to_array($pages), 'Pages using "title" or "sitelinks" on Q3 or Q4');
     $this->putUsages(23, array(), '20150102030405');
 }
 public function getChangedAspectsProvider()
 {
     $changeFactory = TestChanges::getEntityChangeFactory();
     $cases = array();
     $q1 = new ItemId('Q1');
     $q2 = new ItemId('Q2');
     $cases['create linked item Q1'] = array(array(EntityUsage::SITELINK_USAGE, EntityUsage::TITLE_USAGE), $changeFactory->newFromUpdate(ItemChange::ADD, null, $this->getItemWithSiteLinks($q1, array('enwiki' => '1'))));
     $cases['unlink item Q1'] = array(array(EntityUsage::SITELINK_USAGE, EntityUsage::TITLE_USAGE), $changeFactory->newFromUpdate(ItemChange::UPDATE, $this->getItemWithSiteLinks($q1, array('enwiki' => '1')), new Item($q1)));
     $cases['link item Q2'] = array(array(EntityUsage::SITELINK_USAGE, EntityUsage::TITLE_USAGE), $changeFactory->newFromUpdate(ItemChange::UPDATE, new Item($q2), $this->getItemWithSiteLinks($q2, array('enwiki' => '2'))));
     $cases['change link of Q1'] = array(array(EntityUsage::SITELINK_USAGE, EntityUsage::TITLE_USAGE), $changeFactory->newFromUpdate(ItemChange::UPDATE, $this->getItemWithSiteLinks($q1, array('enwiki' => '1')), $this->getItemWithSiteLinks($q1, array('enwiki' => '2'))));
     $cases['delete linked item Q2'] = array(array(EntityUsage::SITELINK_USAGE, EntityUsage::TITLE_USAGE), $changeFactory->newFromUpdate(ItemChange::REMOVE, $this->getItemWithSiteLinks($q2, array('enwiki' => '2')), null), 'item connected to client was deleted');
     $cases['add another sitelink to Q2'] = array(array(EntityUsage::SITELINK_USAGE), $changeFactory->newFromUpdate(ItemChange::UPDATE, $this->getItemWithSiteLinks($q2, array('enwiki' => '2')), $this->getItemWithSiteLinks($q2, array('enwiki' => '2', 'itwiki' => 'DUE'))));
     $cases['alias change on Q1'] = array(array(EntityUsage::OTHER_USAGE), $changeFactory->newFromUpdate(ItemChange::UPDATE, new Item($q1), $this->getItemWithAliases($q1, 'de', array('EINS'))));
     $cases['local label change on Q1 (used by Q2)'] = array(array(EntityUsage::makeAspectKey(EntityUsage::LABEL_USAGE, 'en')), $changeFactory->newFromUpdate(ItemChange::UPDATE, new Item($q1), $this->getItemWithLabel($q1, 'en', 'ONE')));
     $badges = array(new ItemId('Q34'));
     $cases['badge only change on Q1'] = array(array(EntityUsage::SITELINK_USAGE), $changeFactory->newFromUpdate(ItemChange::UPDATE, $this->getItemWithSiteLinks($q1, array('enwiki' => '1')), $this->getItemWithSiteLinks($q1, array('enwiki' => '1'), $badges)));
     $cases['statement change on Q1'] = array(array(EntityUsage::OTHER_USAGE), $changeFactory->newFromUpdate(ItemChange::UPDATE, new Item($q1), $this->getItemWithStatement($q1, new PropertyId('P5'), new StringValue('Hello'))));
     return $cases;
 }
コード例 #3
0
 /**
  * @dataProvider provideMakeAspectKey
  */
 public function testMakeAspectKey($aspect, $modifier, $expectedKey)
 {
     $key = EntityUsage::makeAspectKey($aspect, $modifier);
     $this->assertEquals($expectedKey, $key);
 }
コード例 #4
0
 /**
  * @param Diff $labelsDiff
  *
  * @return string[]
  */
 private function getChangedLabelAspects(Diff $labelsDiff)
 {
     $aspects = array();
     foreach ($labelsDiff as $lang => $diffOp) {
         $aspects[] = EntityUsage::makeAspectKey(EntityUsage::LABEL_USAGE, $lang);
     }
     return $aspects;
 }