From 05d6c578b36d62c6714a4ae95ff7b66b0584cd07 Mon Sep 17 00:00:00 2001 From: chylex <contact@chylex.com> Date: Tue, 26 Jun 2018 11:19:44 +0200 Subject: [PATCH] Move InjectedHTML unit tests to xUnit and rename Inject method --- Core/Notification/FormNotificationMain.cs | 2 +- .../FormNotificationScreenshotable.cs | 2 +- Data/InjectedHTML.cs | 2 +- lib/TweetTest.Unit/Data/TestInjectedHTML.fs | 49 ++++++++++++++ lib/TweetTest.Unit/TweetTest.Unit.fsproj | 1 + tests/Data/TestInjectedHTML.cs | 64 ------------------- tests/UnitTests.csproj | 1 - 7 files changed, 53 insertions(+), 68 deletions(-) create mode 100644 lib/TweetTest.Unit/Data/TestInjectedHTML.fs delete mode 100644 tests/Data/TestInjectedHTML.cs diff --git a/Core/Notification/FormNotificationMain.cs b/Core/Notification/FormNotificationMain.cs index 6a779494..f75b0a1d 100644 --- a/Core/Notification/FormNotificationMain.cs +++ b/Core/Notification/FormNotificationMain.cs @@ -263,7 +263,7 @@ protected override string GetTweetHTML(TweetNotification tweet){ string html = base.GetTweetHTML(tweet); foreach(InjectedHTML injection in plugins.NotificationInjections){ - html = injection.Inject(html); + html = injection.InjectInto(html); } return html; diff --git a/Core/Notification/Screenshot/FormNotificationScreenshotable.cs b/Core/Notification/Screenshot/FormNotificationScreenshotable.cs index 03968951..7fffd165 100644 --- a/Core/Notification/Screenshot/FormNotificationScreenshotable.cs +++ b/Core/Notification/Screenshot/FormNotificationScreenshotable.cs @@ -47,7 +47,7 @@ protected override string GetTweetHTML(TweetNotification tweet){ string html = tweet.GenerateHtml("td-screenshot"); foreach(InjectedHTML injection in plugins.NotificationInjections){ - html = injection.Inject(html); + html = injection.InjectInto(html); } return html; diff --git a/Data/InjectedHTML.cs b/Data/InjectedHTML.cs index 6b797b48..147ce5ab 100644 --- a/Data/InjectedHTML.cs +++ b/Data/InjectedHTML.cs @@ -16,7 +16,7 @@ public InjectedHTML(Position position, string search, string html){ this.html = html; } - public string Inject(string targetHTML){ + public string InjectInto(string targetHTML){ int index = targetHTML.IndexOf(search, StringComparison.Ordinal); if (index == -1){ diff --git a/lib/TweetTest.Unit/Data/TestInjectedHTML.fs b/lib/TweetTest.Unit/Data/TestInjectedHTML.fs new file mode 100644 index 00000000..9d9c8208 --- /dev/null +++ b/lib/TweetTest.Unit/Data/TestInjectedHTML.fs @@ -0,0 +1,49 @@ +namespace Unit.Data.InjectedHTML + +open Xunit +open TweetDuck.Data + + +module Inject = + let before = InjectedHTML.Position.Before + let after = InjectedHTML.Position.After + + [<Fact>] + let ``injecting string before searched string works`` () = + Assert.Equal("<p>source[left]<br>code</p>", InjectedHTML(before, "<br>", "[left]").InjectInto("<p>source<br>code</p>")) + + [<Fact>] + let ``injecting string after searched string works`` () = + Assert.Equal("<p>source<br>[right]code</p>", InjectedHTML(after, "<br>", "[right]").InjectInto("<p>source<br>code</p>")) + + [<Fact>] + let ``injecting string at the beginning works`` () = + Assert.Equal("[start]<p>source<br>code</p>", InjectedHTML(before, "<p>", "[start]").InjectInto("<p>source<br>code</p>")) + + [<Fact>] + let ``injecting string at the end works`` () = + Assert.Equal("<p>source<br>code</p>[end]", InjectedHTML(after, "</p>", "[end]").InjectInto("<p>source<br>code</p>")) + + [<Fact>] + let ``injection only triggers for first occurrence of searched string`` () = + Assert.Equal("<p>source[left]<br>code</p><br>", InjectedHTML(before, "<br>", "[left]").InjectInto("<p>source<br>code</p><br>")) + Assert.Equal("<p>source<br>[right]code</p><br>", InjectedHTML(after, "<br>", "[right]").InjectInto("<p>source<br>code</p><br>")) + + [<Fact>] + let ``empty searched string injects at the beginning`` () = + Assert.Equal("[start]<p>source<br>code</p>", InjectedHTML(before, "", "[start]").InjectInto("<p>source<br>code</p>")) + Assert.Equal("[start]<p>source<br>code</p>", InjectedHTML(after, "", "[start]").InjectInto("<p>source<br>code</p>")) + + [<Fact>] + let ``injecting empty string does not modify source`` () = + Assert.Equal("<p>source<br>code</p>", InjectedHTML(before, "<br>", "").InjectInto("<p>source<br>code</p>")) + Assert.Equal("<p>source<br>code</p>", InjectedHTML(after, "<br>", "").InjectInto("<p>source<br>code</p>")) + + [<Fact>] + let ``failed match does not modify source`` () = + Assert.Equal("<p>source<br>code</p>", InjectedHTML(before, "<wrong>", "[left]").InjectInto("<p>source<br>code</p>")) + Assert.Equal("<p>source<br>code</p>", InjectedHTML(after, "<wrong>", "[right]").InjectInto("<p>source<br>code</p>")) + + [<Fact>] + let ``invalid position does not modify source`` () = + Assert.Equal("<p>source<br>code</p>", InjectedHTML(enum<_>(1000), "<br>", "[somewhere]").InjectInto("<p>source<br>code</p>")) diff --git a/lib/TweetTest.Unit/TweetTest.Unit.fsproj b/lib/TweetTest.Unit/TweetTest.Unit.fsproj index 1d84a65e..de98d8c3 100644 --- a/lib/TweetTest.Unit/TweetTest.Unit.fsproj +++ b/lib/TweetTest.Unit/TweetTest.Unit.fsproj @@ -65,6 +65,7 @@ <Compile Include="Core\TestBrowserUtils.fs" /> <Compile Include="Core\TestStringUtils.fs" /> <Compile Include="Core\TestTwitterUtils.fs" /> + <Compile Include="Data\TestInjectedHTML.fs" /> <Compile Include="Data\TestResult.fs" /> </ItemGroup> <ItemGroup> diff --git a/tests/Data/TestInjectedHTML.cs b/tests/Data/TestInjectedHTML.cs deleted file mode 100644 index 7add28df..00000000 --- a/tests/Data/TestInjectedHTML.cs +++ /dev/null @@ -1,64 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using TweetDuck.Data; - -namespace UnitTests.Data{ - [TestClass] - public class TestInjectedHTML{ - private static IEnumerable<InjectedHTML.Position> Positions => Enum.GetValues(typeof(InjectedHTML.Position)).Cast<InjectedHTML.Position>(); - - [TestMethod] - public void TestFailedMatches(){ - foreach(var pos in Positions){ - Assert.AreEqual(string.Empty, new InjectedHTML(pos, "b", "b").Inject(string.Empty)); - Assert.AreEqual("aaaa", new InjectedHTML(pos, "b", "b").Inject("aaaa")); - } - } - - [TestMethod] - public void TestEmptySearch(){ - foreach(var pos in Positions){ - Assert.AreEqual("b", new InjectedHTML(pos, string.Empty, "b").Inject(string.Empty)); - Assert.AreEqual("baaaa", new InjectedHTML(pos, string.Empty, "b").Inject("aaaa")); - } - } - - [TestMethod] - public void TestEmptyHTML(){ - foreach(var pos in Positions){ - Assert.AreEqual(string.Empty, new InjectedHTML(pos, string.Empty, string.Empty).Inject(string.Empty)); - Assert.AreEqual("aaaa", new InjectedHTML(pos, string.Empty, string.Empty).Inject("aaaa")); - Assert.AreEqual("aaaa", new InjectedHTML(pos, "a", string.Empty).Inject("aaaa")); - Assert.AreEqual("aaaa", new InjectedHTML(pos, "b", string.Empty).Inject("aaaa")); - } - } - - [TestMethod] - public void TestInvalidPosition(){ - Assert.AreEqual("aaaa", new InjectedHTML((InjectedHTML.Position)(Positions.Count()+1), "a", "b").Inject("aaaa")); - } - - [TestMethod] - public void TestPositions(){ - Assert.AreEqual("aaabcxaaa", new InjectedHTML(InjectedHTML.Position.Before, "x", "bc").Inject("aaaxaaa")); - Assert.AreEqual("aaaxbcaaa", new InjectedHTML(InjectedHTML.Position.After, "x", "bc").Inject("aaaxaaa")); - - Assert.AreEqual("bcxaaa", new InjectedHTML(InjectedHTML.Position.Before, "x", "bc").Inject("xaaa")); - Assert.AreEqual("xbcaaa", new InjectedHTML(InjectedHTML.Position.After, "x", "bc").Inject("xaaa")); - - Assert.AreEqual("aaabcx", new InjectedHTML(InjectedHTML.Position.Before, "x", "bc").Inject("aaax")); - Assert.AreEqual("aaaxbc", new InjectedHTML(InjectedHTML.Position.After, "x", "bc").Inject("aaax")); - } - - [TestMethod] - public void TestFirstOccurrence(){ - Assert.AreEqual("bcaaaa", new InjectedHTML(InjectedHTML.Position.Before, "a", "bc").Inject("aaaa")); - Assert.AreEqual("abcaaa", new InjectedHTML(InjectedHTML.Position.After, "a", "bc").Inject("aaaa")); - - Assert.AreEqual("bcaaaa", new InjectedHTML(InjectedHTML.Position.Before, "aa", "bc").Inject("aaaa")); - Assert.AreEqual("aabcaa", new InjectedHTML(InjectedHTML.Position.After, "aa", "bc").Inject("aaaa")); - } - } -} diff --git a/tests/UnitTests.csproj b/tests/UnitTests.csproj index f230356a..43f7284d 100644 --- a/tests/UnitTests.csproj +++ b/tests/UnitTests.csproj @@ -47,7 +47,6 @@ <Compile Include="Data\TestCombinedFileStream.cs" /> <Compile Include="Data\TestCommandLineArgs.cs" /> <Compile Include="Data\TestFileSerializer.cs" /> - <Compile Include="Data\TestInjectedHTML.cs" /> <Compile Include="Data\TestTwoKeyDictionary.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="UnitTestIO.cs" />