NelmioApiDocBundle/Tests/Parser/JsonSerializableParserTest.php

109 lines
3.1 KiB
PHP
Raw Normal View History

<?php
2015-11-10 01:27:09 +01:00
/*
* 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.
*/
namespace NelmioApiDocBundle\Tests\Parser;
use Nelmio\ApiDocBundle\Parser\JsonSerializableParser;
use PHPUnit\Framework\TestCase;
class JsonSerializableParserTest extends TestCase
{
/**
* @var JsonSerializableParser
*/
private $parser;
2024-10-01 15:54:04 +03:00
protected function setUp(): void
{
$this->parser = new JsonSerializableParser();
}
/**
* @dataProvider dataTestParser
*/
2024-10-01 15:54:04 +03:00
public function testParser($property, $expected): void
{
2024-10-01 15:54:04 +03:00
$result = $this->parser->parse(['class' => 'Nelmio\ApiDocBundle\Tests\Fixtures\Model\JsonSerializableTest']);
foreach ($expected as $name => $value) {
$this->assertArrayHasKey($property, $result);
$this->assertArrayHasKey($name, $result[$property]);
$this->assertEquals($result[$property][$name], $expected[$name]);
}
}
/**
* @dataProvider dataTestSupports
*/
2024-10-01 15:54:04 +03:00
public function testSupports($class, $expected): void
{
2024-10-01 15:54:04 +03:00
$this->assertEquals($this->parser->supports(['class' => $class]), $expected);
}
public function dataTestParser()
{
2024-10-01 15:54:04 +03:00
return [
[
'property' => 'id',
2024-10-01 15:54:04 +03:00
'expected' => [
'dataType' => 'integer',
2024-10-01 15:54:04 +03:00
'default' => 123,
],
],
[
'property' => 'name',
2024-10-01 15:54:04 +03:00
'expected' => [
'dataType' => 'string',
2024-10-01 15:54:04 +03:00
'default' => 'My name',
],
],
[
'property' => 'child',
2024-10-01 15:54:04 +03:00
'expected' => [
'dataType' => 'object',
2024-10-01 15:54:04 +03:00
'children' => [
'value' => [
'dataType' => 'array',
'actualType' => 'array',
'subType' => null,
'required' => null,
'description' => null,
'readonly' => null,
'default' => null,
2024-10-01 15:54:04 +03:00
],
],
],
],
];
}
public function dataTestSupports()
{
2024-10-01 15:54:04 +03:00
return [
[
'class' => 'Nelmio\ApiDocBundle\Tests\Fixtures\Model\JsonSerializableTest',
2024-10-01 15:54:04 +03:00
'expected' => true,
],
[
'class' => 'Nelmio\ApiDocBundle\Tests\Fixtures\Model\JsonSerializableRequiredConstructorTest',
2024-10-01 15:54:04 +03:00
'expected' => false,
],
[
'class' => 'Nelmio\ApiDocBundle\Tests\Fixtures\Model\JsonSerializableOptionalConstructorTest',
2024-10-01 15:54:04 +03:00
'expected' => true,
],
[
'class' => 'Nelmio\ApiDocBundle\Tests\Fixtures\Model\Popo',
2024-10-01 15:54:04 +03:00
'expected' => false,
],
];
}
}