Commit ee1dbf47 authored by Guillaume Perréal's avatar Guillaume Perréal
Browse files

test: ajoute des tests pour les méthodes personnalisés avec DTO.

Showing with 257 additions and 0 deletions
+257 -0
<?php declare(strict_types=1);
/*
* This file is part of "irstea/ng-model-generator-bundle".
*
* "irstea/ng-model-generator-bundle" generates Typescript interfaces for Angular using api-platform metadata.
* Copyright (C) 2018-2019 IRSTEA
*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License and the GNU
* Lesser General Public License along with this program. If not, see
* <https://www.gnu.org/licenses/>.
*/
namespace Irstea\NgModelGeneratorBundle\Tests\Fixtures\Controller;
use Irstea\NgModelGeneratorBundle\Tests\Fixtures\ValueObject\InputDTO;
use Irstea\NgModelGeneratorBundle\Tests\Fixtures\ValueObject\OutputDTO;
/**
* Class CustomController.
*/
final class CustomController
{
/**
* @param InputDTO $input
*
* @return OutputDTO
*/
public function customItem(InputDTO $input): OutputDTO
{
return new OutputDTO();
}
/**
* @param InputDTO[] $inputs
*
* @return OutputDTO[]
*/
public function customCollection(array $inputs): array
{
return [];
}
}
<?php declare(strict_types=1);
/*
* This file is part of "irstea/ng-model-generator-bundle".
*
* "irstea/ng-model-generator-bundle" generates Typescript interfaces for Angular using api-platform metadata.
* Copyright (C) 2018-2019 IRSTEA
*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License and the GNU
* Lesser General Public License along with this program. If not, see
* <https://www.gnu.org/licenses/>.
*/
namespace Irstea\NgModelGeneratorBundle\Tests\Fixtures\Entity;
use ApiPlatform\Core\Annotation as API;
use Irstea\NgModelGeneratorBundle\Tests\Fixtures\ValueObject\InputDTO;
use Irstea\NgModelGeneratorBundle\Tests\Fixtures\ValueObject\OutputDTO;
use Ramsey\Uuid\Uuid;
use Ramsey\Uuid\UuidInterface;
/**
* Class EntityWithCustomMethods.
*
* @API\ApiResource(
* itemOperations={
* "get",
* "custom": {
* "method": "PUT",
* "input": InputDTO::class,
* "output": OutputDTO::class,
* "controller": "Irstea\NgModelGeneratorBundle\Tests\Fixtures\Controller\CustomController::customItem",
* }
* },
* collectionOperations={
* "custom": {
* "method": "POST",
* "input": InputDTO::class,
* "output": OutputDTO::class,
* "controller": "Irstea\NgModelGeneratorBundle\Tests\Fixtures\Controller\CustomController::customCollection",
* }
* }
* )
*/
class EntityWithCustomMethods
{
/**
* @var UuidInterface
* @API\ApiProperty(identifier=true)
*/
private $id;
public function __construct()
{
$this->id = Uuid::uuid4();
}
/**
* Get id.
*
* @return UuidInterface
*/
public function getId(): UuidInterface
{
return $this->id;
}
}
<?php declare(strict_types=1);
/*
* This file is part of "irstea/ng-model-generator-bundle".
*
* "irstea/ng-model-generator-bundle" generates Typescript interfaces for Angular using api-platform metadata.
* Copyright (C) 2018-2019 IRSTEA
*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License and the GNU
* Lesser General Public License along with this program. If not, see
* <https://www.gnu.org/licenses/>.
*/
namespace Irstea\NgModelGeneratorBundle\Tests\Fixtures\ValueObject;
/**
* Class InputDTO.
*/
final class InputDTO
{
/** @var int[] */
public $values;
}
<?php declare(strict_types=1);
/*
* This file is part of "irstea/ng-model-generator-bundle".
*
* "irstea/ng-model-generator-bundle" generates Typescript interfaces for Angular using api-platform metadata.
* Copyright (C) 2018-2019 IRSTEA
*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License and the GNU
* Lesser General Public License along with this program. If not, see
* <https://www.gnu.org/licenses/>.
*/
namespace Irstea\NgModelGeneratorBundle\Tests\Fixtures\ValueObject;
/**
* Class OutputDTO.
*/
final class OutputDTO
{
/** @var bool */
public $success;
/** @var string[] */
public $results;
}
<?php declare(strict_types=1);
/*
* This file is part of "irstea/ng-model-generator-bundle".
*
* "irstea/ng-model-generator-bundle" generates Typescript interfaces for Angular using api-platform metadata.
* Copyright (C) 2018-2019 IRSTEA
*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License and the GNU
* Lesser General Public License along with this program. If not, see
* <https://www.gnu.org/licenses/>.
*/
namespace Irstea\NgModelGeneratorBundle\Tests\Functional;
/**
* Class CustomMethodTest.
*/
final class CustomMethodTest extends GenerationTestCase
{
/**
* @param string $snippet
* @param string $code
*
* @test
* @dataProvider listExpectedSnippets
*/
public function checkCodeSnippet(string $snippet): void
{
self::assertCodeContains($snippet, self::generateTypescript());
}
/**
* @return array
*/
public function listExpectedSnippets(): array
{
return [
'CustomInputDTO' => [
<<<'TYPESCRIPT'
export interface CustomInputDTO {
values: Array<number>;
}
TYPESCRIPT
],
'OutputDTO' => [
<<<'TYPESCRIPT'
export interface OutputDTO {
results: Array<string>;
success: boolean;
}
TYPESCRIPT
],
'CustomItemMethod' => ['public custom(iri: IRI<EntityWithCustomMethods>, body: CustomInputDTO, options: RequestOptions = {}): Observable<OutputDTO> {'],
'CustomCollectionMethod' => ['public customs(body: Array<CustomInputDTO>, options: RequestOptions = {}): Observable<Collection<OutputDTO>> {'],
];
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment