The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
BEGIN {push(@INC, 't/lib')}
use Test::More tests => 1;
use POE::Component::Client::REST::Test::HTTP qw(json_responder);

my $tester = POE::Component::Client::REST::Test::HTTP->new(
  responses => [
    qr{^/_all_dbs$} => json_responder([qw(foo bar baz)]),
  ],
);

    use POE::Component::Client::REST::JSON;
    use POE;

    # simple CouchDB example

    POE::Session->create(inline_states => {
      _start => sub {
        $poe_kernel->alias_set('foo');

        my $rest = $_[HEAP]->{rest} = POE::Component::Client::REST::JSON->new;

$tester->replace($rest);

        $rest->call(GET => 'http://localhost:5984/_all_dbs', callback =>
          [$_[SESSION], 'response']);
      },

      response => sub {
        my ($data, $response) = @_[ARG0, ARG1];
        die $response->status_line unless $response->code == 200;

#       print 'Databases: ' . join(', ', @$data) . "\n";
        $poe_kernel->alias_remove('foo');
        $_[HEAP]->{rest}->shutdown();
ok($data->[0] eq 'foo' && $data->[1] eq 'bar' && $data->[2] eq 'baz',
  "Correct output");
      },
    });

    $poe_kernel->run();