#!perl -T use strict; use warnings; use Test::More tests => 119; BEGIN { use_ok( 'App::HWD::Task' ); } SIMPLE: { my $str = '-Create TW::DB::QuoteHead'; my $task = App::HWD::Task->parse( $str ); isa_ok( $task, 'App::HWD::Task' ); is( $task->name, 'Create TW::DB::QuoteHead' ); is( $task->level, 1 ); is( $task->estimate, 0 ); is( $task->id, '' ); is( $task->date_added, '' ); is( $task->summary, 'Create TW::DB::QuoteHead (0/0)', 'Summary'); ok( !$task->completed, 'Not completed' ); ok( !$task->started, 'Not started' ); ok( !$task->is_todo ); ok( !$task->parent ); is( scalar $task->assignees, 0 ); } WITH_ID: { my $str = '--API Pod Docs (#198)'; my $task = App::HWD::Task->parse( $str ); isa_ok( $task, 'App::HWD::Task' ); is( $task->name, 'API Pod Docs' ); is( $task->level, 2 ); is( $task->estimate, 0 ); is( $task->id, 198 ); is( $task->date_added, '' ); is( $task->summary, '198 - API Pod Docs (0/0)', 'Summary'); ok( !$task->completed, 'Not completed' ); ok( !$task->started, 'Not started' ); ok( !$task->is_todo ); ok( !$task->parent ); is( scalar $task->assignees, 0 ); } WITH_ESTIMATE: { my $str = '---API Pod Docs (4h)'; my $task = App::HWD::Task->parse( $str ); isa_ok( $task, 'App::HWD::Task' ); is( $task->name, 'API Pod Docs' ); is( $task->level, 3 ); is( $task->estimate, 4 ); is( $task->id, '' ); is( $task->date_added, '' ); is( $task->summary, 'API Pod Docs (4/0)', 'Summary'); ok( !$task->completed, 'Not completed' ); ok( !$task->started, 'Not started' ); ok( $task->is_todo ); ok( !$task->parent ); is( scalar $task->assignees, 0 ); } WITH_ID_AND_ESTIMATE: { my $str = '**** Retrofitting widgets (#142,3h)'; my $task = App::HWD::Task->parse( $str ); isa_ok( $task, 'App::HWD::Task' ); is( $task->name, 'Retrofitting widgets' ); is( $task->level, 4 ); is( $task->estimate, 3 ); is( $task->id, 142 ); is( $task->date_added, '' ); is( $task->summary, '142 - Retrofitting widgets (3/0)', 'Summary'); ok( !$task->completed, 'Not completed' ); ok( !$task->started, 'Not started' ); ok( $task->is_todo ); ok( !$task->parent ); is( scalar $task->assignees, 0 ); } WITH_ESTIMATE_AND_ID: { my $str = '-Flargling dangows (540m ,#2112)'; my $task = App::HWD::Task->parse( $str ); isa_ok( $task, 'App::HWD::Task' ); is( $task->name, 'Flargling dangows' ); is( $task->level, 1 ); is( $task->estimate, 9 ); is( $task->id, 2112 ); is( $task->date_added, '' ); is( $task->summary, '2112 - Flargling dangows (9/0)', 'Summary'); ok( !$task->completed, 'Not completed' ); ok( !$task->started, 'Not started' ); ok( $task->is_todo ); ok( !$task->parent ); is( scalar $task->assignees, 0 ); } WITH_PARENS: { my $str = '-Voodoo Chile (Slight Return) (#43)'; my $task = App::HWD::Task->parse( $str ); isa_ok( $task, 'App::HWD::Task' ); is( $task->name, 'Voodoo Chile (Slight Return)' ); is( $task->level, 1 ); is( $task->estimate, 0 ); is( $task->id, 43 ); is( $task->date_added, '' ); is( $task->summary, '43 - Voodoo Chile (Slight Return) (0/0)', 'Summary'); ok( !$task->completed, 'Not completed' ); ok( !$task->started, 'Not started' ); ok( !$task->is_todo ); ok( !$task->parent ); is( scalar $task->assignees, 0 ); } WITH_ID_AND_ESTIMATE_AND_DATE: { my $str = '----***IMPORTANT*** (#142, 3h, added 2005-12-07)'; my $task = App::HWD::Task->parse( $str ); isa_ok( $task, 'App::HWD::Task' ); is( $task->name, '***IMPORTANT***' ); is( $task->level, 4 ); is( $task->estimate, 3 ); is( $task->id, 142 ); isa_ok( $task->date_added_obj, 'DateTime', 'Task date object' ); is( $task->date_added, '2005-12-07', 'Task date string' ); is( $task->summary, '142 - ***IMPORTANT*** (3/0)', 'Summary' ); ok( !$task->completed, 'Not completed' ); ok( !$task->started, 'Not started' ); ok( $task->is_todo ); ok( !$task->parent ); is( scalar $task->assignees, 0 ); } WITH_FRACTIONAL_ESTIMATE: { my $str = '----Retrofitting widgets (.25h)'; my $task = App::HWD::Task->parse( $str ); isa_ok( $task, 'App::HWD::Task' ); is( $task->name, 'Retrofitting widgets' ); is( $task->level, 4 ); cmp_ok( $task->estimate, '==', 0.25 ); is( $task->id, '' ); ok( !$task->completed, 'Not completed' ); ok( !$task->started, 'Not started' ); ok( $task->is_todo ); ok( !$task->parent ); is( scalar $task->assignees, 0 ); } WITH_DELETION: { my $str = '**Unnecessary task (14.5h, added 2005-11-07, deleted 2005-08-28, #2112)'; my $task = App::HWD::Task->parse( $str ); isa_ok( $task, 'App::HWD::Task' ); is( $task->name, 'Unnecessary task' ); is( $task->level, 2 ); cmp_ok( $task->estimate, '==', 14.5 ); is( $task->id, 2112 ); is( $task->date_added, '2005-11-07', "Add date" ); is( $task->date_deleted, '2005-08-28', "Delete date" ); ok( !$task->completed, 'Not completed' ); ok( !$task->started, 'Not started' ); ok( !$task->is_todo ); ok( !$task->parent ); is( scalar $task->assignees, 0 ); } WITH_ASSIGNEES: { my $str = "--It's The End Of The World As We Know It (And I Feel Fine) (Slight Return) (12.3h, Andy, #43, Dave)"; my $task = App::HWD::Task->parse( $str ); isa_ok( $task, 'App::HWD::Task' ); is( $task->name, "It's The End Of The World As We Know It (And I Feel Fine) (Slight Return)" ); is( $task->level, 2 ); is( $task->estimate, 12.3 ); is( $task->id, 43 ); is( $task->date_added, '' ); ok( $task->is_todo ); ok( !$task->parent ); my @who = $task->assignees; is( scalar @who, 2 ); is_deeply( \@who, [qw( Andy Dave )] ); } INVALID: { my $str = 'Invalid'; my $task = App::HWD::Task->parse( $str ); ok( !defined( $task ), "Shouldn't parse" ); }