Skip to content

Commit

Permalink
test: priority test
Browse files Browse the repository at this point in the history
  • Loading branch information
soyuka committed Mar 7, 2024
1 parent 1c2509f commit 0fb2048
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 0 deletions.
36 changes: 36 additions & 0 deletions src/Metadata/Tests/OperationsTest.php
@@ -0,0 +1,36 @@
<?php

/*
* This file is part of the API Platform project.
*
* (c) Kévin Dunglas <dunglas@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

declare(strict_types=1);

namespace ApiPlatform\Metadata\Tests;

use ApiPlatform\Metadata\Get;
use ApiPlatform\Metadata\Operations;
use PHPUnit\Framework\TestCase;

final class OperationsTest extends TestCase
{
public function testOperationsHaveNameIfNotSet(): void
{
$operations = new Operations([new Get(name: 'a'), new Get(name: 'b')]);

foreach ($operations as $name => $operation) {
$this->assertEquals($name, $operation->getName());
}
}

public function testOperationAreSorted(): void
{
$operations = new Operations(['a' => new Get(priority: 0), 'b' => new Get(priority: -1)]);
$this->assertEquals(['b', 'a'], array_keys(iterator_to_array($operations)));
}
}
33 changes: 33 additions & 0 deletions tests/Fixtures/TestBundle/ApiResource/OperationPriorities.php
@@ -0,0 +1,33 @@
<?php

/*
* This file is part of the API Platform project.
*
* (c) Kévin Dunglas <dunglas@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

declare(strict_types=1);

namespace ApiPlatform\Tests\Fixtures\TestBundle\ApiResource;

use ApiPlatform\Metadata\Get;

#[Get(name: 'a', priority: 1, uriTemplate: 'operation_priority/{id}', provider: [self::class, 'shouldNotBeCalled'])]
#[Get(name: 'b', priority: -1, uriTemplate: 'operation_priority/{id}', provider: [self::class, 'shouldBeCalled'])]
class OperationPriorities
{
public int $id = 1;

public static function shouldBeCalled(): self
{
return new self();
}

public static function shouldNotBeCalled(): self
{
throw new \Exception('fail');
}
}
10 changes: 10 additions & 0 deletions tests/Symfony/Bundle/Test/ApiTestCaseTest.php
Expand Up @@ -267,6 +267,16 @@ public function testFindIriBy(): void
$this->assertNull(self::findIriBy($resource, ['name' => 'not-exist']));
}

public function testGetPrioritizedOperation(): void
{
$r = self::createClient()->request('GET', '/operation_priority/1', [
'headers' => [
'accept' => 'application/ld+json',
],
]);
$this->assertResponseIsSuccessful();
}

/**
* @group mercure
*/
Expand Down

0 comments on commit 0fb2048

Please sign in to comment.