Data-Object-Cli
view release on metacpan or search on metacpan
t/Data_Object_Cli.t view on Meta::CPAN
package Todo::Admin;
use parent 'Data::Object::Cli';
our $name = 'todo <action>';
sub auto {
{
add_user => '_handle_add_user',
del_user => '_handle_del_user'
}
}
sub subs {
{
add_user => 'Add a new user to the system',
del_user => 'Remove a user to the system'
}
}
my $admin = run Todo::Admin;
__DATA__
Usage: {name}
Commands:
{commands}
Options:
{options}
=cut
package main;
my $test = testauto(__FILE__);
my $subs = $test->standard;
$subs->synopsis(fun($tryable) {
ok my $result = $tryable->result;
ok $result->isa('Command');
ok $result->args;
ok $result->opts;
ok $result->data;
ok $result->vars;
my $returned = $result->main;
like $returned, qr/usage:/;
$result
});
$subs->example(-1, 'auto', 'method', fun($tryable) {
local @ARGV;
$ARGV[0] = 'init';
ok my $result = $tryable->result;
ok my $returned = $result->main;
is $returned, 1234567890;
$result->auto
});
$subs->example(-1, 'exit', 'method', fun($tryable) {
ok !(my $result = trap { $tryable->result });
is $trap->exit, 0;
$result
});
$subs->example(-2, 'exit', 'method', fun($tryable) {
ok !(my $result = trap { $tryable->result });
is $trap->exit, 1;
$result
});
$subs->example(-1, 'fail', 'method', fun($tryable) {
ok !(my $result = trap { $tryable->result });
is $trap->exit, 1;
$result
});
$subs->example(-1, 'handle', 'method', fun($tryable) {
ok my $result = $tryable->result;
like $result, qr/usage:/;
$result
});
$subs->example(-1, 'help', 'method', fun($tryable) {
ok my $result = $tryable->result;
is $result->name, __FILE__;
ok !$result->info;
$result->help
});
$subs->example(-2, 'help', 'method', fun($tryable) {
ok my $result = $tryable->result;
is $result->name, 'todolist';
ok !$result->info;
$result->help
});
$subs->example(-3, 'help', 'method', fun($tryable) {
ok my $result = $tryable->result;
is $result->name, 'todolist';
ok !$result->info;
$result->help
( run in 1.696 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )