File size: 4,175 Bytes
2ec30d2 | 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 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | <?php
/**
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
namespace Piwik\Plugins\Bandwidth\tests\Integration;
use Piwik\DataTable;
use Piwik\Plugins\Bandwidth\API;
use Piwik\Plugins\Bandwidth\Metrics;
use Piwik\Plugins\Bandwidth\tests\Framework\TestCase\IntegrationTestCase;
/**
* @group Bandwidth
* @group APITest
* @group Plugins
*/
class APITest extends IntegrationTestCase
{
/**
* @var API
*/
private $api;
protected $date = '2014-04-04';
private $idSite = 1;
public function setUp(): void
{
parent::setUp();
$this->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));
}
}
|