use Test::More tests => 6;
use Test::Exception;
{

    package Role;
    use Moose;
    with 'Net::Douban::OAuth';
    with "Net::Douban::Roles";
}

my $role = Role->new();

isa_ok( $role, "Role" );

is( ref( $role->res_callback ), 'CODE', 'res_callback is a CODE' );
$role->res_callback( \&foo );
is( $role->res_callback->(), 'hello', 'res_callback get hello' );
$role->clear_res_callback();

my $api = {
    path          => '/people/{userID}/collection/{collectionID}',
    has_url_param => '1',
};

my $args = {
    userID       => "woosley",
    collectionID => 'hody',
};
my $path = $role->__build_path( $api, $args );
is( $path, '/people/woosley/collection/hody', "path build" );

throws_ok { $role->__build_path( $api, { userID => 'hello' } ) }
qr/Missing augument: collectionID/, "not enough augment";

$api->{path} = '/people/x/fo/';
is( $role->__build_path( $api, $args ), '/people/x/fo/', "path build" );

sub foo {
    return "hello";
}
