Passed
Push — master ( b2b84f...109e7c )
by Thomas Mauro
03:02
created

RoutableMessageBusFactoryTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Importance

Changes 0
Metric Value
wmc 3
lcom 1
cbo 2
dl 0
loc 38
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace TMV\Laminas\Messenger\Test\Factory;
6
7
use PHPUnit\Framework\TestCase;
8
use Prophecy\PhpUnit\ProphecyTrait;
9
use Psr\Container\ContainerInterface;
10
use Symfony\Component\Messenger\MessageBusInterface;
11
use Symfony\Component\Messenger\RoutableMessageBus;
12
use TMV\Laminas\Messenger\Exception\InvalidArgumentException;
13
use TMV\Laminas\Messenger\Factory\RoutableMessageBusFactory;
14
15
class RoutableMessageBusFactoryTest extends TestCase
16
{
17
    use ProphecyTrait;
18
19
    public function testFactory(): void
20
    {
21
        $container = $this->prophesize(ContainerInterface::class);
22
23
        $messageBus = $this->prophesize(MessageBusInterface::class);
24
25
        $container->has('bus_name')->willReturn(true);
26
        $container->get('bus_name')->shouldBeCalled()->willReturn($messageBus->reveal());
27
28
        $factory = [RoutableMessageBusFactory::class, 'bus_name'];
29
        $service = $factory($container->reveal());
30
31
        $this->assertInstanceOf(RoutableMessageBus::class, $service);
32
    }
33
34
    public function testFactoryWithoutFallback(): void
35
    {
36
        $container = $this->prophesize(ContainerInterface::class);
37
38
        $container->has('bus_name')->willReturn(false);
39
        $container->get('bus_name')->shouldNotBeCalled();
40
41
        $factory = [RoutableMessageBusFactory::class, 'bus_name'];
42
        $service = $factory($container->reveal());
43
44
        $this->assertInstanceOf(RoutableMessageBus::class, $service);
45
    }
46
47
    public function testInvalidCall(): void
48
    {
49
        $this->expectException(InvalidArgumentException::class);
50
51
        $factory = [RoutableMessageBusFactory::class, 'foo'];
52
        $factory('foo');
53
    }
54
}
55