Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authord-skora <d.skora@clearcode.cc>2014-10-03 18:12:35 +0400
committerd-skora <d.skora@clearcode.cc>2014-10-15 14:44:36 +0400
commitb8596f0b68f56b0890c61cd0c58e9c79420aff57 (patch)
tree3257effb57b4a3ad156468358e43e9f064dfd646 /tests/PHPUnit/Core
parent2d06c9a753b001a99c0b787e9735dc1e1de9ba87 (diff)
hide annotation with tests
Diffstat (limited to 'tests/PHPUnit/Core')
-rw-r--r--tests/PHPUnit/Core/API/DocumentationGeneratorTest.php195
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