Bug 26705: Regression tests
authorTomas Cohen Arazi <tomascohen@theke.io>
Tue, 23 Mar 2021 13:56:59 +0000 (10:56 -0300)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Thu, 1 Apr 2021 15:06:40 +0000 (17:06 +0200)
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
t/Koha/Email.t

index 1c46fcc..7522693 100755 (executable)
@@ -17,7 +17,9 @@
 
 use Modern::Perl;
 
-use Test::More tests => 2;
+use Test::More tests => 3;
+
+use Test::MockModule;
 use Test::Exception;
 
 use t::lib::Mocks;
@@ -175,3 +177,62 @@ subtest 'create() tests' => sub {
         is( "$@", q{Invalid 'bcc' parameter: not_an_email}, 'Exception message correct' );
     };
 };
+
+subtest 'send_or_die() tests' => sub {
+
+    plan tests => 4;
+
+    my $email;
+    my $args;
+
+    my $transport = "Hi there!";
+
+    my $mocked_email_simple = Test::MockModule->new('Email::Sender::Simple');
+    $mocked_email_simple->mock(
+        'send',
+        sub {
+            my @params = @_;
+            $email = $params[1];
+            $args  = $params[2];
+            return;
+        }
+    );
+
+    my $html_body = '<h1>Title</h1><p>Message</p>';
+    my $THE_email = Koha::Email->create(
+        {
+            from      => 'from@example.com',
+            to        => 'to@example.com',
+            cc        => 'cc@example.com',
+            reply_to  => 'reply_to@example.com',
+            sender    => 'sender@example.com',
+            html_body => $html_body
+        }
+    );
+
+    my @bcc = ( 'bcc_1@example.com', 'bcc_2@example.com' );
+
+    $THE_email->bcc(@bcc);
+
+    is(
+        $THE_email->email->header_str('Bcc'),
+        join( ', ', @bcc ),
+        'Bcc header set correctly'
+    );
+
+    $THE_email->send_or_die(
+        { transport => $transport, to => ['tomasito@mail.com'] } );
+    is_deeply( $args->{to}, ['tomasito@mail.com'],
+        'If explicitly passed, "to" is preserved' );
+
+    $THE_email->send_or_die( { transport => $transport } );
+    is_deeply(
+        $args->{to},
+        [
+            'to@example.com',    'cc@example.com',
+            'bcc_1@example.com', 'bcc_2@example.com'
+        ],
+        'If explicitly passed, "to" is preserved'
+    );
+    is( $email->header_str('Bcc'), undef, 'The Bcc header is unset' );
+};