The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl
#
# Yes.  This is the test for the test...
#
use strict;
use warnings;

use Test::More tests => 22;
use Test::Clustericious;

package SomeService;

use base 'Clustericious::App';
use Clustericious::RouteBuilder;

my $object;

get    '/object/id' => sub { my $c = shift;
                             if ($object) { $c->render_json($object) }
                             else { $c->res->code(404);
                                    $c->render_text('Not Found') } };

post   '/object'    => sub { my $c = shift;
                             $object = $c->parse_autodata;
                             $c->render_json($object) };

del  '/object/id' => sub { my $c = shift;
                             $object = undef;
                             $c->render_text('ok') };

package main;

my $t = new_ok('Test::Clustericious', [ app => "SomeService" ]);

my $test_obj = { a => 'b', c => 'd' };

my $x = $t->create_ok('/object', $test_obj);

is_deeply($x, $test_obj, 'Check created object = sent object');

$x = $t->retrieve_ok('/object/id');

is_deeply($x, $test_obj, 'Check retrieved object = created object');

$t->remove_ok('/object/id');

$t->notfound_ok('/object/id');

$test_obj = $t->testdata('testobject');

$x = $t->create_ok('/object', 'testobject');

is_deeply($x, $test_obj, 'Check uploading object from a file');

$x = $t->retrieve_ok('/object/id');

is_deeply($x, $test_obj, 'Check retrieved object = object from file');

1;