From c22f43ed90e509e01d7bd1dd0bdd0fc3e5244394 Mon Sep 17 00:00:00 2001 From: "james.z" Date: Wed, 28 Dec 2022 05:27:43 +0000 Subject: [PATCH] fix ReplaceRenderer class. Method Parse, NullReferenceException --- .../Defaults/ReplaceRenderer.cs | 2 +- .../ReplaceRendererTest.cs | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 test/FluentEmail.Core.Tests/ReplaceRendererTest.cs diff --git a/src/FluentEmail.Core/Defaults/ReplaceRenderer.cs b/src/FluentEmail.Core/Defaults/ReplaceRenderer.cs index 1eb8799e..7065fe2b 100644 --- a/src/FluentEmail.Core/Defaults/ReplaceRenderer.cs +++ b/src/FluentEmail.Core/Defaults/ReplaceRenderer.cs @@ -10,7 +10,7 @@ public string Parse(string template, T model, bool isHtml = true) { foreach (PropertyInfo pi in model.GetType().GetRuntimeProperties()) { - template = template.Replace($"##{pi.Name}##", pi.GetValue(model, null).ToString()); + template = template.Replace($"##{pi.Name}##", pi.GetValue(model, null)?.ToString()); } return template; diff --git a/test/FluentEmail.Core.Tests/ReplaceRendererTest.cs b/test/FluentEmail.Core.Tests/ReplaceRendererTest.cs new file mode 100644 index 00000000..29447ba8 --- /dev/null +++ b/test/FluentEmail.Core.Tests/ReplaceRendererTest.cs @@ -0,0 +1,25 @@ +using FluentEmail.Core.Defaults; +using FluentEmail.Core.Interfaces; +using FluentEmail.Core.Models; +using NUnit.Framework; + +namespace FluentEmail.Core.Tests +{ + [TestFixture] + public class ReplaceRendererTest + { + [Test] + public void ModelPropertyValueIsNull_Test() + { + ITemplateRenderer templateRenderer = new ReplaceRenderer(); + + var address = new Address("james@test.com", "james"); + Assert.True(address.Name == "james"); + var template = "this is name: ##Name##"; + Assert.True("this is name: james" == templateRenderer.Parse(template, address)); + + address.Name = null; + Assert.True("this is name: " == templateRenderer.Parse(template, address)); + } + } +} \ No newline at end of file