From a0ab99f73703988d491ec5282c2b2f08741b31aa Mon Sep 17 00:00:00 2001 From: "Daniel J. Summers" Date: Sat, 20 Jan 2024 13:45:56 -0500 Subject: [PATCH] Add unquoted relative URL support --- src/MyWebLog.Domain/ViewModels.fs | 4 +++- src/MyWebLog.Tests/ViewModelsTests.fs | 21 ++++++++++++++++----- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/MyWebLog.Domain/ViewModels.fs b/src/MyWebLog.Domain/ViewModels.fs index c5c93a3..b7620c9 100644 --- a/src/MyWebLog.Domain/ViewModels.fs +++ b/src/MyWebLog.Domain/ViewModels.fs @@ -21,7 +21,9 @@ module PublicHelpers = /// post text let addBaseToRelativeUrls extra (text: string) = if extra = "" then text - else text.Replace("href=\"/", $"href=\"{extra}/").Replace("src=\"/", $"src=\"{extra}/") + else + text.Replace("href=\"/", $"href=\"{extra}/").Replace("href=/", $"href={extra}/") + .Replace("src=\"/", $"src=\"{extra}/").Replace("src=/", $"src={extra}/") /// The model used to display the admin dashboard diff --git a/src/MyWebLog.Tests/ViewModelsTests.fs b/src/MyWebLog.Tests/ViewModelsTests.fs index 86bc476..44847e4 100644 --- a/src/MyWebLog.Tests/ViewModelsTests.fs +++ b/src/MyWebLog.Tests/ViewModelsTests.fs @@ -8,16 +8,27 @@ open NodaTime /// Unit tests for the addBaseToRelativeUrls helper function let addBaseToRelativeUrlsTests = testList "PublicHelpers.addBaseToRelativeUrls" [ - test "succeeds when there is no extra URL path" { - let testText = """Howdy>""" + test "succeeds for quoted URLs when there is no extra URL path" { + let testText = """""" let modified = addBaseToRelativeUrls "" testText Expect.equal modified testText "The text should not have been modified" } - test "succeeds with an extra URL path" { + test "succeeds for quoted URLs with an extra URL path" { let testText = - """link""" let expected = - """link""" + Expect.equal (addBaseToRelativeUrls "/a/b" testText) expected "Relative URLs not modified correctly" + } + test "succeeds for unquoted URLs when there is no extra URL path" { + let testText = "" + let modified = addBaseToRelativeUrls "" testText + Expect.equal modified testText "The text should not have been modified" + } + test "succeeds for unquoted URLs with an extra URL path" { + let testText = "link" + let expected = + "link" Expect.equal (addBaseToRelativeUrls "/a/b" testText) expected "Relative URLs not modified correctly" } ]