@@ -226,7 +226,7 @@ describe('EmailSender', () => {
226226 new Error ( 'Temporary error' )
227227 ) ;
228228
229- await expect ( emailSender . send ( defaultMockEmail ) ) . rejects . toThrow (
229+ await expect ( emailSender . send ( defaultMockEmail , true ) ) . rejects . toThrow (
230230 'Temporary error'
231231 ) ;
232232
@@ -260,7 +260,7 @@ describe('EmailSender', () => {
260260 new Error ( 'Temporary error' )
261261 ) ;
262262
263- await expect ( emailSender . send ( defaultMockEmail ) ) . rejects . toThrow (
263+ await expect ( emailSender . send ( defaultMockEmail , true ) ) . rejects . toThrow (
264264 'Temporary error'
265265 ) ;
266266
@@ -294,7 +294,7 @@ describe('EmailSender', () => {
294294 const error = new Error ( 'SMTP connection failed' ) ;
295295 mockTransport . sendMail . mockRejectedValueOnce ( error ) ;
296296
297- await expect ( emailSender . send ( defaultMockEmail ) ) . rejects . toThrow (
297+ await expect ( emailSender . send ( defaultMockEmail , true ) ) . rejects . toThrow (
298298 'SMTP connection failed'
299299 ) ;
300300
@@ -331,7 +331,7 @@ describe('EmailSender', () => {
331331 const appError = AppError . emailBouncedHard ( 100_000_000_000 ) ;
332332 mockTransport . sendMail . mockRejectedValueOnce ( appError ) ;
333333
334- await expect ( emailSender . send ( defaultMockEmail ) ) . rejects . toThrow ( ) ;
334+ await expect ( emailSender . send ( defaultMockEmail , true ) ) . rejects . toThrow ( ) ;
335335
336336 expect ( mockTransport . sendMail ) . toHaveBeenCalledTimes ( 1 ) ;
337337 expect ( mockLogger . error ) . toHaveBeenCalledWith (
@@ -378,7 +378,7 @@ describe('EmailSender', () => {
378378
379379 mockTransport . sendMail . mockRejectedValueOnce ( smtpError ) ;
380380
381- await expect ( emailSender . send ( emailWithCc ) ) . rejects . toThrow ( ) ;
381+ await expect ( emailSender . send ( emailWithCc , true ) ) . rejects . toThrow ( ) ;
382382
383383 expect ( mockLogger . error ) . toHaveBeenCalledWith (
384384 'mailer.send.error' ,
@@ -621,7 +621,7 @@ describe('EmailSender', () => {
621621 mockLogger
622622 ) ;
623623
624- await expect ( emailSender . send ( defaultMockEmail ) ) . rejects . toThrow (
624+ await expect ( emailSender . send ( defaultMockEmail , true ) ) . rejects . toThrow (
625625 'Temporary SMTP error'
626626 ) ;
627627
@@ -640,6 +640,28 @@ describe('EmailSender', () => {
640640 }
641641 ) ;
642642 expect ( mockStatsd . increment ) . toHaveBeenCalledTimes ( 4 ) ;
643+
644+ // Make sure issue is still sent to sentry
645+ expect ( mockSentryCaptureException ) . toHaveBeenCalledWith ( error ) ;
646+ } ) ;
647+
648+ it ( 'suppresses error with directive' , async ( ) => {
649+ const error = new Error ( 'Temporary SMTP error' ) ;
650+
651+ mockTransport . sendMail . mockRejectedValue ( error ) ;
652+
653+ emailSender = new EmailSender (
654+ configWithRetry ,
655+ mockBounces ,
656+ mockStatsd ,
657+ mockLogger
658+ ) ;
659+
660+ // Shouldn't error...
661+ await emailSender . send ( defaultMockEmail , false ) ;
662+
663+ // But should capture
664+ expect ( mockSentryCaptureException ) . toHaveBeenCalledWith ( error ) ;
643665 } ) ;
644666 } ) ;
645667 describe ( 'calculateBackoffDelay' , ( ) => {
0 commit comments