#=============================================================================== # # FILE: entry.t # # DESCRIPTION: Test entry commands # # AUTHOR: Andrew Fresh (AAF), andrew@cpan.org # COMPANY: Red River Communications # CREATED: 07/10/09 11:32:39 # REVISION: $AFresh1: entry.t,v 1.14 2010/02/13 23:06:34 andrew Exp $ #=============================================================================== use strict; use warnings; use Test::More tests => 41; my $class; BEGIN { $class = 'Text::Todo::Entry'; use_ok( $class, "use $class" ) } diag("Testing entry $class $Text::Todo::Entry::VERSION"); my %sample = ( text => '(B) @home @work send email to andrew@cpan.org + +say_thanks', priority => 'B', known_tags => { context => '@', project => '+' }, contexts => [ 'home', 'work' ], projects => [ '', 'say_thanks' ], prepend => 'before', append => 'or something', new_project => 'notnapping', new_context => 'car', ); my $e = new_ok($class); is_deeply( $e->known_tags, $sample{known_tags}, 'check known_tags' ); ok( $e->replace( $sample{text} ), 'Update entry' ); is( $e->text, $sample{text}, 'Make sure entry matches' ); is( $e->priority, $sample{priority}, 'check priority' ); is_deeply( [ $e->contexts ], $sample{contexts}, 'check contexts' ); is_deeply( [ $e->projects ], $sample{projects}, 'check projects' ); $sample{text} =~ s/^( \s* \( $sample{priority} \))/$1 $sample{prepend}/xms; ok( $e->prepend( $sample{prepend} ), 'Prepend entry' ); is( $e->text, $sample{text}, 'Make sure entry matches' ); is( $e->priority, $sample{priority}, 'check priority' ); is_deeply( [ $e->contexts ], $sample{contexts}, 'check contexts' ); is_deeply( [ $e->projects ], $sample{projects}, 'check projects' ); $sample{text} .= ' ' . $sample{append}; ok( $e->append( $sample{append} ), 'Append entry' ); is( $e->text, $sample{text}, 'Make sure entry matches' ); is( $e->priority, $sample{priority}, 'check priority' ); is_deeply( [ $e->contexts ], $sample{contexts}, 'check contexts' ); is_deeply( [ $e->projects ], $sample{projects}, 'check projects' ); ok( !$e->in_project( $sample{new_project} ), 'not in new project yet' ); push @{ $sample{projects} }, $sample{new_project}; $sample{text} .= ' +' . $sample{new_project}; ok( $e->append( '+' . $sample{new_project} ), 'Add project' ); is( $e->text, $sample{text}, 'Make sure entry matches' ); ok( $e->in_project( $sample{new_project} ), 'now in new project' ); ok( !$e->in_context( $sample{new_context} ), 'not in new context yet' ); push @{ $sample{contexts} }, $sample{new_context}; $sample{text} .= ' @' . $sample{new_context}; ok( $e->append( '@' . $sample{new_context} ), 'Add context' ); is( $e->text, $sample{text}, 'Make sure entry matches' ); ok( $e->in_context( $sample{new_context} ), 'now in new context' ); $sample{text} =~ s/^\(B\)\s*/(A) /gxms; $sample{priority} = 'A'; ok( $e->pri('A'), 'Set priority to A' ); is( $e->text, $sample{text}, 'Make sure entry matches' ); is( $e->priority, 'A', 'New priority is set' ); $sample{text} =~ s/^\(A\)\s*//gxms; $sample{priority} = ''; ok( $e->depri(), 'Deprioritize' ); is( $e->text, $sample{text}, 'Make sure entry matches' ); is( $e->priority, undef, 'New priority is set' ); my $done_date = sprintf "%04d-%02d-%02d", ( (localtime)[5] + 1900 ), ( (localtime)[4] + 1 ), ( (localtime)[3] ); my $done_marker = "x $done_date "; ok( !$e->done, 'not done' ); ok( $e->do, 'mark as done' ); is( $e->done, $done_date, 'now done' ); is( $e->text, $done_marker . $sample{text}, 'Make sure entry matches' ); ok( $e->replace(''), 'Blank entry' ); is( $e->text, '', 'Make sure entry is blank' ); is( $e->priority, undef, 'check priority is undef' ); is_deeply( [ $e->contexts ], [], 'check contexts are empty' ); is_deeply( [ $e->projects ], [], 'check projects are empty' ); # replace # app => 'append', # prep => 'prepend', # dp => 'dpri', # p => 'pri',