Ddd\Test\Infrastructure\Application\Notification\AmqpExchangeListenerTest::itShouldListenForIncomingMessagesInAQueue PHP Method

itShouldListenForIncomingMessagesInAQueue() public method

    public function itShouldListenForIncomingMessagesInAQueue()
    {
        if (!class_exists('AMQPConnection')) {
            $this->markTestSkipped('The AMQP extension is not available');
        }
        $queue = $this->prophesize('AMQPQueue');
        $serializer = SerializerBuilder::create()->setCacheDir(__DIR__ . '/../../../../var/cache/jms-serializer')->addMetadataDir(__DIR__ . '/../../../../src/Infrastructure/Application/Serialization/JMS/Config')->build();
        $storedEvent = new StoredEvent('Ddd\\Test\\Infrastructure\\Application\\Notification\\TestEvent', new DateTime(), $serializer->serialize(new TestEvent(), 'json'));
        $envelope = $this->prophesize('AMQPEnvelope');
        $envelope->getBody()->willReturn($serializer->serialize($storedEvent, 'json'));
        $revealedEnvelope = $envelope->reveal();
        $haveBeenCalled = false;
        $queue->get()->will(function () use($revealedEnvelope, &$haveBeenCalled) {
            if (false === $haveBeenCalled) {
                $haveBeenCalled = true;
                return $revealedEnvelope;
            }
            return false;
        });
        $loop = Factory::create();
        $listener = new TestListener($queue->reveal(), $loop, $serializer);
        sleep(1);
        $loop->tick();
        $this->assertCount(1, $listener->receivedEvents());
    }