diff options
author | d-skora <d.skora@clearcode.cc> | 2014-10-03 18:12:35 +0400 |
---|---|---|
committer | d-skora <d.skora@clearcode.cc> | 2014-10-15 14:44:36 +0400 |
commit | b8596f0b68f56b0890c61cd0c58e9c79420aff57 (patch) | |
tree | 3257effb57b4a3ad156468358e43e9f064dfd646 /tests/PHPUnit/Core | |
parent | 2d06c9a753b001a99c0b787e9735dc1e1de9ba87 (diff) |
hide annotation with tests
Diffstat (limited to 'tests/PHPUnit/Core')
-rw-r--r-- | tests/PHPUnit/Core/API/DocumentationGeneratorTest.php | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/tests/PHPUnit/Core/API/DocumentationGeneratorTest.php b/tests/PHPUnit/Core/API/DocumentationGeneratorTest.php new file mode 100644 index 0000000000..1179890171 --- /dev/null +++ b/tests/PHPUnit/Core/API/DocumentationGeneratorTest.php @@ -0,0 +1,195 @@ +<?php +/** + * Copyright (C) Piwik PRO - All rights reserved. + * + * Using this code requires that you first get a license from Piwik PRO. + * Unauthorized copying of this file, via any medium is strictly prohibited. + * + * @link http://piwik.pro + */ +use Piwik\API\DocumentationGenerator; +use Piwik\API\Proxy; +use Piwik\EventDispatcher; +/** + * @group CoreD + */ +class DocumentationGeneratorTest extends PHPUnit_Framework_TestCase +{ + public function testCheckIfModuleContainsHideAnnotation() + { + $annotation = '@hide ExceptForSuperUser test test'; + $mock = $this->getMockBuilder('ReflectionClass') + ->disableOriginalConstructor() + ->setMethods(array('getDocComment')) + ->getMock(); + $mock->expects($this->once())->method('getDocComment')->willReturn($annotation); + $documentationGenerator = new DocumentationGenerator(); + $this->assertTrue($documentationGenerator->checkIfClassCommentContainsHideAnnotation($mock)); + } + public function testCheckDocumentation() + { + $moduleToCheck = 'this is documentation which contains @hide ExceptForSuperUser'; + $documentationAfterCheck = 'this is documentation which contains '; + $documentationGenerator = new DocumentationGenerator(); + $this->assertEquals($documentationGenerator->checkDocumentation($moduleToCheck), $documentationAfterCheck); + } + public function testCheckIfMethodCommentContainsHideAnnotation() + { + $annotation = '@hide ForAll test test'; + $mock = $this->getMockBuilder('ReflectionMethod') + ->disableOriginalConstructor() + ->setMethods(array('getDocComment')) + ->getMock(); + $mock->expects($this->once())->method('getDocComment')->willReturn($annotation); + EventDispatcher::getInstance()->addObserver('API.DocumentationGenerator.hideForAll', + function (&$response) { + $response = true; + }); + $this->assertEquals(Proxy::getInstance()->checkIfMethodContainsHideAnnotation($mock), true); + } + public function testPrepareModuleToDisplay() + { + $moduleName = 'VisitTime'; + $moduleToDisplay = "<a href='#VisitTime'>VisitTime</a><br/>"; + $documentationGenerator = new DocumentationGenerator(); + $this->assertEquals($documentationGenerator->prepareModuleToDisplay($moduleName), $moduleToDisplay); + } + /** + * @dataProvider providerPrepareModulesAndMethods + */ + public function testPrepareModulesAndMethods($toDisplay, $actualModulesAndMethods) + { + $this->assertEquals($toDisplay, $actualModulesAndMethods); + } + public function providerPrepareModulesAndMethods() + { + $toDisplay = array( + 'VisitTime'=> + array( + 'getVisitInformationPerLocalTime', + 'getVisitInformationPerServerTime', + 'getByDayOfWeek' + ) + ); + $info = array( + 'getVisitInformationPerLocalTime' => array( + 'idSite', + 'period', + 'date' + ), + 'getVisitInformationPerServerTime' => array( + 'idSite', + 'period', + 'date' + ), + 'getByDayOfWeek' => array( + 'idSite', + 'period', + 'date' + ), + '__documentation' => + 'VisitTime API lets you access reports by Hour (Server time), and by Hour Local Time of your visitors.', + ); + $moduleName = 'VisitTime'; + $documentationGenerator = New DocumentationGenerator(); + $actualModulesAndMethods = $documentationGenerator->prepareModulesAndMethods($info, $moduleName); + return array( + array($toDisplay, $actualModulesAndMethods) + ); + } + /** + * @dataProvider providerPrepareMethodToDisplay + */ + public function testPrepareMethodToDisplay($elementShouldContainsInMethods, $methods) + { + $this->assertContains($elementShouldContainsInMethods, $methods); + } + public function providerPrepareMethodToDisplay() + { + $info = array( + 'sendFeedbackForFeature' => array( + 'featureName', + 'like', + ), + '__documentation' => 'API for plugin Feedback', + ); + $moduleName = 'Feedback'; + $methods = array( + 'sendFeedbackForFeature' + ); + $class = '\Piwik\Plugins\Feedback\API'; + $outputExampleUrls = true; + $prefixUrls = ''; + $firstElementToAssert = "<a name='Feedback' id='Feedback'></a><h2>Module Feedback</h2>" + ."<div class='apiDescription'> API for plugin Feedback </div>"; + $secondElementToAssert = "<div class='apiMethod'>- <b>Feedback.sendFeedbackForFeature </b>" + ."(featureName, like, message = '')" + ."<small><span class=\"example\"> [ No example available ]</span></small></div>"; + $documentationGenerator = new DocumentationGenerator(); + $preparedMethods = $documentationGenerator->prepareMethodToDisplay( + $moduleName, + $info, + $methods, + $class, + $outputExampleUrls, + $prefixUrls + ); + return array( + array($firstElementToAssert, $preparedMethods), + array($secondElementToAssert, $preparedMethods) + ); + } + /** + * @dataProvider providerAddExamples + */ + public function testAddExamples($example, $examples) + { + $this->assertContains($example, $examples); + } + public function providerAddExamples() + { + $class = '\Piwik\Plugins\VisitTime\API'; + $methodName = 'getVisitInformationPerLocalTime'; + $prefixUrls = ''; + $documentationGenerator = new DocumentationGenerator(); + $xmlExample = "<a target=_blank href='?module=API&method=VisitTime.getVisitInformationPerLocalTime" + ."&idSite=1&period=day&date=today&format=xml&token_auth='>XML</a>"; + $jsonExample = "<a target=_blank href='?module=API&method=VisitTime.getVisitInformationPerLocalTime" + ."&idSite=1&period=day&date=today&format=JSON&token_auth='>Json</a>"; + $excelElement = "<a target=_blank href='?module=API&method=VisitTime.getVisitInformationPerLocalTime" + ."&idSite=1&period=day&date=today&format=Tsv&token_auth=&translateColumnNames=1'>Tsv (Excel)</a>"; + $rss = "RSS of the last <a target=_blank href='?module=API&method=VisitTime.getVisitInformationPerLocalTime" + ."&idSite=1&period=day&date=last10&format=rss&token_auth=&translateColumnNames=1'>10 days</a>"; + $examples = $documentationGenerator->addExamples($class, $methodName, $prefixUrls); + return array( + array($xmlExample, $examples), + array($jsonExample, $examples), + array($excelElement, $examples), + array($rss, $examples) + ); + } + public function testGetExampleUrl() + { + $class = '\Piwik\Plugins\VisitTime\API'; + $methodName = 'getVisitInformationPerLocalTime'; + $parametersToSet = array( + 'idSite' => 1, + 'period' => 'day', + 'date' => 'yesterday' + ); + $expectedExampleUrl = + '?module=API&method=VisitTime.getVisitInformationPerLocalTime&idSite=1&period=day&date=yesterday'; + $documentationGenerator = new DocumentationGenerator(); + $this->assertEquals( + $expectedExampleUrl, + $documentationGenerator->getExampleUrl($class, $methodName, $parametersToSet)); + } + public function testGetParametersString() + { + $class = '\Piwik\Plugins\VisitTime\API'; + $name = 'getVisitInformationPerLocalTime'; + $parameters = "(idSite, period, date, segment = '')"; + $documentationGenerator = new DocumentationGenerator(); + $this->assertEquals($parameters, $documentationGenerator->getParametersString($class, $name)); + } +}
\ No newline at end of file |