use v6.d;
use Test;
use MaildirIndexer::Email;
subtest 'no values' => {
my $email = MaildirIndexer::Email.new(
headers => %(),
body => '',
);
is-deeply $email.message-id, '', 'message id should parse';
is-deeply $email.refs, @(), 'refs should parse';
is-deeply $email.addresses, @(), 'addresses should parse';
}
subtest 'bad values' => {
my $email = MaildirIndexer::Email.new(
headers => %(
message-id => 'some stuff here',
in-reply-to => 'none',
references => 'bad garbage',
reply-to => 'random <stuff> @',
from => 'not@ @an.address',
),
body => '',
);
is-deeply $email.message-id, '', 'message id should parse';
is-deeply $email.refs, @(), 'refs should parse';
is-deeply $email.addresses, @(), 'addresses should parse';
}
subtest 'all values' => {
my $email = MaildirIndexer::Email.new(
headers => %(
message-id => 'some <stuff> here',
in-reply-to => '<one>',
references => 'bad <two> garbage <three>',
reply-to => 'foo <one@me>',
from => 'me@my.domain',
to => 'one <one@your.domain>, two <two@their.domain>, etc',
),
body => '',
);
is-deeply $email.message-id, 'stuff', 'message id should parse';
is-deeply $email.refs, qw[one three two], 'refs should parse';
is-deeply( $email.addresses.sort,
@('me@my.domain','one@me','one@your.domain','two@their.domain'),
'addresses should parse' );
}
done-testing;