10000 feature #28985 [Messenger] Move MiddlewareTestCase in Test ns (ogizan… · symfony/symfony@b6758e9 · GitHub
[go: up one dir, main page]

Skip to content

Commit b6758e9

Browse files
committed
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 ------- 215c895 [Messenger] Move MiddlewareTestCase in Test ns
2 parents a33725f + 215c895 commit b6758e9

File tree

10 files changed

+47
-77
lines changed

10 files changed

+47
-77
lines changed

src/Symfony/Bridge/Doctrine/Tests/Fixtures/Messenger/DummyMiddleware.php

Lines changed: 0 additions & 15 deletions
This file was deleted.

src/Symfony/Bridge/Doctrine/Tests/Fixtures/Messenger/ThrowingMiddleware.php

Lines changed: 0 additions & 15 deletions
This file was deleted.

src/Symfony/Bridge/Doctrine/Tests/Messenger/DoctrineTransactionMiddlewareTest.php

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,15 @@
1414
use Doctrine\Common\Persistence\ManagerRegistry;
1515
use Doctrine\DBAL\Connection;
1616
use Doctrine\ORM\EntityManagerInterface;
17-
use PHPUnit\Framework\TestCase;
1817
use Symfony\Bridge\Doctrine\Messenger\DoctrineTransactionMiddleware;
19-
use Symfony\Bridge\Doctrine\Tests\Fixtures\Messenger\DummyMiddleware;
20-
use Symfony\Bridge\Doctrine\Tests\Fixtures\Messenger\ThrowingMiddleware;
2118
use Symfony\Component\Messenger\Envelope;
22-
use Symfony\Component\Messenger\Middleware\StackInterface;
19+
use Symfony\Component\Messenger\Test\Middleware\MiddlewareTestCase;
2320

24-
class DoctrineTransactionMiddlewareTest extends TestCase
21+
class DoctrineTransactionMiddlewareTest extends MiddlewareTestCase
2522
{
2623
private $connection;
2724
private $entityManager;
2825
private $middleware;
29-
private $stack;
3026

3127
public function setUp()
3228
{
@@ -39,8 +35,6 @@ public function setUp()
3935
$managerRegistry->method('getManager')->willReturn($this->entityManager);
4036

4137
$this->middleware = new DoctrineTransactionMiddleware($managerRegistry, null);
42-
43-
$this->stack = $this->createMock(StackInterface::class);
4438
}
4539

4640
public function testMiddlewareWrapsInTransactionAndFlushes()
@@ -54,15 +48,14 @@ public function testMiddlewareWrapsInTransactionAndFlushes()
5448
$this->entityManager->expects($this->once())
5549
->method('flush')
5650
;
57-
$this->stack
58-
->expects($this->once())
59-
->method('next')
60-
->willReturn(new DummyMiddleware())
61-
;
6251

63-
$this->middleware->handle(new Envelope(new \stdClass()), $this->stack);
52+
$this->middleware->handle(new Envelope(new \stdClass()), $this->getStackMock());
6453
}
6554

55+
/**
56+
* @expectedException \RuntimeException
57+
* @expectedExceptionMessage Thrown from next middleware.
58+
*/
6659
public function testTransactionIsRolledBackOnException()
6760
{
6861
$this->connection->expects($this->once())
@@ -71,14 +64,7 @@ public function testTransactionIsRolledBackOnException()
7164
$this->connection->expects($this->once())
7265
->method('rollBack')
7366
;
74-
$this->stack
75-
->expects($this->once())
76-
->method('next')
77-
->willReturn(new ThrowingMiddleware())
78-
;
79-
$this->expectException(\RuntimeException::class);
80-
$this->expectExceptionMessage('Thrown from middleware.');
8167

82-
$this->middleware->handle(new Envelope(new \stdClass()), $this->stack);
68+
$this->middleware->handle(new Envelope(new \stdClass()), $this->getThrowingStackMock());
8369
}
8470
}

src/Symfony/Component/Messenger/Tests/Middleware/MiddlewareTestCase.php renamed to src/Symfony/Component/Messenger/Test/Middleware/MiddlewareTestCase.php

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,16 @@
99
* file that was distributed with this source code.
1010
*/
1111

12-
namespace Symfony\Component\Messenger\Tests\Middleware;
12+
namespace Symfony\Component\Messenger\Test\Middleware;
1313

1414
use PHPUnit\Framework\TestCase;
15+
use Symfony\Component\Messenger\Envelope;
1516
use Symfony\Component\Messenger\Middleware\MiddlewareInterface;
1617
use Symfony\Component\Messenger\Middleware\StackInterface;
1718

19+
/**
20+
* @author Nicolas Grekas <p@tchwork.com>
21+
*/
1822
abstract class MiddlewareTestCase extends TestCase
1923
{
2024
protected function getStackMock(bool $nextIsCalled = true)
@@ -23,9 +27,9 @@ protected function getStackMock(bool $nextIsCalled = true)
2327
$nextMiddleware
2428
->expects($nextIsCalled ? $this->once() : $this->never())
2529
->method('handle')
26-
->will($this->returnCallback(function ($envelope, StackInterface $stack) {
30+
->willReturnCallback(function (Envelope $envelope, StackInterface $stack): Envelope {
2731
return $envelope;
28-
}))
32+
})
2933
;
3034

3135
$stack = $this->createMock(StackInterface::class);
@@ -37,4 +41,23 @@ protected function getStackMock(bool $nextIsCalled = true)
3741

3842
return $stack;
3943
}
44+
45+
protected function getThrowingStackMock(\Throwable $throwable = null)
46+
{
47+
$nextMiddleware = $this->getMockBuilder(MiddlewareInterface::class)->getMock();
48+
$nextMiddleware
49+
->expects($this->once())
50+
->method('handle')
51+
->willThrowException($throwable ?? new \RuntimeException('Thrown from next middleware.'))
52+
;
53+
54+
$stack = $this->createMock(StackInterface::class);
55+
$stack
56+
->expects($this->once())
57+
->method('next')
58+
->willReturn($nextMiddleware)
59+
;
60+
61+
return $stack;
62+
}
4063
}

src/Symfony/Component/Messenger/Tests/Middleware/ActivationMiddlewareTest.php

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
use Symfony\Component\Messenger\Envelope;
1515
use Symfony\Component\Messenger\Middleware\ActivationMiddleware;
1616
use Symfony\Component\Messenger\Middleware\MiddlewareInterface;
17-
use Symfony\Component\Messenger\Middleware\StackInterface;
17+
use Symfony\Component\Messenger\Test\Middleware\MiddlewareTestCase;
1818
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage;
1919

2020
/**
@@ -27,8 +27,7 @@ public function testExecuteMiddlewareOnActivated()
2727
$message = new DummyMessage('Hello');
2828
$envelope = new Envelope($message);
2929

30-
$stack = $this->createMock(StackInterface::class);
31-
$stack->expects($this->never())->method('next');
30+
$stack = $this->getStackMock(false);
3231

3332
$middleware = $this->createMock(MiddlewareInterface::class);
3433
$middleware->expects($this->once())->method('handle')->with($envelope, $stack)->willReturn($envelope);
@@ -46,8 +45,7 @@ public function testExecuteMiddlewareOnActivatedWithCallable()
4645
$activated = $this->createPartialMock(\stdClass::class, array('__invoke'));
4746
$activated->expects($this->once())->method('__invoke')->with($envelope)->willReturn(true);
4847

49-
$stack = $this->createMock(StackInterface::class);
50-
$stack->expects($this->never())->method('next');
48+
$stack = $this->getStackMock(false);
5149

5250
$middleware = $this->createMock(MiddlewareInterface::class);
5351
$middleware->expects($this->once())->method('handle')->with($envelope, $stack)->willReturn($envelope);

src/Symfony/Component/Messenger/Tests/Middleware/HandleMessageMiddlewareTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Symfony\Component\Messenger\Handler\Locator\HandlerLocator;
1616
use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware;
1717
use Symfony\Component\Messenger\Middleware\StackMiddleware;
18+
use Symfony\Component\Messenger\Test\Middleware\MiddlewareTestCase;
1819
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage;
1920

2021
class HandleMessageMiddlewareTest extends MiddlewareTestCase

src/Symfony/Component/Messenger/Tests/Middleware/LoggingMiddlewareTest.php

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
use Psr\Log\LoggerInterface;
1515
use Symfony\Component\Messenger\Envelope;
1616
use Symfony\Component\Messenger\Middleware\LoggingMiddleware;
17-
use Symfony\Component\Messenger\Middleware\StackInterface;
17+
use Symfony\Component\Messenger\Test\Middleware\MiddlewareTestCase;
1818
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage;
1919

2020
class LoggingMiddlewareTest extends MiddlewareTestCase
@@ -34,7 +34,8 @@ public function testDebugLogAndNextMiddleware()
3434
}
3535

3636
/**
37-
* @expectedException \Exception
37+
* @expectedException \RuntimeException
38+
* @expectedExceptionMessage Thrown from next middleware.
3839
*/
3940
public function testWarningLogOnException()
4041
{
@@ -50,12 +51,7 @@ public function testWarningLogOnException()
5051
->expects($this->once())
5152
->method('warning')
5253
;
53-
$stack = $this->createMock(StackInterface::class);
54-
$stack
55-
->expects($this->once())
56-
->method('next')
57-
->willThrowException(new \Exception())
58-
;
54+
$stack = $this->getThrowingStackMock();
5955

6056
(new LoggingMiddleware($logger))->handle($envelope, $stack);
6157
}

src/Symfony/Component/Messenger/Tests/Middleware/SendMessageMiddlewareTest.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
namespace Symfony\Component\Messenger\Tests\Middleware;
1313

1414
use Symfony\Component\Messenger\Envelope;
15-
use Symfony\Component\Messenger\Middleware\MiddlewareInterface;
1615
use Symfony\Component\Messenger\Middleware\SendMessageMiddleware;
1716
use Symfony\Component\Messenger\Stamp\ReceivedStamp;
17+
use Symfony\Component\Messenger\Test\Middleware\MiddlewareTestCase;
1818
use Symfony\Component\Messenger\Tests\Fixtures\ChildDummyMessage;
1919
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage;
2020
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessageInterface;
@@ -114,7 +114,6 @@ public function testItCallsTheNextMiddlewareWhenNoSenderForThisMessage()
114114
$envelope = new Envelope($message);
115115

116116
$middleware = new SendMessageMiddleware(new InMemorySenderLocator(null));
117-
$handler = $this->getMockBuilder(MiddlewareInterface::class)->getMock();
118117

119118
$middleware->handle($envelope, $this->getStackMock());
120119
}

src/Symfony/Component/Messenger/Tests/Middleware/TraceableMiddlewareTest.php

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Symfony\Component\Messenger\Middleware\MiddlewareInterface;
1616
use Symfony\Component\Messenger\Middleware\StackInterface;
1717
use Symfony\Component\Messenger\Middleware\TraceableMiddleware;
18+
use Symfony\Component\Messenger\Test\Middleware\MiddlewareTestCase;
1819
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage;
1920
use Symfony\Component\Stopwatch\Stopwatch;
2021

@@ -55,7 +56,7 @@ public function testHandle()
5556

5657
/**
5758
* @expectedException \RuntimeException
58-
* @expectedExceptionMessage Foo exception from next callable
59+
* @expectedExceptionMessage Thrown from next middleware.
5960
*/
6061
public function testHandleWithException()
6162
{
@@ -71,12 +72,7 @@ public function testHandleWithException()
7172
}))
7273
;
7374

74-
$stack = $this->createMock(StackInterface::class);
75-
$stack
76-
->expects($this->once())
77-
->method('next')
78-
->willThrowException(new \RuntimeException('Foo exception from next callable'))
79-
;
75+
$stack = $this->getThrowingStackMock();
8076

8177
$stopwatch = $this->createMock(Stopwatch::class);
8278
$stopwatch->expects($this->once())->method('isStarted')->willReturn(true);

src/Symfony/Component/Messenger/Tests/Middleware/ValidationMiddlewareTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Symfony\Component\Messenger\Envelope;
1515
use Symfony\Component\Messenger\Middleware\ValidationMiddleware;
1616
use Symfony\Component\Messenger\Stamp\ValidationStamp;
17+
use Symfony\Component\Messenger\Test\Middleware\MiddlewareTestCase;
1718
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage;
1819
use Symfony\Component\Validator\ConstraintViolationListInterface;
1920
use Symfony\Component\Validator\Validator\ValidatorInterface;

0 commit comments

Comments
 (0)
0