requestSet = $this->buildNewRequestSetThatIsNotInitializedYet(); $this->requestSet->setRequests(array(array('idsite' => 1), array('idsite' => 2))); $this->get = $_GET; $this->post = $_POST; $this->time = time(); $_GET = array(); $_POST = array(); } public function tearDown(): void { $_GET = $this->get; $_POST = $this->post; parent::tearDown(); } public function testGetAllSiteIdsWithinRequestShouldReturnEmptyArrayIfNoRequestsSet() { $this->requestSet = $this->buildNewRequestSetThatIsNotInitializedYet(); $this->assertEquals(array(), $this->requestSet->getAllSiteIdsWithinRequest()); } public function testGetAllSiteIdsWithinRequestShouldReturnTheSiteIdsFromRequests() { $this->requestSet->setRequests($this->buildRequests(3)); $this->assertEquals(array(1, 2, 3), $this->requestSet->getAllSiteIdsWithinRequest()); } public function testGetAllSiteIdsWithinRequestShouldReturnUniqueSiteIdsUnordered() { $this->requestSet->setRequests(array( $this->buildRequest(1), $this->buildRequest(5), $this->buildRequest(1), $this->buildRequest(2), $this->buildRequest(2), $this->buildRequest(9), )); $this->assertEquals(array(1, 5, 2, 9), $this->requestSet->getAllSiteIdsWithinRequest()); } /** * @param int $numRequests * @return Request[] */ private function buildRequests($numRequests) { $requests = array(); for ($index = 1; $index <= $numRequests; $index++) { $requests[] = $this->buildRequest($index); } return $requests; } private function buildRequest($idsite) { $request = new Request(array('idsite' => ('' . $idsite))); $request->setCurrentTimestamp($this->time); return $request; } public function testInitRequestsAndTokenAuthShouldTriggerEventToInitRequestsButOnlyOnce() { $requestSet = $this->buildNewRequestSetThatIsNotInitializedYet(); $called = 0; $passedRequest = null; Piwik::addAction('Tracker.initRequestSet', function ($param) use (&$called, &$passedRequest) { $called++; $passedRequest = $param; }); $requestSet->initRequestsAndTokenAuth(); $this->assertSame(1, $called); $this->assertSame($requestSet, $passedRequest); $requestSet->initRequestsAndTokenAuth(); // should not be called again $this->assertSame(1, $called); } public function testInitRequestsAndTokednAuthShouldInitializeRequestsWithEmptyArray() { $requestSet = $this->buildNewRequestSetThatIsNotInitializedYet(); $requestSet->initRequestsAndTokenAuth(); $this->assertEquals(array(), $requestSet->getRequests()); } public function testInitRequestsAndTokednAuthShouldInitializeFromGetAndPostIfEventDoesNotHandleRequests() { $_GET = array('idsite' => 1); $_POST = array('c_i' => 'click'); Piwik::addAction('Tracker.initRequestSet', function (RequestSet $requestSet) { $requestSet->setRequests(array(array('idsite' => '2'), array('idsite' => '3'))); }); $requestSet = $this->buildNewRequestSetThatIsNotInitializedYet(); $requestSet->initRequestsAndTokenAuth(); $requests = $requestSet->getRequests(); $this->assertCount(2, $requests); $this->assertEquals(array('idsite' => '2'), $requests[0]->getParams()); $this->assertEquals(array('idsite' => '3'), $requests[1]->getParams()); } public function testInitRequestsAndTokednAuthShouldIgnoreGetAndPostIfInitializedByEvent() { $_GET = array('idsite' => '1'); $_POST = array('c_i' => 'click'); $requestSet = $this->buildNewRequestSetThatIsNotInitializedYet(); $requestSet->initRequestsAndTokenAuth(); $requests = $requestSet->getRequests(); $this->assertCount(1, $requests); $this->assertEquals(array('idsite' => 1, 'c_i' => 'click'), $requests[0]->getParams()); } private function buildNewRequestSetThatIsNotInitializedYet() { return new TestRequestSet(); } }