diff options
Diffstat (limited to 'plugins/BulkTracking/tests/Unit/ResponseTest.php')
-rw-r--r-- | plugins/BulkTracking/tests/Unit/ResponseTest.php | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/plugins/BulkTracking/tests/Unit/ResponseTest.php b/plugins/BulkTracking/tests/Unit/ResponseTest.php new file mode 100644 index 0000000000..9da1e9a6b3 --- /dev/null +++ b/plugins/BulkTracking/tests/Unit/ResponseTest.php @@ -0,0 +1,93 @@ +<?php +/** + * Piwik - free/libre analytics platform + * + * @link http://piwik.org + * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later + */ + +namespace Piwik\Plugins\BulkTracking\tests\Unit; + +use Piwik\Plugins\BulkTracking\Tracker\Response; +use Piwik\Tests\Framework\Mock\Tracker; +use Piwik\Tests\Framework\TestCase\UnitTestCase; +use Exception; + +class TestResponse extends Response { + + protected function logExceptionToErrorLog(Exception $e) + { + // prevent console from outputting the error_log message + } +} + +/** + * @group BulkTracking + * @group ResponseTest + * @group Plugins + */ +class ResponseTest extends UnitTestCase +{ + /** + * @var TestResponse + */ + private $response; + + public function setUp() + { + parent::setUp(); + + $this->response = new TestResponse(); + $this->response->init(new Tracker()); + } + + public function test_outputException_shouldOutputBulkResponse() + { + $tracker = $this->getTrackerWithCountedRequests(); + + $this->response->outputException($tracker, new Exception('My Custom Message'), 400); + $content = $this->response->getOutput(); + + $this->assertEquals('{"status":"error","tracked":5}', $content); + } + + public function test_outputException_shouldOutputDebugMessageIfEnabled() + { + $tracker = $this->getTrackerWithCountedRequests(); + $tracker->enableDebugMode(); + + $this->response->outputException($tracker, new Exception('My Custom Message'), 400); + $content = $this->response->getOutput(); + + $this->assertStringStartsWith('{"status":"error","tracked":5,"message":"My Custom Message\n', $content); + } + + public function test_outputResponse_shouldOutputBulkResponse() + { + $tracker = $this->getTrackerWithCountedRequests(); + + $this->response->outputResponse($tracker); + $content = $this->response->getOutput(); + + $this->assertEquals('{"status":"success","tracked":5}', $content); + } + + public function test_outputResponse_shouldNotOutputAnything_IfExceptionResponseAlreadySent() + { + $tracker = $this->getTrackerWithCountedRequests(); + + $this->response->outputException($tracker, new Exception('My Custom Message'), 400); + $this->response->outputResponse($tracker); + $content = $this->response->getOutput(); + + $this->assertEquals('{"status":"error","tracked":5}', $content); + } + + private function getTrackerWithCountedRequests() + { + $tracker = new Tracker(); + $tracker->setCountOfLoggedRequests(5); + return $tracker; + } + +} |