From bf8876bfa374aff536999b72e49f46fe1be08a5e Mon Sep 17 00:00:00 2001 From: Rolf Kristensen Date: Sat, 26 Aug 2023 18:56:01 +0200 Subject: [PATCH] Improve code-coverage by testing batch of LogEvents (#174) --- src/NLog.MailKit/MailTarget.cs | 2 +- .../MailTargetIntegrationTests.cs | 36 +++++++++++++++---- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/src/NLog.MailKit/MailTarget.cs b/src/NLog.MailKit/MailTarget.cs index e10cf11..3fbbd4e 100644 --- a/src/NLog.MailKit/MailTarget.cs +++ b/src/NLog.MailKit/MailTarget.cs @@ -240,7 +240,7 @@ public Layout Body public Layout ReplaceNewlineWithBrTagInHtml { get; set; } /// - /// Gets or sets a value indicating the SMTP client timeout. + /// Gets or sets a value indicating the SMTP client timeout (in milliseconds) /// /// Warning: zero is not infinite waiting public Layout Timeout { get; set; } = 10000; diff --git a/test/NLog.MailKit.Tests/IntegrationTests/MailTargetIntegrationTests.cs b/test/NLog.MailKit.Tests/IntegrationTests/MailTargetIntegrationTests.cs index 2c6f8fd..e161733 100644 --- a/test/NLog.MailKit.Tests/IntegrationTests/MailTargetIntegrationTests.cs +++ b/test/NLog.MailKit.Tests/IntegrationTests/MailTargetIntegrationTests.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.IO; +using System.Linq; using System.Threading; using System.Threading.Tasks; using NLog.Config; @@ -65,6 +66,29 @@ public void SendMailWithHeader() }, 1); } + [Fact] + public void SendMailBatch() + { + var transactions = SendTest(() => + { + var mailTarget = CreateNLogConfig(); + var loggingConfiguration = new LoggingConfiguration(); + loggingConfiguration.AddRuleForAllLevels(new NLog.Targets.Wrappers.BufferingTargetWrapper(mailTarget)); + NLog.LogManager.Configuration = loggingConfiguration; + + var logger = LogManager.GetLogger("logger1"); + logger.Info("hello starting mail!"); + }, 1); + + var mailMessage = transactions.LastOrDefault()?.Message as SmtpServer.Mail.ITextMessage; + Assert.NotNull(mailMessage); + mailMessage.Content.Position = 0; + var mailBody = new StreamReader(mailMessage.Content).ReadToEnd(); + Assert.NotNull(mailBody); + Assert.Contains("hello starting mail!", mailBody); + Assert.Contains("hello first mail!", mailBody); + } + private static IList SendTest(Action createConfig, int toCount) { var countdownEvent = new CountdownEvent(1); @@ -75,15 +99,15 @@ private static IList SendTest(Action createConfig, int toCo var cancellationToken = new CancellationTokenSource(); Task.Run(async () => await smtpServer.StartAsync(cancellationToken.Token), cancellationToken.Token); - { - createConfig(); - var logger = LogManager.GetLogger("logger1"); - logger.Info("hello first mail!"); + createConfig(); - countdownEvent.Wait(TimeSpan.FromSeconds(10)); - } + var logger = LogManager.GetLogger("logger1"); + logger.Info("hello first mail!"); + + LogManager.Flush(); + countdownEvent.Wait(TimeSpan.FromSeconds(10)); cancellationToken.Cancel(false); var receivedTransactions = messageStore.ReceivedTransactions;