Mail-Dir
view release on metacpan or search on metacpan
t/lib-Mail-Dir.t view on Meta::CPAN
qr/^Mailbox does not exist/, '$maildir->select_mailbox() die()s when passed a nonexistent mailbox';
lives_ok {
$maildir->create_mailbox('INBOX.new');
}
'$maildir->create_mailbox() successfully creates a new mailbox';
throws_ok {
$maildir->create_mailbox('INBOX.impossible.mailbox');
}
qr/^Parent mailbox does not exist/, '$maildir->create_inbox() die()s when passed a mailbox path with nonexistent parent';
lives_ok {
$maildir->select_mailbox('INBOX.new');
}
'$maildir->select_mailbox() will change the mailbox to INBOX.new without complaint';
throws_ok {
$maildir->select_mailbox('//invalid');
}
qr/^Invalid mailbox name/, '$maildir->select_mailbox() will die() if provided an invalid mailbox name';
note('Testing Maildir++ message delivery');
my $msgfile = "$tmpdir/msg.txt";
my $message;
create_message_file($msgfile);
lives_ok {
$maildir->deliver($msgfile);
}
'$maildir->deliver() succeeds when delivering message from file';
lives_ok {
$maildir->deliver( create_message_sub() );
}
'$maildir->deliver() succeeds when delivering message from CODE ref';
open( my $fh, '<', $msgfile );
lives_ok {
$message = $maildir->deliver($fh);
}
'$maildir->deliver() succeeds when delivering message from file handle';
close $fh;
ok( -f $message->{'file'}, '$maildir->deliver() actually delivers message to new file' );
is( $message->{'dir'} => 'new', '$maildir->deliver() delivers mail to "new" queue' );
my $old_file = $message->{'file'};
lives_ok {
$message->move('INBOX');
}
'$maildir->move() successfully moves message from INBOX.new to INBOX';
my $new_file = $message->{'file'};
isnt( $old_file => $new_file, '$maildir->move() actually relocated message from INBOX.new to INBOX' );
note('Testing message flags; first, with no flags set');
ok( !$message->passed, '$maildir->passed() returns false' );
ok( !$message->replied, '$maildir->replied() returns false' );
ok( !$message->seen, '$maildir->seen() returns false' );
ok( !$message->trashed, '$maildir->trashed() returns false' );
ok( !$message->draft, '$maildir->draft() returns false' );
ok( !$message->flagged, '$maildir->flagged() returns false' );
my $flags = 'PRSTDF';
my $flaglen = length $flags;
my $found = $message->flags();
for ( my $i = 0; $i < $flaglen; $i++ ) {
my $flag = substr $flags, $i, 1;
is( index( $found, $flag ) => -1, '$maildir->flags() does not indicate flag ' . $flag . ' yet' );
}
note("Setting message flags $flags");
lives_ok {
$message->mark($flags);
}
'$message->mark() does not die() when setting message flags ' . $flags;
$found = $message->flags;
for ( my $i = 0; $i < $flaglen; $i++ ) {
my $flag = substr $flags, $i, 1;
ok( index( $found, $flag ) >= 0, '$maildir->flags() indicates flag ' . $flag );
}
ok( $message->passed, '$maildir->passed() returns true' );
ok( $message->replied, '$maildir->replied() returns true' );
ok( $message->seen, '$maildir->seen() returns true' );
ok( $message->trashed, '$maildir->trashed() returns true' );
ok( $message->draft, '$maildir->draft() returns true' );
ok( $message->flagged, '$maildir->flagged() returns true' );
}
{
my $tmpdir = File::Temp::tempdir( 'cleanup' => 1 );
my $maildir = Mail::Dir->open(
$tmpdir,
'create' => 1,
'maildir++' => 1
);
my %TESTS = (
'INBOX' => $tmpdir,
'INBOX.foo' => "$tmpdir/.INBOX.foo",
'INBOX.bar' => "$tmpdir/.INBOX.bar",
'Spam' => "$tmpdir/.Spam",
'Dating.PlentyOfFish' => "$tmpdir/.Dating.PlentyOfFish",
'Dating.OkCupid' => "$tmpdir/.Dating.OkCupid"
);
( run in 1.549 second using v1.01-cache-2.11-cpan-71847e10f99 )