1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
<?php
/**
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
declare(strict_types=1);
namespace Piwik\Plugins\CoreAdminHome\tests\Integration;
use Piwik\Common;
use Piwik\Db;
use Piwik\Plugins\ArchivingMetrics\Timer;
use Piwik\Plugins\CoreAdminHome\API as CoreAdminHomeAPI;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
/**
* @group CoreAdminHome
* @group CoreAdminHome_ArchiveReportsMetricsTimer
* @group Plugins
*/
class ArchiveReportsMetricsTimerTest extends IntegrationTestCase
{
public static function setUpBeforeClass(): void
{
self::$fixture->extraPluginsToLoad[] = 'ArchivingMetrics';
parent::setUpBeforeClass();
}
public function setUp(): void
{
parent::setUp();
Timer::resetInstanceForTests();
}
public function testArchiveReportsWritesMetricsOnceAndDoesNotWriteAgainWhenReusingDbArchive(): void
{
Fixture::createSuperUser(true);
$_GET['trigger'] = 'archivephp';
$idSite = Fixture::createWebsite('2024-01-01 00:00:00');
$t = Fixture::getTracker($idSite, '2024-01-01 12:00:00');
$t->setUrl('http://example.com/');
Fixture::checkResponse($t->doTrackPageView('test'));
CoreAdminHomeAPI::getInstance()->archiveReports($idSite, 'day', '2024-01-01');
$this->assertSame(1, $this->getMetricsCount(), 'Expected archiving_metrics to have 1 row after first archiveReports call.');
CoreAdminHomeAPI::getInstance()->archiveReports($idSite, 'day', '2024-01-01');
$this->assertSame(1, $this->getMetricsCount(), 'Expected archiving_metrics to still have 1 row after reusing the same DB archive.');
}
private function getMetricsCount(): int
{
return (int) Db::fetchOne('SELECT COUNT(*) FROM ' . Common::prefixTable('archiving_metrics'));
}
}
|