diff --git a/starsky/starsky.feature.health/UpdateCheck/Services/SpecificVersionReleaseInfo.cs b/starsky/starsky.feature.health/UpdateCheck/Services/SpecificVersionReleaseInfo.cs
index 1cc51d705d..67e3da6fc7 100644
--- a/starsky/starsky.feature.health/UpdateCheck/Services/SpecificVersionReleaseInfo.cs
+++ b/starsky/starsky.feature.health/UpdateCheck/Services/SpecificVersionReleaseInfo.cs
@@ -85,11 +85,12 @@ internal string Parse(string json, string? latestVersion)
internal static string ConvertMarkdownLinkToHtml(string markdown)
{
// Regular expression to match Markdown links
+ // [Link text Here](https://link-url-here.org)
const string pattern = @"\[(.*?)\]\((.*?)\)";
// Replace Markdown links with HTML anchor tags
return Regex.Replace(markdown, pattern,
- "$1", RegexOptions.None,
+ "$1", RegexOptions.None,
TimeSpan.FromMilliseconds(100));
}
diff --git a/starsky/starskytest/starsky.feature.health/Services/SpecificVersionReleaseInfoTest.cs b/starsky/starskytest/starsky.feature.health/Services/SpecificVersionReleaseInfoTest.cs
index a91ac2ff03..4cb9a091a2 100644
--- a/starsky/starskytest/starsky.feature.health/Services/SpecificVersionReleaseInfoTest.cs
+++ b/starsky/starskytest/starsky.feature.health/Services/SpecificVersionReleaseInfoTest.cs
@@ -126,7 +126,7 @@ public async Task SpecificVersionMessage_CacheEnabledGetValue_SetInCache()
.BuildServiceProvider();
const string example =
- "{\n \"v0.6.0\" : {\n \"en\": \"Content\"\n },\n \"v0.6.0-beta.0\" : {\n \"en\": \"Content\"\n }\n}";
+ "{\n \"0.6.0\" : {\n \"en\": \"Content\"\n },\n \"0.6.0-beta.0\" : {\n \"en\": \"Content\"\n }\n}";
var memoryCache = serviceProvider.GetRequiredService();
@@ -157,4 +157,169 @@ public async Task SpecificVersionMessage_CacheEnabledGetValue_SetInCache()
Assert.IsNotNull(result);
Assert.AreEqual(example, result);
}
+
+ [TestMethod]
+ public void ParseTest_String_Empty()
+ {
+ var fakeIHttpProvider = new FakeIHttpProvider();
+
+ var httpClientHelper = new HttpClientHelper(fakeIHttpProvider, null, new FakeIWebLogger());
+
+ var specificVersionReleaseInfo =
+ new SpecificVersionReleaseInfo(httpClientHelper,
+ new AppSettings { AddMemoryCache = true }, null,
+ new FakeIWebLogger());
+
+ var result = specificVersionReleaseInfo.Parse(string.Empty, "0.6.0");
+ Assert.AreEqual(string.Empty, result);
+ }
+
+ [TestMethod]
+ public void ParseTest_VersionNotFound()
+ {
+ var fakeIHttpProvider = new FakeIHttpProvider();
+
+ var httpClientHelper = new HttpClientHelper(fakeIHttpProvider, null, new FakeIWebLogger());
+ const string example =
+ "{\n \"0.6.0\" : {\n \"en\": \"Content\"\n },\n \"0.6.0-beta.0\" : {\n \"en\": \"Content\"\n }\n}";
+
+
+ var specificVersionReleaseInfo =
+ new SpecificVersionReleaseInfo(httpClientHelper,
+ new AppSettings { AddMemoryCache = true }, null,
+ new FakeIWebLogger());
+
+ var result = specificVersionReleaseInfo.Parse(example, "0.1.0");
+ Assert.AreEqual(string.Empty, result);
+ }
+
+ [TestMethod]
+ public void ParseTest_VersionFound()
+ {
+ var fakeIHttpProvider = new FakeIHttpProvider();
+
+ var httpClientHelper = new HttpClientHelper(fakeIHttpProvider, null, new FakeIWebLogger());
+ const string example =
+ "{\n \"0.6.0\" : {\n \"en\": \"Content\"\n },\n \"0.6.0-beta.0\" : {\n \"en\": \"Content\"\n }\n}";
+
+
+ var specificVersionReleaseInfo =
+ new SpecificVersionReleaseInfo(httpClientHelper,
+ new AppSettings { AddMemoryCache = true }, null,
+ new FakeIWebLogger());
+
+ var result = specificVersionReleaseInfo.Parse(example, "0.6.0-beta.0");
+ Assert.AreEqual("Content", result);
+ }
+
+ [TestMethod]
+ public void ParseTest_InvalidJson()
+ {
+ var fakeIHttpProvider = new FakeIHttpProvider();
+
+ var httpClientHelper = new HttpClientHelper(fakeIHttpProvider, null, new FakeIWebLogger());
+ const string example =
+ "{\n \"0.6.0\" : {\n --";
+
+
+ var specificVersionReleaseInfo =
+ new SpecificVersionReleaseInfo(httpClientHelper,
+ new AppSettings { AddMemoryCache = true }, null,
+ new FakeIWebLogger());
+
+ var result = specificVersionReleaseInfo.Parse(example, "0.6.0-beta.0");
+ Assert.AreEqual(string.Empty, result);
+ }
+
+ [TestMethod]
+ public void ParseTest_LanguageKeyNotFound()
+ {
+ var fakeIHttpProvider = new FakeIHttpProvider();
+
+ var httpClientHelper = new HttpClientHelper(fakeIHttpProvider, null, new FakeIWebLogger());
+ const string example =
+ "{\n \"0.6.0\" : {\n }\n}";
+
+ var specificVersionReleaseInfo =
+ new SpecificVersionReleaseInfo(httpClientHelper,
+ new AppSettings { AddMemoryCache = true }, null,
+ new FakeIWebLogger());
+
+ var result = specificVersionReleaseInfo.Parse(example, "0.6.0");
+ Assert.AreEqual(string.Empty, result);
+ }
+
+ [TestMethod]
+ public void ParseTest_VersionFound_HtmlLink()
+ {
+ var fakeIHttpProvider = new FakeIHttpProvider();
+
+ var httpClientHelper = new HttpClientHelper(fakeIHttpProvider, null, new FakeIWebLogger());
+ const string example =
+ "{\n \"0.6.0\" : {\n \"en\": \"[Link text Here](https://link-url-here.org)\"\n },\n \"0.6.0-beta.0\" : {\n \"en\": \"Content\"\n }\n}";
+
+
+ var specificVersionReleaseInfo =
+ new SpecificVersionReleaseInfo(httpClientHelper,
+ new AppSettings { AddMemoryCache = true }, null,
+ new FakeIWebLogger());
+
+ var result = specificVersionReleaseInfo.Parse(example, "0.6.0");
+ Assert.AreEqual(
+ "Link text Here",
+ result);
+ }
+
+ [TestMethod]
+ public void ConvertMarkdownLinkToHtml_Test()
+ {
+ var markdownLinkToHtml = SpecificVersionReleaseInfo.ConvertMarkdownLinkToHtml(
+ "Content [Link text Here](https://link-url-here.org) " +
+ "[link1](https://example.com)");
+
+ Assert.AreEqual(
+ "Content Link text Here " +
+ "link1",
+ markdownLinkToHtml);
+ }
+
+ [TestMethod]
+ public async Task QuerySpecificVersionInfo_GetResult()
+ {
+ const string example =
+ "{\n \"0.6.0\" : {\n \"en\": \"Content\"\n },\n \"0.6.0-beta.0\" : {\n \"en\": \"Content\"\n }\n}";
+
+ var fakeIHttpProvider = new FakeIHttpProvider(new Dictionary
+ {
+ // Mocking the response from the fake HTTP provider
+ {
+ "https://" + SpecificVersionReleaseInfo.SpecificVersionReleaseInfoUrl,
+ new StringContent(example)
+ }
+ });
+
+ var httpClientHelper = new HttpClientHelper(fakeIHttpProvider, null, new FakeIWebLogger());
+ var specificVersionReleaseInfo =
+ new SpecificVersionReleaseInfo(httpClientHelper, null, null,
+ new FakeIWebLogger());
+
+ var result = await specificVersionReleaseInfo.QuerySpecificVersionInfo();
+
+ Assert.AreEqual(example, result);
+ }
+
+ [TestMethod]
+ public async Task QuerySpecificVersionInfo_NotFound()
+ {
+ var fakeIHttpProvider = new FakeIHttpProvider();
+
+ var httpClientHelper = new HttpClientHelper(fakeIHttpProvider, null, new FakeIWebLogger());
+ var specificVersionReleaseInfo =
+ new SpecificVersionReleaseInfo(httpClientHelper, null, null,
+ new FakeIWebLogger());
+
+ var result = await specificVersionReleaseInfo.QuerySpecificVersionInfo();
+
+ Assert.AreEqual(string.Empty, result);
+ }
}