Spica

 view release on metacpan or  search on metacpan

t/011_inflate.t  view on Meta::CPAN

use Test::More;
use Test::Requires
    'Test::Fake::HTTPD',
    'HTTP::Request';

use Spica;

my $api = run_http_server {
    my $req = shift;

    return HTTP::Response->new(
        '200',
        'OK',
        ['Content-Type' => 'application/json'],
        '{"result": "success", "message": "hello world.\n"}',
    );
};

{
    package Mock::Inflate::Result;

    sub new {
        my ($class, %args) = @_;
        bless \%args => $class;
    }

    sub result {
        shift->{result};
    }

    1;
}

{
    package Mock::Inflate::Spec;
    use Spica::Spec::Declare;

    client {
        name 'mock_basic';
        endpoint 'default' => '/' => [];
        columns qw(
            result
            message
        );
        inflate 'result' => sub {
            my ($col_value) = @_;
            return Mock::Inflate::Result->new(result => $col_value);
        };
    };

    1;

}

subtest 'fetch' => sub {
    my $spica = Spica->new(
        host => '127.0.0.1',
        port => $api->port,
        spec => 'Mock::Inflate::Spec',
    );

    my $row = $spica->fetch('mock_basic', +{})->next;

    isa_ok $row => 'Spica::Receiver::Row';
    isa_ok $row->result => 'Mock::Inflate::Result';
    is $row->result->result => 'success';
};

done_testing();

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 1.396 second using v1.00-cache-2.02-grep-82fe00e-cpan-9f2165ba459b )