public function testTryToGetQueryDependencySubjectListForNonSetQueryResult() { $propertyHierarchyLookup = $this->getMockBuilder('\\SMW\\PropertyHierarchyLookup')->disableOriginalConstructor()->getMock(); $instance = new EmbeddedQueryDependencyListResolver(null, $propertyHierarchyLookup); $this->assertNull($instance->getQueryId()); $this->assertNull($instance->getSubject()); $this->assertEmpty($instance->getQueryDependencySubjectList()); }
/** * This method is called from the `SMW::Store::AfterQueryResultLookupComplete` hook * to resolve and update dependencies fetched fro an embedded query and its * QueryResult object. * * @since 2.3 * * @param EmbeddedQueryDependencyListResolver $embeddedQueryDependencyListResolver */ public function addDependencyList(EmbeddedQueryDependencyListResolver $embeddedQueryDependencyListResolver) { if (!$this->isEnabled() || $embeddedQueryDependencyListResolver->getSubject() === null) { return null; } $subject = $embeddedQueryDependencyListResolver->getSubject(); $hash = $embeddedQueryDependencyListResolver->getQueryId(); $sid = $this->getIdForSubject($subject, $hash); if ($this->canSuppressUpdateOnSkewFactorFor($sid, $subject)) { return wfDebugLog('smw', __METHOD__ . " suppressed (skewed time) for SID " . $sid . "\n"); } $dependencyList = $embeddedQueryDependencyListResolver->getQueryDependencySubjectList(); if ($dependencyList === array()) { return null; } if ($sid > 0) { return $this->updateDependencyList($sid, $dependencyList); } // SID == 0 means the storage update/process has not been finalized // (new object hasn't been registered) hence an event is registered to // update the list after the update process has been completed // PHP 5.3 compatibility $embeddedQueryResultLinksUpdater = $this; EventHandler::getInstance()->addCallbackListener('deferred.embedded.query.dep.update', function () use($embeddedQueryResultLinksUpdater, $dependencyList, $subject, $hash) { wfDebugLog('smw', __METHOD__ . ' deferred.embedded.query.dep.update for ' . $hash . "\n"); $embeddedQueryResultLinksUpdater->updateDependencyList($embeddedQueryResultLinksUpdater->getIdForSubject($subject, $hash), $dependencyList); }); }