assertHasOneDownload('day'); $this->assertHasOneDownload('week'); $this->assertHasOneDownload('month'); $this->assertHasOneDownload('year'); $deleteReportsOlderThan = 1; $keepBasicMetrics = true; $reportPeriodsToKeep = array(2,3,4,5); $this->purgeData($deleteReportsOlderThan, $reportPeriodsToKeep, $keepBasicMetrics); $this->assertHasNoDownload('day'); $this->assertHasOneDownload('week'); $this->assertHasOneDownload('month'); $this->assertHasOneDownload('year'); } public function test_purgeData_keepOnlyDay() { $this->assertHasOneDownload('day'); $this->assertHasOneDownload('week'); $this->assertHasOneDownload('month'); $this->assertHasOneDownload('year'); $deleteReportsOlderThan = 1; $keepBasicMetrics = true; $reportPeriodsToKeep = array(1); $this->purgeData($deleteReportsOlderThan, $reportPeriodsToKeep, $keepBasicMetrics); $this->assertNumVisits(2, 'day'); $this->assertNumVisits(2, 'week'); $this->assertHasOneDownload('day'); $this->assertHasNoDownload('week'); $this->assertHasNoDownload('month'); $this->assertHasNoDownload('year'); } public function test_purgeData_shouldNotPurgeAnything_IfDeleteReportsOlderThanIsFarBackInThePast() { $this->assertHasOneDownload('day'); $this->assertHasOneDownload('week'); $this->assertHasOneDownload('month'); $this->assertHasOneDownload('year'); $deleteReportsOlderThan = 1000; $keepBasicMetrics = true; $reportPeriodsToKeep = array(1,2,3,4,5); $this->purgeData($deleteReportsOlderThan, $reportPeriodsToKeep, $keepBasicMetrics); $this->assertHasOneDownload('day'); $this->assertHasOneDownload('week'); $this->assertHasOneDownload('month'); $this->assertHasOneDownload('year'); } public function test_purgeData_shouldPurgeAllPeriodsExceptBasicMetrics_IfNoPeriodToKeepIsGiven() { $this->assertHasOneDownload('day'); $this->assertHasOneDownload('week'); $this->assertHasOneDownload('month'); $this->assertHasOneDownload('year'); $deleteReportsOlderThan = 1; $keepBasicMetrics = true; $reportPeriodsToKeep = array(); $this->purgeData($deleteReportsOlderThan, $reportPeriodsToKeep, $keepBasicMetrics); $this->assertNumVisits(2, 'day'); $this->assertNumVisits(2, 'week'); $this->assertNumVisits(2, 'month'); $this->assertNumVisits(2, 'year'); $this->assertHasNoDownload('day'); $this->assertHasNoDownload('week'); $this->assertHasNoDownload('month'); $this->assertHasNoDownload('year'); } public function test_purgeData_shouldPurgeEverything_IfNoPeriodToKeepIsGivenAndBasicMetricsNotKept() { $this->assertHasOneDownload('day'); $this->assertHasOneDownload('week'); $this->assertHasOneDownload('month'); $this->assertHasOneDownload('year'); $deleteReportsOlderThan = 1; $keepBasicMetrics = false; $reportPeriodsToKeep = array(); $this->purgeData($deleteReportsOlderThan, $reportPeriodsToKeep, $keepBasicMetrics); $this->assertNumVisits(0, 'day'); $this->assertNumVisits(0, 'week'); $this->assertNumVisits(0, 'month'); $this->assertNumVisits(0, 'year'); $this->assertHasNoDownload('day'); $this->assertHasNoDownload('week'); $this->assertHasNoDownload('month'); $this->assertHasNoDownload('year'); } private function assertNumVisits($expectedNumVisits, $period) { $url = 'method=VisitsSummary.getVisits' . '&idSite=' . self::$fixture->idSite . '&date=' . self::$fixture->dateTime . '&period='. $period . '&format=original'; $api = new Request($url); $table = $api->process(); $this->assertEquals($expectedNumVisits, $table->getFirstRow()->getColumn('nb_visits')); } private function assertHasOneDownload($period) { $api = new Request($this->getDownloadApiRequestUrl($period)); $table = $api->process(); $this->assertEquals(1, $table->getRowsCount(), $period . ' should have one download but has not'); } private function assertHasNoDownload($period) { $api = new Request($this->getDownloadApiRequestUrl($period)); $table = $api->process(); $this->assertEquals(0, $table->getRowsCount(), $period . ' should not have a download but has one'); } private function getDownloadApiRequestUrl($period) { return 'method=Actions.getDownloads' . '&idSite=' . self::$fixture->idSite . '&date=' . self::$fixture->dateTime . '&period='. $period . '&format=original'; } private function purgeData($deleteReportsOlderThan, $reportPeriodsToKeep, $keepBasicMetrics) { $metricsToKeep = PrivacyManager::getAllMetricsToKeep(); $maxRowsToDeletePerQuery = 100000; $keepSegmentReports = false; $purger = new ReportsPurger($deleteReportsOlderThan, $keepBasicMetrics, $reportPeriodsToKeep, $keepSegmentReports, $metricsToKeep, $maxRowsToDeletePerQuery); $purger->purgeData(); } } PurgeDataTest::$fixture = new OneVisitorTwoVisits();