NelmioApiDocBundle/Tests/Formatter/SimpleFormatterTest.php

579 lines
22 KiB
PHP
Raw Normal View History

2012-04-13 14:11:54 +02:00
<?php
/*
* This file is part of the NelmioApiDocBundle.
*
* (c) Nelmio <hello@nelm.io>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
2012-04-13 14:22:07 +02:00
namespace Nelmio\ApiDocBundle\Tests\Formatter;
use Nelmio\ApiDocBundle\Tests\WebTestCase;
2012-04-13 14:11:54 +02:00
class SimpleFormatterTest extends WebTestCase
{
public function testFormat()
{
$container = $this->getContainer();
$extractor = $container->get('nelmio_api_doc.extractor.api_doc_extractor');
2013-02-15 13:33:05 +01:00
set_error_handler(array($this, 'handleDeprecation'));
2012-04-13 15:00:46 +02:00
$data = $extractor->all();
restore_error_handler();
2012-04-13 15:00:46 +02:00
$result = $container->get('nelmio_api_doc.formatter.simple_formatter')->format($data);
2012-04-13 14:11:54 +02:00
$expected = array (
'/tests' =>
array (
0 =>
array (
'method' => 'GET',
'uri' => '/tests.{_format}',
'description' => 'index action',
'filters' =>
array (
'a' =>
array (
'dataType' => 'integer',
),
'b' =>
array (
'dataType' => 'string',
'arbitrary' =>
array (
0 => 'arg1',
1 => 'arg2',
),
),
),
'requirements' =>
array (
'_format' =>
array (
'requirement' => '',
'dataType' => '',
'description' => '',
),
),
'https' => false,
'authentication' => false,
2013-03-18 08:40:03 +01:00
'deprecated' => false,
),
1 =>
array (
2012-04-13 14:11:54 +02:00
'method' => 'GET',
'uri' => '/tests.{_format}',
'description' => 'index action',
'filters' =>
array (
'a' =>
array (
2012-04-13 14:11:54 +02:00
'dataType' => 'integer',
),
'b' =>
array (
2012-04-13 14:11:54 +02:00
'dataType' => 'string',
'arbitrary' =>
array (
0 => 'arg1',
1 => 'arg2',
2012-04-13 14:11:54 +02:00
),
),
),
'requirements' =>
array (
'_format' =>
array (
'requirement' => '',
'dataType' => '',
'description' => '',
),
),
'https' => false,
'authentication' => false,
2013-03-18 08:40:03 +01:00
'deprecated' => false,
2012-04-13 14:11:54 +02:00
),
2 =>
array (
'method' => 'POST',
'uri' => '/tests.{_format}',
2013-04-11 22:03:40 +02:00
'host' => 'api.test.dev',
'description' => 'create test',
'parameters' =>
array (
'a' =>
array (
'dataType' => 'string',
'required' => true,
'description' => 'A nice description',
'readonly' => false,
),
'b' =>
array (
'dataType' => 'string',
2012-06-20 23:19:34 +02:00
'required' => false,
'description' => '',
'readonly' => false,
),
'c' =>
array (
'dataType' => 'boolean',
'required' => true,
'description' => '',
'readonly' => false,
),
),
'requirements' =>
array (
'_format' =>
array (
'requirement' => '',
'dataType' => '',
'description' => '',
),
),
'https' => false,
'authentication' => false,
2013-03-18 08:40:03 +01:00
'deprecated' => false,
),
3 =>
array (
2012-04-13 14:11:54 +02:00
'method' => 'POST',
'uri' => '/tests.{_format}',
2013-04-11 22:03:40 +02:00
'host' => 'api.test.dev',
'description' => 'create test',
'parameters' =>
array (
'a' =>
array (
2012-04-13 14:11:54 +02:00
'dataType' => 'string',
'required' => true,
2012-04-13 14:20:12 +02:00
'description' => 'A nice description',
'readonly' => false,
2012-04-13 14:11:54 +02:00
),
'b' =>
array (
2012-04-13 14:11:54 +02:00
'dataType' => 'string',
2012-06-20 23:19:34 +02:00
'required' => false,
2012-04-13 14:20:12 +02:00
'description' => '',
'readonly' => false,
2012-04-13 14:11:54 +02:00
),
'c' =>
array (
'dataType' => 'boolean',
'required' => true,
'description' => '',
'readonly' => false,
),
2012-04-13 14:11:54 +02:00
),
'requirements' =>
array (
'_format' =>
array (
'requirement' => '',
'dataType' => '',
'description' => '',
),
),
'https' => false,
'authentication' => false,
2013-03-18 08:40:03 +01:00
'deprecated' => false,
2012-04-13 14:11:54 +02:00
),
),
'others' =>
array (
0 =>
array (
'method' => 'POST',
'uri' => '/another-post',
'description' => 'create another test',
'parameters' =>
array (
'a' =>
array (
'dataType' => 'string',
'required' => true,
'description' => 'A nice description',
'readonly' => false,
),
),
'https' => false,
'authentication' => false,
2013-03-18 08:40:03 +01:00
'deprecated' => false,
),
1 =>
array (
'method' => 'ANY',
'uri' => '/any',
'description' => 'Action without HTTP verb',
'https' => false,
'authentication' => false,
2013-03-18 08:40:03 +01:00
'deprecated' => false,
),
2 =>
array (
'method' => 'ANY',
'uri' => '/any/{foo}',
'description' => 'Action without HTTP verb',
'requirements' =>
array (
'foo' =>
array (
'requirement' => '',
'dataType' => '',
'description' => '',
),
),
'https' => false,
'authentication' => false,
2013-03-18 08:40:03 +01:00
'deprecated' => false,
),
3 =>
array (
'method' => 'ANY',
'uri' => '/authenticated',
'https' => false,
'authentication' => true,
2013-03-18 08:40:03 +01:00
'deprecated' => false,
),
4 =>
array(
'method' => 'POST',
'uri' => '/jms-input-test',
'description' => 'Testing JMS',
'parameters' =>
array (
'foo' =>
array (
'dataType' => 'string',
'required' => false,
'description' => 'No description.',
'readonly' => false,
),
'bar' =>
array (
'dataType' => 'DateTime',
'required' => false,
'description' => 'No description.',
'readonly' => true,
),
'number' =>
array (
'dataType' => 'double',
'required' => false,
'description' => 'No description.',
'readonly' => false,
),
'arr' =>
array (
'dataType' => 'array',
'required' => false,
'description' => 'No description.',
'readonly' => false,
),
'nested' =>
array (
'dataType' => 'object (JmsNested)',
'required' => false,
'description' => 'No description.',
'readonly' => false,
'children' =>
array (
'foo' =>
array (
'dataType' => 'DateTime',
'required' => false,
'description' => 'No description.',
'readonly' => true,
),
'bar' =>
array (
'dataType' => 'string',
'required' => false,
'description' => 'No description.',
'readonly' => false,
),
'baz' =>
array (
'dataType' => 'array of integers',
'required' => false,
'description' => 'Epic description.
With multiple lines.',
'readonly' => false,
),
'circular' =>
array (
'dataType' => 'object (JmsNested)',
'required' => false,
'description' => 'No description.',
'readonly' => false,
),
'parent' =>
array (
'dataType' => 'object (JmsTest)',
'required' => false,
'description' => 'No description.',
'readonly' => false,
'children' =>
array (
'foo' =>
array (
'dataType' => 'string',
'required' => false,
'description' => 'No description.',
'readonly' => false,
),
'bar' =>
array (
'dataType' => 'DateTime',
'required' => false,
'description' => 'No description.',
'readonly' => true,
),
'number' =>
array (
'dataType' => 'double',
'required' => false,
'description' => 'No description.',
'readonly' => false,
),
'arr' =>
array (
'dataType' => 'array',
'required' => false,
'description' => 'No description.',
'readonly' => false,
),
'nested' =>
array (
'dataType' => 'object (JmsNested)',
'required' => false,
'description' => 'No description.',
'readonly' => false,
),
2013-03-26 10:37:33 -07:00
'nested_array' =>
array (
'dataType' => 'array of objects (JmsNested)',
'required' => false,
'description' => 'No description.',
'readonly' => false,
),
),
),
),
),
2013-03-26 10:37:33 -07:00
'nested_array' =>
array (
'dataType' => 'array of objects (JmsNested)',
'required' => false,
'description' => 'No description.',
'readonly' => false,
),
),
'https' => false,
'authentication' => false,
2013-03-18 08:40:03 +01:00
'deprecated' => false,
),
5 =>
2012-08-27 12:56:19 -04:00
array(
'method' => 'GET',
'uri' => '/jms-return-test',
'description' => 'Testing return',
'response' =>
array (
'a' =>
array (
2012-08-27 13:25:03 -04:00
'dataType' => 'string',
'required' => true,
'description' => 'A nice description',
'readonly' => false,
),
),
'https' => false,
'authentication' => false,
2013-03-18 08:40:03 +01:00
'deprecated' => false,
2012-08-27 12:56:19 -04:00
),
6 =>
2012-04-19 17:05:59 +02:00
array(
'method' => 'ANY',
'uri' => '/my-commented/{id}/{page}',
'description' => 'This method is useful to test if the getDocComment works.',
'documentation' => 'This method is useful to test if the getDocComment works.
And, it supports multilines until the first \'@\' char.',
2012-04-19 17:05:59 +02:00
'requirements' =>
array (
'id' =>
array (
'dataType' => 'int',
'description' => 'A nice comment',
'requirement' => '',
),
'page' =>
array (
'dataType' => 'int',
'description' => '',
'requirement' => '',
),
2012-04-19 17:05:59 +02:00
),
'https' => false,
2012-07-13 16:04:29 +02:00
'description' => 'This method is useful to test if the getDocComment works.',
'documentation' => "This method is useful to test if the getDocComment works.\nAnd, it supports multilines until the first '@' char.",
'authentication' => false,
2013-03-18 08:40:03 +01:00
'deprecated' => false,
2012-04-19 17:05:59 +02:00
),
7 =>
array(
'method' => 'ANY',
'uri' => '/secure-route',
'requirements' =>
array (
'_scheme' =>
array (
'requirement' => 'https',
'dataType' => '',
'description' => '',
),
),
'https' => true,
'authentication' => false,
2013-03-18 08:40:03 +01:00
'deprecated' => false,
),
8 =>
array(
'method' => 'ANY',
'uri' => '/yet-another/{id}',
'requirements' =>
array (
'id' =>
array (
'requirement' => '\\d+',
'dataType' => '',
'description' => '',
),
),
'https' => false,
'authentication' => false,
2013-03-18 08:40:03 +01:00
'deprecated' => false,
),
9 =>
array(
'method' => 'GET',
'uri' => '/z-action-with-query-param',
'filters' =>
array (
'page' =>
array (
'requirement' => '\\d+',
'description' => 'Page of the overview.',
),
),
'https' => false,
'authentication' => false,
2013-03-18 08:40:03 +01:00
'deprecated' => false,
),
10 =>
array(
'method' => 'POST',
'uri' => '/z-action-with-request-param',
'parameters' =>
array (
'param1' =>
array (
'required' => true,
'dataType' => 'string',
'description' => 'Param1 description.',
'readonly' => false,
),
),
'https' => false,
'authentication' => false,
2013-03-18 08:40:03 +01:00
'deprecated' => false,
),
),
2013-03-21 12:15:44 +01:00
'/tests2' =>
array (
0 =>
array (
'method' => 'POST',
'uri' => '/tests2.{_format}',
'description' => 'post test 2',
'requirements' =>
array (
'_format' =>
array (
'requirement' => '',
'dataType' => '',
'description' => '',
),
),
'https' => false,
'authentication' => false,
2013-03-18 08:40:03 +01:00
'deprecated' => false,
),
),
'/tests2' =>
array (
0 =>
array (
'method' => 'POST',
'uri' => '/tests2.{_format}',
'description' => 'post test 2',
'requirements' =>
array (
'_format' =>
array (
'requirement' => '',
'dataType' => '',
'description' => '',
),
),
'https' => false,
'authentication' => false,
'deprecated' => false,
2013-03-21 12:15:44 +01:00
),
),
2012-04-13 14:11:54 +02:00
);
$this->assertEquals($expected, $result);
}
2012-04-13 15:00:46 +02:00
public function testFormatOne()
{
$container = $this->getContainer();
$extractor = $container->get('nelmio_api_doc.extractor.api_doc_extractor');
$annotation = $extractor->get('Nelmio\ApiDocBundle\Tests\Fixtures\Controller\TestController::indexAction', 'test_route_1');
$result = $container->get('nelmio_api_doc.formatter.simple_formatter')->formatOne($annotation);
2012-04-13 15:00:46 +02:00
$expected = array(
'method' => 'GET',
'uri' => '/tests.{_format}',
2012-04-13 15:00:46 +02:00
'filters' => array(
'a' => array(
'dataType' => 'integer',
),
'b' => array(
'dataType' => 'string',
'arbitrary' => array(
'arg1',
'arg2',
),
),
),
'description' => 'index action',
'requirements' => array(
2012-11-17 18:05:05 +01:00
'_format' => array('dataType' => '', 'description' => '', 'requirement' => ''),
),
'https' => false,
2012-12-26 12:23:28 +01:00
'authentication' => false,
2013-03-18 08:40:03 +01:00
'deprecated' => false,
2012-04-13 15:00:46 +02:00
);
$this->assertEquals($expected, $result);
}
2012-04-13 14:11:54 +02:00
}