Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
SendMessageMiddleware example
use
Symfony\Component\Messenger\Transport\Sender\SendersLocator;
class
SendMessageMiddlewareTest
extends
MiddlewareTestCase
{
public
function
testItSendsTheMessageToAssignedSender
(
)
{
$message
=
new
DummyMessage
(
'Hey'
)
;
$envelope
=
new
Envelope
(
$message
)
;
$sender
=
$this
->
createMock
(
SenderInterface::
class
)
;
$sendersLocator
=
$this
->
createSendersLocator
(
[
DummyMessage::
class
=>
[
'my_sender'
]
]
,
[
'my_sender' =>
$sender
]
)
;
$middleware
=
new
SendMessageMiddleware
(
$sendersLocator
)
;
$sender
->
expects
(
$this
->
once
(
)
)
->
method
(
'send'
)
->
with
(
$envelope
->
with
(
new
SentStamp
(
$sender
::
class
, 'my_sender'
)
)
)
->
willReturnArgument
(
0
)
;
$envelope
=
$middleware
->
handle
(
$envelope
,
$this
->
getStackMock
(
false
)
)
;
/* @var SentStamp $stamp */
$this
->
assertInstanceOf
(
SentStamp::
class
,
$stamp
=
$envelope
->
last
(
SentStamp::
class
)
, 'it adds a sent stamp'
)
;
$this
->
assertSame
(
'my_sender',
$stamp
->
getSenderAlias
(
)
)
;
$this
->
assertStringMatchesFormat
(
'Mock_SenderInterface_%s',
$stamp
->
getSenderClass
(
)
)
;
}
new
HandlerDescriptor
(
$transport2HandlerThatWorks
,
[
'from_transport' => 'transport2',
'alias' => 'handler_that_works2',
]
)
,
]
,
]
)
;
$dispatcher
=
new
EventDispatcher
(
)
;
$bus
=
new
MessageBus
(
[
new
FailedMessageProcessingMiddleware
(
)
,
new
SendMessageMiddleware
(
$senderLocator
)
,
new
HandleMessageMiddleware
(
$handlerLocator
)
,
]
)
;
$dispatcher
->
addSubscriber
(
new
AddErrorDetailsStampListener
(
)
)
;
$dispatcher
->
addSubscriber
(
new
SendFailedMessageForRetryListener
(
$locator
,
$retryStrategyLocator
)
)
;
$dispatcher
->
addSubscriber
(
new
SendFailedMessageToFailureTransportListener
(
$sendersLocatorFailureTransport
)
)
;
$dispatcher
->
addSubscriber
(
new
StopWorkerOnMessageLimitListener
(
1
)
)
;
$runWorker
=
function
Dstring
$transportName
)
use
(
$transports
,
$bus
,
$dispatcher
)
: ?\Throwable
{
$throwable
= null;
$failedListener
=
function
DWorkerMessageFailedEvent
$event
)
use
(
&
$throwable
)
{