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; }
/** * @dataProvider provideMakeAspectKey */ public function testMakeAspectKey($aspect, $modifier, $expectedKey) { $key = EntityUsage::makeAspectKey($aspect, $modifier); $this->assertEquals($expectedKey, $key); }
/** * @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; }