api = API::getInstance(); $this->setSuperUser(); } public function test_get_shouldReturnADataTable() { $this->trackPageviews([1]); $result = $this->api->get($this->idSite, 'month', $this->date); $result->applyQueuedFilters(); $this->assertTrue($result instanceof DataTable); } public function test_get_shouldReturnZero_IfNoTrackedBandwidth() { $result = $this->api->get($this->idSite, 'day', $this->date); $this->assertTotalBandwidthValue(0, 0, 0, $result); } public function test_get_shouldReturnTheSumOfAllOnlyPageviews() { $this->trackPageviews([1, 10, 20, 348]); $result = $this->api->get($this->idSite, 'day', $this->date); $this->assertTotalBandwidthValue(379, 379, 0, $result); } public function test_get_shouldReturnTheSumOfAllOnlyDownloads() { $this->trackDownloads([1, 10, 20, 348]); $result = $this->api->get($this->idSite, 'day', $this->date); $this->assertTotalBandwidthValue(379, 0, 379, $result); } public function test_get_shouldReturnTheSumOfAll_MixedPageviewsAndDownloads() { $this->trackPageviews([1, 10, 20, 49]); $this->trackDownloads([59, 4, 1, 34, 592]); $result = $this->api->get($this->idSite, 'day', $this->date); $result->applyQueuedFilters(); $this->assertTotalBandwidthValue(770, 80, 690, $result); } public function test_get_shouldReturnTheSumOfAll_DifferentPeriod() { $this->trackPageviews([1, 10, 20, 49]); $this->trackDownloads([59, 4, 1, 34, 592]); $result = $this->api->get($this->idSite, 'month', $this->date); $result->applyQueuedFilters(); $this->assertTotalBandwidthValue(770, 80, 690, $result); } public function test_get_shouldReturnFalse_IfColumnShallNotBeDisplayed() { $this->trackPageviews([1, 10, 20, 49]); $this->trackDownloads([59, 4, 1, 34]); $result = $this->api->get($this->idSite, 'day', $this->date, false, 'nb_visits'); $result->applyQueuedFilters(); $this->assertTotalBandwidthValue(false, false, false, $result); } public function test_get_shouldReturnSomeColumns_IfValidOnesRequested() { $this->trackPageviews([1, 10, 20, 49]); $this->trackDownloads([59, 4, 1, 34]); $displayColumns = Metrics::COLUMN_TOTAL_DOWNLOAD_BANDWIDTH . ',' . Metrics::COLUMN_TOTAL_PAGEVIEW_BANDWIDTH; $result = $this->api->get($this->idSite, 'day', $this->date, false, $displayColumns); $result->applyQueuedFilters(); $this->assertTotalBandwidthValue(false, 80, 98, $result); } public function test_get_shouldFailIfUserHasNoPermission() { $this->expectException(\Exception::class); $this->expectExceptionMessage('checkUserHasViewAccess'); $this->setAnonymousUser(); $this->api->get($this->idSite, 'day', $this->date); } private function assertTotalBandwidthValue($expectedOverall, $expectedPageview, $expectedDownload, DataTable $dataTable) { $row = $dataTable->getFirstRow(); $this->assertSame($expectedOverall, $row->getColumn(Metrics::COLUMN_TOTAL_OVERALL_BANDWIDTH)); $this->assertSame($expectedPageview, $row->getColumn(Metrics::COLUMN_TOTAL_PAGEVIEW_BANDWIDTH)); $this->assertSame($expectedDownload, $row->getColumn(Metrics::COLUMN_TOTAL_DOWNLOAD_BANDWIDTH)); } }