aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2016-06-10 15:59:49 +0100
committerdakkar <dakkar@thenautilus.net>2016-06-10 15:59:49 +0100
commit7b2bbcf10cab05962e0d128c285e0201401d2e14 (patch)
tree2e376fcaaac563eff3f03147ab5be7a8ab2d13fc /lib
parentmove Test2::* tests to subdir (diff)
downloadSietima-7b2bbcf10cab05962e0d128c285e0201401d2e14.tar.gz
Sietima-7b2bbcf10cab05962e0d128c285e0201401d2e14.tar.bz2
Sietima-7b2bbcf10cab05962e0d128c285e0201401d2e14.zip
some Message tests
also, a probably useless ->clone
Diffstat (limited to 'lib')
-rw-r--r--lib/Sietima/Message.pm20
1 files changed, 17 insertions, 3 deletions
diff --git a/lib/Sietima/Message.pm b/lib/Sietima/Message.pm
index 7202269..a864c02 100644
--- a/lib/Sietima/Message.pm
+++ b/lib/Sietima/Message.pm
@@ -15,6 +15,7 @@ has mail => (
has from => (
is => 'ro',
isa => Address,
+ coerce => AddressFromStr,
required => 1,
);
@@ -26,13 +27,26 @@ has to => (
required => 1,
);
+sub _clone_address {
+ Email::Address->new(
+ $_[0]->phrase,
+ $_[0]->address,
+ $_[0]->comment,
+ $_[0]->original,
+ );
+}
+
+sub _clone_mail {
+ Email::MIME->new($_[0]->as_string);
+}
+
sub clone {
my ($self,$args) = @_;
return ref($self)->new({
- map {
- $_ => $args->{$_} // $self->$_,
- } qw(mail from to),
+ from => $args->{from} || _clone_address($self->from),
+ to => $args->{to} || [ map { _clone_address($_) } @{$self->to} ],
+ mail => $args->{mail} || _clone_mail($self->mail),
});
}