mirror of
https://github.com/retailcrm/NelmioApiDocBundle.git
synced 2025-02-02 15:51:48 +03:00
108 lines
3.7 KiB
PHP
108 lines
3.7 KiB
PHP
<?php
|
|
|
|
|
|
namespace Nelmio\ApiDocBundle\Tests\Extractor;
|
|
|
|
class CollectionDirectiveTest extends \PHPUnit_Framework_TestCase
|
|
{
|
|
/**
|
|
* @var TestExtractor
|
|
*/
|
|
private $testExtractor;
|
|
|
|
public function setUp()
|
|
{
|
|
$this->testExtractor = new TestExtractor();
|
|
}
|
|
|
|
private function normalize($input)
|
|
{
|
|
return $this->testExtractor->getNormalization($input);
|
|
}
|
|
|
|
/**
|
|
* @dataProvider dataNormalizationTests
|
|
*/
|
|
public function testNormalizations($input, callable $callable)
|
|
{
|
|
call_user_func($callable, $this->normalize($input), $this);
|
|
}
|
|
|
|
public function dataNormalizationTests()
|
|
{
|
|
return array(
|
|
'test_simple_notation' => array(
|
|
'array<User>',
|
|
function ($actual, \PHPUnit_Framework_TestCase $case) {
|
|
$case->assertArrayHasKey('collection', $actual);
|
|
$case->assertArrayHasKey('collectionName', $actual);
|
|
$case->assertArrayHasKey('class', $actual);
|
|
|
|
$case->assertTrue($actual['collection']);
|
|
$case->assertEquals('', $actual['collectionName']);
|
|
$case->assertEquals('User', $actual['class']);
|
|
}
|
|
),
|
|
'test_simple_notation_with_namespaces' => array(
|
|
'array<Vendor0_2\\_Namespace1\\Namespace_2\\User>',
|
|
function ($actual, \PHPUnit_Framework_TestCase $case) {
|
|
$case->assertArrayHasKey('collection', $actual);
|
|
$case->assertArrayHasKey('collectionName', $actual);
|
|
$case->assertArrayHasKey('class', $actual);
|
|
|
|
$case->assertTrue($actual['collection']);
|
|
$case->assertEquals('', $actual['collectionName']);
|
|
$case->assertEquals('Vendor0_2\\_Namespace1\\Namespace_2\\User', $actual['class']);
|
|
}
|
|
),
|
|
'test_simple_named_collections' => array(
|
|
'array<Group> as groups',
|
|
function ($actual, \PHPUnit_Framework_TestCase $case) {
|
|
$case->assertArrayHasKey('collection', $actual);
|
|
$case->assertArrayHasKey('collectionName', $actual);
|
|
$case->assertArrayHasKey('class', $actual);
|
|
|
|
$case->assertTrue($actual['collection']);
|
|
$case->assertEquals('groups', $actual['collectionName']);
|
|
$case->assertEquals('Group', $actual['class']);
|
|
}
|
|
),
|
|
'test_namespaced_named_collections' => array(
|
|
'array<_Vendor\\Namespace0\\Namespace_2F3\\Group> as groups',
|
|
function ($actual, \PHPUnit_Framework_TestCase $case) {
|
|
$case->assertArrayHasKey('collection', $actual);
|
|
$case->assertArrayHasKey('collectionName', $actual);
|
|
$case->assertArrayHasKey('class', $actual);
|
|
|
|
$case->assertTrue($actual['collection']);
|
|
$case->assertEquals('groups', $actual['collectionName']);
|
|
$case->assertEquals('_Vendor\\Namespace0\\Namespace_2F3\\Group', $actual['class']);
|
|
}
|
|
),
|
|
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @expectedException \InvalidArgumentException
|
|
* @dataProvider dataInvalidDirectives
|
|
* @param $input
|
|
*/
|
|
public function testInvalidDirectives($input)
|
|
{
|
|
$this->normalize($input);
|
|
}
|
|
|
|
public function dataInvalidDirectives()
|
|
{
|
|
return array(
|
|
array('array<>'),
|
|
array('array<Vendor\\>'),
|
|
array('array<2Vendor\\>'),
|
|
array('array<Vendor\\2Class>'),
|
|
array('array<User> as'),
|
|
array('array<User> as '),
|
|
);
|
|
}
|
|
}
|