tracker = new TestIntegrationTracker(); Fixture::createWebsite('2014-01-01 00:00:00'); Fixture::createWebsite('2014-01-01 00:00:00'); $this->injectRawDataToBulk($this->getDummyRequest()); } public function test_main_shouldIncreaseLoggedRequestsCounter() { $this->tracker->main($this->getHandler(), $this->getEmptyRequestSet()); $this->assertSame(2, $this->tracker->getCountOfLoggedRequests()); } public function test_main_shouldUseBulkHandler() { $handler = $this->getHandler(); $this->assertTrue($handler instanceof Handler); } public function test_main_shouldReturnBulkTrackingResponse() { $response = $this->tracker->main($this->getHandler(), $this->getEmptyRequestSet()); $this->assertSame('{"status":"success","tracked":2,"invalid":0}', $response); } public function test_main_shouldReturnErrorResponse_InCaseOfAnyError() { $requestSet = new RequestSet(); $requestSet->enableThrowExceptionOnInit(); $handler = $this->getHandler(); $handler->setResponse(new Response()); $response = $this->tracker->main($handler, $requestSet); $this->assertSame('{"status":"error","tracked":0,"invalid":0}', $response); } public function test_main_shouldReturnErrorResponse_IfNotAuthorized() { $this->injectRawDataToBulk($this->getDummyRequest(), true); $handler = $this->getHandler(); $handler->setResponse(new Response()); $response = $this->tracker->main($handler, $this->getEmptyRequestSet()); $this->assertSame('{"status":"error","tracked":0,"invalid":0}', $response); } public function test_main_shouldActuallyTrack() { $this->assertEmpty($this->getIdVisit(1)); $this->assertEmpty($this->getIdVisit(2)); $requestSet = $this->getEmptyRequestSet(); $this->tracker->main($this->getHandler(), $requestSet); $this->assertCount(2, $requestSet->getRequests(), 'Nothing tracked because it could not find 2 requests'); $visit1 = $this->getIdVisit(1); $visit2 = $this->getIdVisit(2); $this->assertNotEmpty($visit1); $this->assertEquals(1, $visit1['idsite']); $this->assertNotEmpty($visit2); $this->assertEquals(2, $visit2['idsite']); $this->assertEmpty($this->getIdVisit(3)); } private function getHandler() { return Tracker\Handler\Factory::make(); } private function getEmptyRequestSet() { return new Tracker\RequestSet(); } private function getIdVisit($idVisit) { return Tracker::getDatabase()->fetchRow("SELECT * FROM " . Common::prefixTable('log_visit') . " WHERE idvisit = ?", array($idVisit)); } }