NAME
    Test::Net::RabbitMQ - A mock RabbitMQ implementation for use when
    testing.

SYNOPSIS
        use Test::Net::RabbitMQ;

        my $mq = Test::Net::RabbitMQ->new;

        $mq->connect;

        $mq->channel_open(1);

        $mq->exchange_declare(1, 'order');
        $mq->queue_declare(1, 'new-orders');

        $mq->queue_bind(1, 'new-orders', 'order', 'order.new');

        $mq->publish(1, 'order.new', 'hello!', { exchange => 'order' });

        $mq->consume(1, 'new-orders');

        my $msg = $mq->recv;

DESCRIPTION
    Test::Net::RabbitMQ is a terrible approximation of using the real thing,
    but hopefully will allow you to test systems that use Net::RabbitMQ
    without having to use an actual RabbitMQ instance.

    The general overview is that calls to "publish" pushes a message into
    one or more queues (or none if there are no bindings) and calls to
    "recv" pop them.

CAVEATS
    Patches are welcome! At the moment there are a number of shortcomings:

    "recv" doesn't block
    routing_keys do not work with wildcards
    lots of other stuff!

ATTRIBUTES
  connectable
    If false then any calls to connect will die to emulate a failed
    connection.

METHODS
  channel_open($number)
    Opens a channel with the specific number.

  channel_close($number)
    Closes the specific channel.

connect
    Connects this instance. Does nothing except set "connected" to true.
    Will throw an exception if you've set "connectable" to false.

consume($channel, $queue)
    Sets the queue that will be popped when "recv" is called.

disconnect
    Disconnects this instance by setting "connected" to false.

exchange_declare($channel, $exchange, $options)
    Creates an exchange of the specified name.

queue_bind($channel, $queue, $exchange, $routing_key)
    Binds the specified queue to the specified exchange using the provided
    routing key. Note that, at the moment, this doesn't work with AMQP
    wildcards. Only with exact matches of the routing key.

queue_declare($channel, $queue, $options)
    Creates a queue of the specified name.

queue_unbind($channel, $queue, $exchange, $routing_key)
    Unbinds the specified routing key from the provided queue and exchange.

publish($channel, $routing_key, $body, $options)
    Publishes the specified body with the supplied routing key. If there is
    a binding that matches then the message will be added to the appropriate
    queue(s).

recv
    Provided you've called "consume" then calls to recv will "pop" the next
    message of the queue. Note that this method does not block.

AUTHOR
    Cory G Watson, "<gphat at cpan.org>"

COPYRIGHT & LICENSE
    Copyright 2010 Cory G Watson.

    This program is free software; you can redistribute it and/or modify it
    under the terms of either: the GNU General Public License as published
    by the Free Software Foundation; or the Artistic License.

    See http://dev.perl.org/licenses/ for more information.

