<?php

require_once __DIR__ . '/../vendor/autoload.php';
use Seven\Component\MessageBusClient\ServiceBus;
use Seven\Component\MessageBusClient\Encoder\JsonEncoder;
use Seven\Component\MessageBusClient\Message\Request;
use Seven\Component\MessageBusClient\Protocol\AMQP;
use PhpAmqpLib\Connection\AMQPStreamConnection;
$env = function ($key, $default = null) {
    return isset($_SERVER[$key]) ? $_SERVER[$key] : $default;
};
$connection = new AMQPStreamConnection($env('AMQP_HOST', 'localhost'), $env('AMQP_PORT', 5672), $env('AMQP_USER', 'guest'), $env('AMQP_PASSWORD', 'guest'), $env('AMQP_VHOST', '/'));
$channel = $connection->channel();
$driver = new AMQP\Driver($channel, 'outbox', new JsonEncoder());
$bus = new ServiceBus($driver);
// Broadcast a message to all subscribers
$bus->broadcast(new Request('category_repository.updated', '1.0', ['category' => ['name' => 'Fruits', 'position' => 10]]));
 /**
  * Service bus should broadcast messages using given driver.
  */
 public function testBroadcast()
 {
     $request = new Request('', null);
     $this->driver->expects($this->once())->method('broadcast')->with($request);
     $this->serviceBus->broadcast($request);
 }