Skip to content

Commit

Permalink
test coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
gabplch committed May 7, 2024
1 parent 4cd8de3 commit 25a8e35
Show file tree
Hide file tree
Showing 3 changed files with 106 additions and 0 deletions.
22 changes: 22 additions & 0 deletions Tests/Request/Filter/DummyFilterExtractor.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

declare(strict_types=1);

namespace StfalconStudio\ApiBundle\Tests\Request\Filter;

use StfalconStudio\ApiBundle\Request\Filter\FilterExtractorInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;

class DummyFilterExtractor implements FilterExtractorInterface
{
public function extractFilterFromRequest(Request $request): DummyFilterModel
{
return new DummyFilterModel('foo');
}

public function supports(Request $request, ArgumentMetadata $argument): bool
{
return DummyFilterModel::class === $argument->getType();
}
}
19 changes: 19 additions & 0 deletions Tests/Request/Filter/DummyFilterModel.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php

declare(strict_types=1);

namespace StfalconStudio\ApiBundle\Tests\Request\Filter;

use StfalconStudio\ApiBundle\Request\Filter\FilterInterface;

class DummyFilterModel implements FilterInterface
{
public function __construct(private readonly string $foo)
{
}

public function getFoo()
{
return $this->foo;
}
}
65 changes: 65 additions & 0 deletions Tests/Request/ValueResolver/FilterValueResolverTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
<?php

declare(strict_types=1);

namespace StfalconStudio\ApiBundle\Tests\Request\ValueResolver;

use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
use StfalconStudio\ApiBundle\Request\ValueResolver\FilterValueResolver;
use StfalconStudio\ApiBundle\Tests\Request\Filter\DummyFilterExtractor;
use StfalconStudio\ApiBundle\Tests\Request\Filter\DummyFilterModel;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;

class FilterValueResolverTest extends TestCase
{
private FilterValueResolver $filterValueResolver;

protected function setUp(): void
{
parent::setUp();

$this->argument = self::createMock(ArgumentMetadata::class);

$filterValueResolver = new FilterValueResolver([new DummyFilterExtractor()]);

$this->filterValueResolver = $filterValueResolver;
}

public function testFilterExtractorFound(): void
{
/** @var Request|MockObject $request */
$request = self::createMock(Request::class);
/** @var ArgumentMetadata|MockObject $request */
$argument = self::createMock(ArgumentMetadata::class);

$argument
->method('getType')
->willReturn(DummyFilterModel::class);

foreach ($this->filterValueResolver->resolve($request, $argument) as $item) {
self::assertInstanceOf(DummyFilterModel::class, $item);
self::assertSame('foo', $item->getFoo());
}
}

public function testFilterExtractorNotFound(): void
{
/** @var Request|MockObject $request */
$request = self::createMock(Request::class);
/** @var ArgumentMetadata|MockObject $request */
$argument = self::createMock(ArgumentMetadata::class);

$argument
->method('getType')
->willReturn('Foo\\Bar');

$numberOfFoundModels = 0;
foreach ($this->filterValueResolver->resolve($request, $argument) as $item) {
++$numberOfFoundModels;
}

self::assertEquals(0, $numberOfFoundModels);
}
}

0 comments on commit 25a8e35

Please sign in to comment.