feature #28985 [Messenger] Move MiddlewareTestCase in Test ns (ogizanagi)
This PR was merged into the 4.2-dev branch.
Discussion
----------
[Messenger] Move MiddlewareTestCase in Test ns
| Q | A
| ------------- | ---
| Branch? | master <!-- see below -->
| Bug fix? | no
| New feature? | yes <!-- don't forget to update src/**/CHANGELOG.md files -->
| BC breaks? | no <!-- see https://symfony.com/bc -->
| Deprecations? | no <!-- don't forget to update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tests pass? | yes (AppVeyor failure unrelated) <!-- please add some, will be required by reviewers -->
| Fixed tickets | N/A <!-- #-prefixed issue number(s), if any -->
| License | MIT
| Doc PR | N/A
Just a quick suggestion after #28943 being merged. Wouldn't it make sense to move this in `Test` namespace to be used by anyone wanting to unit test their middleware?
Commits
-------
215c895a55
[Messenger] Move MiddlewareTestCase in Test ns
This commit is contained in:
commit
b6758e9614
@ -1,15 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Symfony\Bridge\Doctrine\Tests\Fixtures\Messenger;
|
||||
|
||||
use Symfony\Component\Messenger\Envelope;
|
||||
use Symfony\Component\Messenger\Middleware\MiddlewareInterface;
|
||||
use Symfony\Component\Messenger\Middleware\StackInterface;
|
||||
|
||||
class DummyMiddleware implements MiddlewareInterface
|
||||
{
|
||||
public function handle(Envelope $envelope, StackInterface $stack): Envelope
|
||||
{
|
||||
return $envelope;
|
||||
}
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Symfony\Bridge\Doctrine\Tests\Fixtures\Messenger;
|
||||
|
||||
use Symfony\Component\Messenger\Envelope;
|
||||
use Symfony\Component\Messenger\Middleware\MiddlewareInterface;
|
||||
use Symfony\Component\Messenger\Middleware\StackInterface;
|
||||
|
||||
class ThrowingMiddleware implements MiddlewareInterface
|
||||
{
|
||||
public function handle(Envelope $envelope, StackInterface $stack): Envelope
|
||||
{
|
||||
throw new \RuntimeException('Thrown from middleware.');
|
||||
}
|
||||
}
|
@ -14,19 +14,15 @@ namespace Symfony\Bridge\Doctrine\Tests\Messenger;
|
||||
use Doctrine\Common\Persistence\ManagerRegistry;
|
||||
use Doctrine\DBAL\Connection;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Bridge\Doctrine\Messenger\DoctrineTransactionMiddleware;
|
||||
use Symfony\Bridge\Doctrine\Tests\Fixtures\Messenger\DummyMiddleware;
|
||||
use Symfony\Bridge\Doctrine\Tests\Fixtures\Messenger\ThrowingMiddleware;
|
||||
use Symfony\Component\Messenger\Envelope;
|
||||
use Symfony\Component\Messenger\Middleware\StackInterface;
|
||||
use Symfony\Component\Messenger\Test\Middleware\MiddlewareTestCase;
|
||||
|
||||
class DoctrineTransactionMiddlewareTest extends TestCase
|
||||
class DoctrineTransactionMiddlewareTest extends MiddlewareTestCase
|
||||
{
|
||||
private $connection;
|
||||
private $entityManager;
|
||||
private $middleware;
|
||||
private $stack;
|
||||
|
||||
public function setUp()
|
||||
{
|
||||
@ -39,8 +35,6 @@ class DoctrineTransactionMiddlewareTest extends TestCase
|
||||
$managerRegistry->method('getManager')->willReturn($this->entityManager);
|
||||
|
||||
$this->middleware = new DoctrineTransactionMiddleware($managerRegistry, null);
|
||||
|
||||
$this->stack = $this->createMock(StackInterface::class);
|
||||
}
|
||||
|
||||
public function testMiddlewareWrapsInTransactionAndFlushes()
|
||||
@ -54,15 +48,14 @@ class DoctrineTransactionMiddlewareTest extends TestCase
|
||||
$this->entityManager->expects($this->once())
|
||||
->method('flush')
|
||||
;
|
||||
$this->stack
|
||||
->expects($this->once())
|
||||
->method('next')
|
||||
->willReturn(new DummyMiddleware())
|
||||
;
|
||||
|
||||
$this->middleware->handle(new Envelope(new \stdClass()), $this->stack);
|
||||
$this->middleware->handle(new Envelope(new \stdClass()), $this->getStackMock());
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \RuntimeException
|
||||
* @expectedExceptionMessage Thrown from next middleware.
|
||||
*/
|
||||
public function testTransactionIsRolledBackOnException()
|
||||
{
|
||||
$this->connection->expects($this->once())
|
||||
@ -71,14 +64,7 @@ class DoctrineTransactionMiddlewareTest extends TestCase
|
||||
$this->connection->expects($this->once())
|
||||
->method('rollBack')
|
||||
;
|
||||
$this->stack
|
||||
->expects($this->once())
|
||||
->method('next')
|
||||
->willReturn(new ThrowingMiddleware())
|
||||
;
|
||||
$this->expectException(\RuntimeException::class);
|
||||
$this->expectExceptionMessage('Thrown from middleware.');
|
||||
|
||||
$this->middleware->handle(new Envelope(new \stdClass()), $this->stack);
|
||||
$this->middleware->handle(new Envelope(new \stdClass()), $this->getThrowingStackMock());
|
||||
}
|
||||
}
|
||||
|
@ -9,12 +9,16 @@
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Symfony\Component\Messenger\Tests\Middleware;
|
||||
namespace Symfony\Component\Messenger\Test\Middleware;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use Symfony\Component\Messenger\Envelope;
|
||||
use Symfony\Component\Messenger\Middleware\MiddlewareInterface;
|
||||
use Symfony\Component\Messenger\Middleware\StackInterface;
|
||||
|
||||
/**
|
||||
* @author Nicolas Grekas <p@tchwork.com>
|
||||
*/
|
||||
abstract class MiddlewareTestCase extends TestCase
|
||||
{
|
||||
protected function getStackMock(bool $nextIsCalled = true)
|
||||
@ -23,9 +27,9 @@ abstract class MiddlewareTestCase extends TestCase
|
||||
$nextMiddleware
|
||||
->expects($nextIsCalled ? $this->once() : $this->never())
|
||||
->method('handle')
|
||||
->will($this->returnCallback(function ($envelope, StackInterface $stack) {
|
||||
->willReturnCallback(function (Envelope $envelope, StackInterface $stack): Envelope {
|
||||
return $envelope;
|
||||
}))
|
||||
})
|
||||
;
|
||||
|
||||
$stack = $this->createMock(StackInterface::class);
|
||||
@ -37,4 +41,23 @@ abstract class MiddlewareTestCase extends TestCase
|
||||
|
||||
return $stack;
|
||||
}
|
||||
|
||||
protected function getThrowingStackMock(\Throwable $throwable = null)
|
||||
{
|
||||
$nextMiddleware = $this->getMockBuilder(MiddlewareInterface::class)->getMock();
|
||||
$nextMiddleware
|
||||
->expects($this->once())
|
||||
->method('handle')
|
||||
->willThrowException($throwable ?? new \RuntimeException('Thrown from next middleware.'))
|
||||
;
|
||||
|
||||
$stack = $this->createMock(StackInterface::class);
|
||||
$stack
|
||||
->expects($this->once())
|
||||
->method('next')
|
||||
->willReturn($nextMiddleware)
|
||||
;
|
||||
|
||||
return $stack;
|
||||
}
|
||||
}
|
@ -14,7 +14,7 @@ namespace Symfony\Component\Messenger\Tests\Middleware;
|
||||
use Symfony\Component\Messenger\Envelope;
|
||||
use Symfony\Component\Messenger\Middleware\ActivationMiddleware;
|
||||
use Symfony\Component\Messenger\Middleware\MiddlewareInterface;
|
||||
use Symfony\Component\Messenger\Middleware\StackInterface;
|
||||
use Symfony\Component\Messenger\Test\Middleware\MiddlewareTestCase;
|
||||
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage;
|
||||
|
||||
/**
|
||||
@ -27,8 +27,7 @@ class ActivationMiddlewareTest extends MiddlewareTestCase
|
||||
$message = new DummyMessage('Hello');
|
||||
$envelope = new Envelope($message);
|
||||
|
||||
$stack = $this->createMock(StackInterface::class);
|
||||
$stack->expects($this->never())->method('next');
|
||||
$stack = $this->getStackMock(false);
|
||||
|
||||
$middleware = $this->createMock(MiddlewareInterface::class);
|
||||
$middleware->expects($this->once())->method('handle')->with($envelope, $stack)->willReturn($envelope);
|
||||
@ -46,8 +45,7 @@ class ActivationMiddlewareTest extends MiddlewareTestCase
|
||||
$activated = $this->createPartialMock(\stdClass::class, array('__invoke'));
|
||||
$activated->expects($this->once())->method('__invoke')->with($envelope)->willReturn(true);
|
||||
|
||||
$stack = $this->createMock(StackInterface::class);
|
||||
$stack->expects($this->never())->method('next');
|
||||
$stack = $this->getStackMock(false);
|
||||
|
||||
$middleware = $this->createMock(MiddlewareInterface::class);
|
||||
$middleware->expects($this->once())->method('handle')->with($envelope, $stack)->willReturn($envelope);
|
||||
|
@ -15,6 +15,7 @@ use Symfony\Component\Messenger\Envelope;
|
||||
use Symfony\Component\Messenger\Handler\Locator\HandlerLocator;
|
||||
use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware;
|
||||
use Symfony\Component\Messenger\Middleware\StackMiddleware;
|
||||
use Symfony\Component\Messenger\Test\Middleware\MiddlewareTestCase;
|
||||
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage;
|
||||
|
||||
class HandleMessageMiddlewareTest extends MiddlewareTestCase
|
||||
|
@ -14,7 +14,7 @@ namespace Symfony\Component\Messenger\Tests\Middleware;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Component\Messenger\Envelope;
|
||||
use Symfony\Component\Messenger\Middleware\LoggingMiddleware;
|
||||
use Symfony\Component\Messenger\Middleware\StackInterface;
|
||||
use Symfony\Component\Messenger\Test\Middleware\MiddlewareTestCase;
|
||||
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage;
|
||||
|
||||
class LoggingMiddlewareTest extends MiddlewareTestCase
|
||||
@ -34,7 +34,8 @@ class LoggingMiddlewareTest extends MiddlewareTestCase
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \Exception
|
||||
* @expectedException \RuntimeException
|
||||
* @expectedExceptionMessage Thrown from next middleware.
|
||||
*/
|
||||
public function testWarningLogOnException()
|
||||
{
|
||||
@ -50,12 +51,7 @@ class LoggingMiddlewareTest extends MiddlewareTestCase
|
||||
->expects($this->once())
|
||||
->method('warning')
|
||||
;
|
||||
$stack = $this->createMock(StackInterface::class);
|
||||
$stack
|
||||
->expects($this->once())
|
||||
->method('next')
|
||||
->willThrowException(new \Exception())
|
||||
;
|
||||
$stack = $this->getThrowingStackMock();
|
||||
|
||||
(new LoggingMiddleware($logger))->handle($envelope, $stack);
|
||||
}
|
||||
|
@ -12,9 +12,9 @@
|
||||
namespace Symfony\Component\Messenger\Tests\Middleware;
|
||||
|
||||
use Symfony\Component\Messenger\Envelope;
|
||||
use Symfony\Component\Messenger\Middleware\MiddlewareInterface;
|
||||
use Symfony\Component\Messenger\Middleware\SendMessageMiddleware;
|
||||
use Symfony\Component\Messenger\Stamp\ReceivedStamp;
|
||||
use Symfony\Component\Messenger\Test\Middleware\MiddlewareTestCase;
|
||||
use Symfony\Component\Messenger\Tests\Fixtures\ChildDummyMessage;
|
||||
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage;
|
||||
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessageInterface;
|
||||
@ -114,7 +114,6 @@ class SendMessageMiddlewareTest extends MiddlewareTestCase
|
||||
$envelope = new Envelope($message);
|
||||
|
||||
$middleware = new SendMessageMiddleware(new InMemorySenderLocator(null));
|
||||
$handler = $this->getMockBuilder(MiddlewareInterface::class)->getMock();
|
||||
|
||||
$middleware->handle($envelope, $this->getStackMock());
|
||||
}
|
||||
|
@ -15,6 +15,7 @@ use Symfony\Component\Messenger\Envelope;
|
||||
use Symfony\Component\Messenger\Middleware\MiddlewareInterface;
|
||||
use Symfony\Component\Messenger\Middleware\StackInterface;
|
||||
use Symfony\Component\Messenger\Middleware\TraceableMiddleware;
|
||||
use Symfony\Component\Messenger\Test\Middleware\MiddlewareTestCase;
|
||||
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage;
|
||||
use Symfony\Component\Stopwatch\Stopwatch;
|
||||
|
||||
@ -55,7 +56,7 @@ class TraceableMiddlewareTest extends MiddlewareTestCase
|
||||
|
||||
/**
|
||||
* @expectedException \RuntimeException
|
||||
* @expectedExceptionMessage Foo exception from next callable
|
||||
* @expectedExceptionMessage Thrown from next middleware.
|
||||
*/
|
||||
public function testHandleWithException()
|
||||
{
|
||||
@ -71,12 +72,7 @@ class TraceableMiddlewareTest extends MiddlewareTestCase
|
||||
}))
|
||||
;
|
||||
|
||||
$stack = $this->createMock(StackInterface::class);
|
||||
$stack
|
||||
->expects($this->once())
|
||||
->method('next')
|
||||
->willThrowException(new \RuntimeException('Foo exception from next callable'))
|
||||
;
|
||||
$stack = $this->getThrowingStackMock();
|
||||
|
||||
$stopwatch = $this->createMock(Stopwatch::class);
|
||||
$stopwatch->expects($this->once())->method('isStarted')->willReturn(true);
|
||||
|
@ -14,6 +14,7 @@ namespace Symfony\Component\Messenger\Tests\Middleware;
|
||||
use Symfony\Component\Messenger\Envelope;
|
||||
use Symfony\Component\Messenger\Middleware\ValidationMiddleware;
|
||||
use Symfony\Component\Messenger\Stamp\ValidationStamp;
|
||||
use Symfony\Component\Messenger\Test\Middleware\MiddlewareTestCase;
|
||||
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage;
|
||||
use Symfony\Component\Validator\ConstraintViolationListInterface;
|
||||
use Symfony\Component\Validator\Validator\ValidatorInterface;
|
||||
|
Reference in New Issue
Block a user