The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;

use Test::More tests => 5;

use Email::MIME::Kit;

my $kit = Email::MIME::Kit->new({
  source => 't/kits/test.mkit',
});

my $email_1 = $kit->assemble({
  name => 'Reticulo Johnson',
  game => "eatin' pancakes",
  postlude => '  OUT!',
});


my $body_1 = $email_1->body;
$body_1 =~ s{[\n\r]*\z}{}g;
is(
  $body_1,
  q{Reticulo Johnson is my name, eatin' pancakes is my game.  OUT!},
  "template stuff happened",
);

my $email_2 = $kit->assemble({
  name => 'Bryan Allen',
  game => "nukin' jar cheese",
});

my $body_2 = $email_2->body;
$body_2 =~ s{[\n\r]*\z}{}g;
is(
  $body_2,
  q{Bryan Allen is my name, nukin' jar cheese is my game.},
  "template stuff happened",
);

my $fail_kit = Email::MIME::Kit->new({
  source => 't/kits/fail.mkit',
});

my $lived = eval { $fail_kit->assemble({ game => 'failing' }); 1 };

ok(! $lived, "we die if the template can't be assembled");

my $fail2_kit = Email::MIME::Kit->new({
  source => 't/kits/fail2.mkit',
});

my $lived2 = eval { $fail2_kit->assemble({ game => 'failing' }); 1 };
my $error  = $@;

ok(! $lived2, "we die if the template can't be assembled");
like($@, qr/DEATH/, "...and the error message is what we wanted");