Skip to content

Commit f19020b

Browse files
committed
Tests: cover more handlers usecases
1 parent f60b129 commit f19020b

File tree

4 files changed

+103
-0
lines changed

4 files changed

+103
-0
lines changed

tests/Cases/DI/MessengerExtension.handler.phpt

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Tests\Cases\DI;
44

5+
use Contributte\Messenger\Exception\LogicalException;
56
use Contributte\Tester\Toolkit;
67
use Nette\DI\Compiler;
78
use Symfony\Component\Messenger\Transport\TransportInterface;
@@ -36,3 +37,66 @@ Toolkit::test(function (): void {
3637
Assert::count(1, $container->findByType(TransportInterface::class));
3738
Assert::count(1, $container->findByType(SimpleHandler::class));
3839
});
40+
41+
// Error: no invoke method
42+
Toolkit::test(function (): void {
43+
Assert::exception(
44+
static function (): void {
45+
Container::of()
46+
->withDefaults()
47+
->withCompiler(function (Compiler $compiler): void {
48+
$compiler->addConfig(Helpers::neon(<<<'NEON'
49+
messenger:
50+
services:
51+
- { factory: Tests\Mocks\Handler\NoMethodHandler, tags: [contributte.messenger.handler] }
52+
NEON
53+
));
54+
})
55+
->build();
56+
},
57+
LogicalException::class,
58+
'Handler must have "Tests\Mocks\Handler\NoMethodHandler::__invoke()" method.'
59+
);
60+
});
61+
62+
// Error: multiple attributes
63+
Toolkit::test(function (): void {
64+
Assert::exception(
65+
static function (): void {
66+
Container::of()
67+
->withDefaults()
68+
->withCompiler(function (Compiler $compiler): void {
69+
$compiler->addConfig(Helpers::neon(<<<'NEON'
70+
messenger:
71+
services:
72+
- Tests\Mocks\Handler\MultipleAttributesHandler
73+
NEON
74+
));
75+
})
76+
->build();
77+
},
78+
LogicalException::class,
79+
'Only attribute #[AsMessageHandler] can be used on class "Tests\Mocks\Handler\MultipleAttributesHandler"'
80+
);
81+
});
82+
83+
// Error: multiple parameters handler
84+
Toolkit::test(function (): void {
85+
Assert::exception(
86+
static function (): void {
87+
Container::of()
88+
->withDefaults()
89+
->withCompiler(function (Compiler $compiler): void {
90+
$compiler->addConfig(Helpers::neon(<<<'NEON'
91+
messenger:
92+
services:
93+
- Tests\Mocks\Handler\MultipleParametersHandler
94+
NEON
95+
));
96+
})
97+
->build();
98+
},
99+
LogicalException::class,
100+
'Only one parameter is allowed in "Tests\Mocks\Handler\MultipleParametersHandler::__invoke()."'
101+
);
102+
});
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php declare(strict_types = 1);
2+
3+
namespace Tests\Mocks\Handler;
4+
5+
use Symfony\Component\Messenger\Attribute\AsMessageHandler;
6+
7+
#[AsMessageHandler]
8+
#[AsMessageHandler]
9+
final class MultipleAttributesHandler
10+
{
11+
12+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php declare(strict_types = 1);
2+
3+
namespace Tests\Mocks\Handler;
4+
5+
use Symfony\Component\Messenger\Attribute\AsMessageHandler;
6+
7+
#[AsMessageHandler]
8+
final class MultipleParametersHandler
9+
{
10+
11+
public function __invoke(string $foo, string $bar): void
12+
{
13+
// For tests
14+
}
15+
16+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?php declare(strict_types = 1);
2+
3+
namespace Tests\Mocks\Handler;
4+
5+
use Symfony\Component\Messenger\Attribute\AsMessageHandler;
6+
7+
#[AsMessageHandler]
8+
final class NoMethodHandler
9+
{
10+
11+
}

0 commit comments

Comments
 (0)