[Messenger] RoutableMessageBus route to default bus
This commit is contained in:
parent
8fdcd6e6ef
commit
c4e5e83b56
@ -45,14 +45,12 @@ class RoutableMessageBus implements MessageBusInterface
|
||||
|
||||
/** @var BusNameStamp $busNameStamp */
|
||||
$busNameStamp = $envelope->last(BusNameStamp::class);
|
||||
if (null === $busNameStamp) {
|
||||
throw new InvalidArgumentException('Envelope does not contain a BusNameStamp.');
|
||||
$busName = null !== $busNameStamp ? $busNameStamp->getBusName() : MessageBusInterface::class;
|
||||
|
||||
if (!$this->busLocator->has($busName)) {
|
||||
throw new InvalidArgumentException(sprintf('Bus name "%s" does not exists.', $busName));
|
||||
}
|
||||
|
||||
if (!$this->busLocator->has($busNameStamp->getBusName())) {
|
||||
throw new InvalidArgumentException(sprintf('Invalid bus name "%s" on BusNameStamp.', $busNameStamp->getBusName()));
|
||||
}
|
||||
|
||||
return $this->busLocator->get($busNameStamp->getBusName())->dispatch($envelope, $stamps);
|
||||
return $this->busLocator->get($busName)->dispatch($envelope, $stamps);
|
||||
}
|
||||
}
|
||||
|
@ -41,15 +41,35 @@ class RoutableMessageBusTest extends TestCase
|
||||
$this->assertSame($envelope, $routableBus->dispatch($envelope, [$stamp]));
|
||||
}
|
||||
|
||||
public function testItExceptionOnMissingStamp()
|
||||
public function testItRoutesToDefaultBus()
|
||||
{
|
||||
$envelope = new Envelope(new \stdClass());
|
||||
$stamp = new DelayStamp(5);
|
||||
$defaultBus = $this->createMock(MessageBusInterface::class);
|
||||
$defaultBus->expects($this->once())->method('dispatch')->with($envelope, [$stamp])
|
||||
->willReturn($envelope);
|
||||
|
||||
$container = $this->createMock(ContainerInterface::class);
|
||||
$container->expects($this->once())->method('has')->with(MessageBusInterface::class)
|
||||
->willReturn(true);
|
||||
$container->expects($this->once())->method('get')->with(MessageBusInterface::class)
|
||||
->willReturn($defaultBus);
|
||||
|
||||
$routableBus = new RoutableMessageBus($container);
|
||||
|
||||
$this->assertSame($envelope, $routableBus->dispatch($envelope, [$stamp]));
|
||||
}
|
||||
|
||||
public function testItExceptionOnDefaultBusNotFound()
|
||||
{
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
$this->expectExceptionMessage('does not contain a BusNameStamp');
|
||||
$this->expectExceptionMessage(sprintf('Bus name "%s" does not exists.', MessageBusInterface::class));
|
||||
|
||||
$envelope = new Envelope(new \stdClass());
|
||||
|
||||
$container = $this->createMock(ContainerInterface::class);
|
||||
$container->expects($this->never())->method('has');
|
||||
$container->expects($this->once())->method('has')->with(MessageBusInterface::class)
|
||||
->willReturn(false);
|
||||
|
||||
$routableBus = new RoutableMessageBus($container);
|
||||
$routableBus->dispatch($envelope);
|
||||
@ -58,7 +78,7 @@ class RoutableMessageBusTest extends TestCase
|
||||
public function testItExceptionOnBusNotFound()
|
||||
{
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
$this->expectExceptionMessage('Invalid bus name');
|
||||
$this->expectExceptionMessage(sprintf('Bus name "%s" does not exists.', 'foo_bus'));
|
||||
|
||||
$envelope = new Envelope(new \stdClass(), [new BusNameStamp('foo_bus')]);
|
||||
|
||||
|
Reference in New Issue
Block a user