get($idSite = 1, 'week', '2012-01-01'); $this->assertEmpty(ArchiveWithNoVisitsTest_MockArchiver::$methodsCalled); } public function test_getIdSitesToArchiveWhenNoVisits_DoesNotTriggerArchiving_IfSiteHasNoVisits() { // add our mock archiver instance // TODO: should use a dummy plugin that is activated for this test explicitly, but that can be tricky, especially in the future PluginsArchiver::$archivers['VisitsSummary'] = 'Piwik\Tests\Integration\ArchiveWithNoVisitsTest_MockArchiver'; // mark our only site as should archive when no visits $eventDispatcher = $this->getEventDispatcher(); $eventDispatcher->addObserver('Archiving.getIdSitesToArchiveWhenNoVisits', function (&$idSites) { $idSites[] = 1; }); Cache::getTransientCache()->flushAll(); // initiate archiving and make sure both aggregate methods are called correctly VisitsSummaryAPI::getInstance()->get($idSite = 1, 'week', '2012-01-10'); $expectedMethodCalls = array( 'aggregateDayReport', 'aggregateDayReport', 'aggregateDayReport', 'aggregateDayReport', 'aggregateDayReport', 'aggregateDayReport', 'aggregateDayReport', 'aggregateMultipleReports', ); $this->assertEquals($expectedMethodCalls, ArchiveWithNoVisitsTest_MockArchiver::$methodsCalled); } public function test_PluginArchiver_DoesNotTriggerArchiving_EvenIfSiteHasNoVisits() { PluginsArchiver::$archivers['VisitsSummary'] = 'Piwik\Tests\Integration\ArchiveWithNoVisitsTest_MockArchiver'; ArchiveWithNoVisitsTest_MockArchiver::$runWithoutVisits = true; // initiate archiving and make sure methods are called VisitsSummaryAPI::getInstance()->get($idSite = 1, 'week', '2012-01-01'); $expectedMethodCalls = array(); $this->assertEquals($expectedMethodCalls, ArchiveWithNoVisitsTest_MockArchiver::$methodsCalled); } /** * @return EventDispatcher */ private function getEventDispatcher() { return self::$fixture->piwikEnvironment->getContainer()->get('Piwik\EventDispatcher'); } }