The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl
use strict;
use warnings;
use Test::More import => ['!pass'];

unless ($ENV{HAVE_TEST_MEMCACHED_SERVER_LOCALHOST}) {
    plan skip_all =>
        'Env var HAVE_TEST_MEMCACHED_SERVER_LOCALHOST needs set for this test';
}

use_ok('Dancer::Plugin::MemcachedFast');
use lib 't';
use Dancer::Test appdir => '..';
use Dancer;

{

    package MFONTANITestApp;
    use strict;
    use warnings;
    use Dancer ':syntax';
    use Dancer::Plugin::MemcachedFast;
    get '/'               => sub {'Module loaded'};
    get '/get_test'       => sub {memcached_get('data')};
    get '/delete_test'    => sub {memcached_delete('data')};
    get '/set_test/:data' => sub {memcached_set('data', params->{data})};
    1;
}

my $time = time;    # test value

my $response;

route_exists        [GET => '/'], "GET / handled";
response_status_is  [GET => '/'], 200, "GET / 200";
response_content_is [GET => '/'], "Module loaded", "Correct response received";

route_exists        [GET => '/get_test'], "GET /get_test handled";
response_status_is  [GET => '/get_test'], 200, "GET /get_test 200";
response_content_is [GET => '/get_test'], "", "Correct response received";

$response = dancer_response GET => "/set_test/$time";
is($response->{status},  200, "200 OK for /set_test/$time");
is($response->{content}, '1', "Correct response received for /set_test/$time");

$response = dancer_response GET => "/get_test";
is($response->{status},  200,   "200 OK for /get_test");
is($response->{content}, $time, "Correct response received for /get_test");

$response = dancer_response GET => "/get_test";
is($response->{status},  200,   "200 OK for /get_test");
is($response->{content}, $time, "Correct response received for /get_test");

$response = dancer_response GET => "/delete_test";
is($response->{status},  200, "200 OK for /delete_test");
is($response->{content}, '1', "Correct response received for /delete_test");

done_testing;