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

use lib 't/lib';

$ENV{EMAIL_SENDER_TRANSPORT} = 'Test::Email::Sender::Transport::FailEvery';
$ENV{EMAIL_SENDER_TRANSPORT_transport_class} = 'Test';
$ENV{EMAIL_SENDER_TRANSPORT_fail_every} = 2;
use Email::Sender::Simple qw(sendmail);

my $email = <<'.';
From: V <number.5@gov.uk>
To: II <number.2@green.dome.il>
Subject: jolly good show

Wot, wot!

-- 
v
.

subtest "first send: works" => sub {
  my $result = Email::Sender::Simple->send($email);

  isa_ok($result, 'Email::Sender::Success');

  my $env_transport = Email::Sender::Simple->default_transport;
  my @deliveries = $env_transport->transport->deliveries;

  is(@deliveries, 1, "we sent one message");

  is_deeply(
    $deliveries[0]->{envelope},
    {
      to   => [ 'number.2@green.dome.il' ],
      from => 'number.5@gov.uk',
    },
    "correct envelope deduced from message",
  );
};

subtest "second one: fails" => sub {
  my $ok    = eval { Email::Sender::Simple->send($email); };
  my $error = $@;
  ok( ! $ok, "it failed");
  isa_ok($error, 'Email::Sender::Failure');
};

done_testing;