public function setUp() { parent::setUp(); $self = $this; $proxyMock = $this->getMock('stdClass', array('call')); $proxyMock->expects($this->any())->method('call')->willReturnCallback(function ($className, $methodName, $parameters) use($self) { if ($className == "\\Piwik\\Plugins\\UserCountry\\API" && $methodName == 'getCity') { $self->segmentUsedToGetIntersected[] = $parameters['segment']; return $self->getSegmentTable(); } else { throw new Exception("Unknown API request: {$className}::{$methodName}."); } }); Proxy::setSingletonInstance($proxyMock); $this->segmentTableCount = 0; }
public function test_fetchSubtable_ShouldUseCorrectApiUrl() { PluginManager::getInstance()->loadPlugins(array('API', 'Referrers')); $proxyMock = $this->getMock('stdClass', array('call', '__construct')); $proxyMock->expects($this->once())->method('call')->with('\\Piwik\\Plugins\\Referrers\\API', 'getSearchEnginesFromKeywordId', array('idSubtable' => 23, 'idSite' => 1, 'date' => '2012-01-02', 'format' => 'original', 'module' => 'API', 'method' => 'Referrers.getSearchEnginesFromKeywordId'))->willReturn("result"); Proxy::setSingletonInstance($proxyMock); $report = new \Piwik\Plugins\Referrers\Reports\GetKeywords(); $result = $report->fetchSubtable(23, array('idSite' => 1, 'date' => '2012-01-02')); $this->assertEquals("result", $result); }
public function test_generateReport_CatchesIndividualReportProcessExceptions_WithoutFailingToGenerateWholeReport() { $realProxy = new Proxy(); $mockProxy = $this->getMock('Piwik\\API\\Proxy', array('call')); $mockProxy->expects($this->any())->method('call')->willReturnCallback(function ($className, $methodName, $parametersRequest) use($realProxy) { switch ($className) { case '\\Piwik\\Plugins\\VisitsSummary\\API': $result = new DataTable(); $result->addRowFromSimpleArray(array('label' => 'visits label', 'nb_visits' => 1)); return $result; case '\\Piwik\\Plugins\\UserCountry\\API': throw new \Exception("error"); case '\\Piwik\\Plugins\\Referrers\\API': $result = new DataTable(); $result->addRowFromSimpleArray(array('label' => 'referrers label', 'nb_visits' => 1)); return $result; case '\\Piwik\\Plugins\\API\\API': return $realProxy->call($className, $methodName, $parametersRequest); default: throw new \Exception("Unexpected method {$className}::{$methodName}."); } }); Proxy::setSingletonInstance($mockProxy); $idReport = APIScheduledReports::getInstance()->addReport(1, '', Schedule::PERIOD_DAY, 0, ScheduledReports::EMAIL_TYPE, ReportRenderer::HTML_FORMAT, array('VisitsSummary_get', 'UserCountry_getCountry', 'Referrers_getWebsites'), array(ScheduledReports::DISPLAY_FORMAT_PARAMETER => ScheduledReports::DISPLAY_FORMAT_TABLES_ONLY)); ob_start(); $result = APIScheduledReports::getInstance()->generateReport($idReport, Date::factory('now')->toString(), $language = false, $outputType = APIScheduledReports::OUTPUT_RETURN); ob_end_clean(); $this->assertContains('id="VisitsSummary_get"', $result); $this->assertContains('id="Referrers_getWebsites"', $result); $this->assertNotContains('id="UserCountry_getCountry"', $result); }