The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w
use 5.010;
use strict;
use warnings;
use autodie;
use Exobrain;
use Exobrain::Test;
use Test::Most;

my $exobrain = Exobrain->new;

isa_ok($exobrain,'Exobrain');

# Invalid ways of generatingt his intent

dies_ok { $exobrain->intent('HabitRPG', direction => 'up'   ) } "no task";
dies_ok { $exobrain->intent('HabitRPG', task => 'test-goal' ) } "no direction";


{
    # Build a sample (valid) message and test

    my $message = $exobrain->intent('HabitRPG',
        task => 'test-goal',
        direction => 'up',
        public => 0,
    );

    ok($message->DOES('Exobrain::Intent'), 'Does Exobrain::Intent');
    isa_ok($message,'Exobrain::Intent::HabitRPG');

    is($message->namespace, 'Intent::HabitRPG','namespace');

    is($message->task,'test-goal','task');
    is($message->direction,'up','direction');

    like($message->summary,qr/Move test-goal up/,'summary');

}

{

    # Test default public flag

    my $message = $exobrain->intent('HabitRPG',
        task => 'test-goal',
        direction => 'up',
    );

    is( $message->public, 0, 'default 0 public flag');
}


done_testing;