@@ -2,13 +2,17 @@ defmodule Bamboo.MailerTest do
22 use ExUnit.Case
33 alias Bamboo.Email
44
5- @ mailer_config adapter: __MODULE__ . DefaultAdapter , foo: :bar , interceptors: nil
5+ @ mailer_config adapter: __MODULE__ . DefaultAdapter , foo: :bar , interceptors: nil , before_interceptors: nil
66
77 setup context do
88 config =
99 Keyword . merge (
1010 @ mailer_config ,
11- [ adapter: context [ :adapter ] , interceptors: context [ :interceptors ] ] ,
11+ [
12+ adapter: context [ :adapter ] ,
13+ before_interceptors: context [ :before_interceptors ] ,
14+ interceptors: context [ :interceptors ]
15+ ] ,
1216 fn
1317 _key , default , nil -> default
1418 _key , _default , override -> override
@@ -459,6 +463,44 @@ defmodule Bamboo.MailerTest do
459463 end
460464 end
461465
466+ describe "before_interceptors" do
467+ @ tag before_interceptors: [ Bamboo.InactiveUsersInterceptor ]
468+ test "deliver_now/1 must apply before_interceptors and block email if user is inactive" do
469+ email = new_email ( to: % Bamboo.User { email: "inactive@bar.com" , active: false } )
470+ assert { :ok , % Bamboo.Email { blocked: true } } = Mailer . deliver_now ( email )
471+ end
472+
473+ @ tag before_interceptors: [ Bamboo.InactiveUsersInterceptor ]
474+ test "deliver_later/1 must apply before_interceptors and block email if user is inactive" do
475+ email = new_email ( to: % Bamboo.User { email: "inactive@bar.com" , active: false } )
476+ assert { :ok , % Bamboo.Email { blocked: true } } = Mailer . deliver_later ( email )
477+ end
478+
479+ @ tag before_interceptors: [ Bamboo.InactiveUsersInterceptor ]
480+ test "deliver_now/1 must apply before_interceptors and block email if user has no email" do
481+ email = new_email ( to: % Bamboo.User { email: nil } )
482+ assert { :ok , % Bamboo.Email { blocked: true } } = Mailer . deliver_now ( email )
483+ end
484+
485+ @ tag before_interceptors: [ Bamboo.InactiveUsersInterceptor ]
486+ test "deliver_later/1 must apply before_interceptors and block email if user has no email" do
487+ email = new_email ( to: % Bamboo.User { email: nil } )
488+ assert { :ok , % Bamboo.Email { blocked: true } } = Mailer . deliver_later ( email )
489+ end
490+
491+ @ tag before_interceptors: [ Bamboo.InactiveUsersInterceptor ]
492+ test "deliver_now/1 does not block regular email on deliver now" do
493+ email = new_email ( to: % Bamboo.User { name: "John Doe" , email: "active@bar.com" , active: true } )
494+ assert { :ok , % Bamboo.Email { blocked: false , to: [ { "John Doe" , "active@bar.com" } ] } } = Mailer . deliver_now ( email )
495+ end
496+
497+ @ tag before_interceptors: [ Bamboo.InactiveUsersInterceptor ]
498+ test "deliver_later/1 does not block regular email on deliver later" do
499+ email = new_email ( to: % Bamboo.User { name: "John Doe" , email: "active@bar.com" , active: true } )
500+ assert { :ok , % Bamboo.Email { blocked: false } } = Mailer . deliver_later ( email )
501+ end
502+ end
503+
462504 describe "interceptors" do
463505 @ tag interceptors: [ Bamboo.DenyListInterceptor , Bamboo.EnvInterceptor ]
464506 test "deliver_now/1 must apply interceptors and send email if not intercepted" do
0 commit comments