From 92e479457cf6f2c94b8457b1ac649a8511720c0a Mon Sep 17 00:00:00 2001 From: Robert Marshall Date: Fri, 3 Jan 2020 18:58:27 +0000 Subject: [PATCH] Fix post title generation --- Website.Tests/Models/BlogPostTests.cs | 11 +++++++++++ Website/Models/BlogPost.cs | 3 ++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Website.Tests/Models/BlogPostTests.cs b/Website.Tests/Models/BlogPostTests.cs index c80bebf..7c268de 100644 --- a/Website.Tests/Models/BlogPostTests.cs +++ b/Website.Tests/Models/BlogPostTests.cs @@ -13,6 +13,17 @@ namespace Website.Tests.Models { post.Url.Should().Be("new-title"); } + [Theory] + [InlineData("new:title", "new-title")] + [InlineData("new: title", "new-title")] + [InlineData("new$title", "new-title")] + [InlineData("new TITle", "new-title")] + public void UpdateTitle_WithUnsafeCharsInTitle_RegeneratesSafeUrl(string title, string url) { + var post = new BlogPost(); + post.UpdateTitle(title); + post.Url.Should().Be(url); + } + [Fact] public void UpdateDraft_WithContent_UpdatesDraftProperty() { var post = new BlogPost(); diff --git a/Website/Models/BlogPost.cs b/Website/Models/BlogPost.cs index b77bec1..a90abdb 100644 --- a/Website/Models/BlogPost.cs +++ b/Website/Models/BlogPost.cs @@ -1,4 +1,5 @@ using System; +using System.Text.RegularExpressions; using Website.Data.States; namespace Website.Models @@ -29,7 +30,7 @@ namespace Website.Models public int UserId { get; private set; } private void GenerateUrl() { - Url = Title.Replace(' ', '-'); + Url = Regex.Replace(Title, @"[^a-zA-Z0-9\.]+", "-").ToLower(); } public void UpdateTitle(string title) {