diff --git a/VAR.WebFormsCore.Tests/Code/ExtensionMethodsTests.cs b/VAR.WebFormsCore.Tests/Code/ExtensionMethodsTests.cs index ff80344..8374787 100644 --- a/VAR.WebFormsCore.Tests/Code/ExtensionMethodsTests.cs +++ b/VAR.WebFormsCore.Tests/Code/ExtensionMethodsTests.cs @@ -97,7 +97,7 @@ public class ExtensionMethodsTests fakeWebContext.ResponseObject(new object()); Assert.Single(fakeWebContext.FakeWritePackages); - Assert.Equal("{ }", Encoding.UTF8.GetString(fakeWebContext.FakeWritePackages[0].Bin ?? Array.Empty())); + Assert.Equal("{ }", fakeWebContext.FakeWritePackages[0].ToString()); } #endregion ResponseObject diff --git a/VAR.WebFormsCore.Tests/Fakes/FakeWebContext.cs b/VAR.WebFormsCore.Tests/Fakes/FakeWebContext.cs index a49c361..c108a2f 100644 --- a/VAR.WebFormsCore.Tests/Fakes/FakeWebContext.cs +++ b/VAR.WebFormsCore.Tests/Fakes/FakeWebContext.cs @@ -1,3 +1,4 @@ +using System.Text; using VAR.WebFormsCore.Code; namespace VAR.WebFormsCore.Tests.Fakes; @@ -21,12 +22,6 @@ public class FakeWebContext : IWebContext public Dictionary RequestForm { get; } = new(); - public struct WritePackage - { - public string? Text { get; set; } - public byte[]? Bin { get; set; } - } - public List FakeWritePackages { get; } = new(); public void ResponseWrite(string text) @@ -79,4 +74,36 @@ public class FakeWebContext : IWebContext { throw new NotImplementedException(); } -} \ No newline at end of file +} + +public struct WritePackage +{ + public string? Text { get; set; } + public byte[]? Bin { get; set; } + + public override string ToString() + { + if (Text != null) + { + return Text; + } + + if (Bin == null) + { + return string.Empty; + } + + string text = Encoding.UTF8.GetString(Bin ?? Array.Empty()); + return text; + } +} + +public static class WritePackageExtensions +{ + public static string ToString(this List list, string separator) + { + IEnumerable listStrings = list.Select(x => x.ToString()); + string result = string.Join(separator, listStrings); + return result; + } +} diff --git a/VAR.WebFormsCore.Tests/Pages/FrmEchoTests.cs b/VAR.WebFormsCore.Tests/Pages/FrmEchoTests.cs new file mode 100644 index 0000000..756663b --- /dev/null +++ b/VAR.WebFormsCore.Tests/Pages/FrmEchoTests.cs @@ -0,0 +1,67 @@ +using VAR.WebFormsCore.Pages; +using VAR.WebFormsCore.Tests.Fakes; +using Xunit; + +namespace VAR.WebFormsCore.Tests.Pages; + +public class FrmEchoTests +{ + [Fact] + public void ProcessRequest__Empty__Empty() + { + FakeWebContext fakeWebContext = new(); + FrmEcho frmEcho = new(); + + frmEcho.ProcessRequest(fakeWebContext); + + string result = fakeWebContext.FakeWritePackages.ToString(""); + Assert.Equal( + expected: """ +
Header:{ }
+                        Query:{ }
+                        Form:{ }
+                        
+ """, + actual: result); + } + + [Fact] + public void ProcessRequest__OneQueryParameterGet__FormData() + { + FakeWebContext fakeWebContext = new(); + fakeWebContext.RequestQuery.Add("Test", "Value"); + FrmEcho frmEcho = new(); + + frmEcho.ProcessRequest(fakeWebContext); + + string result = fakeWebContext.FakeWritePackages.ToString(""); + Assert.Equal( + expected: """ +
Header:{ }
+                        Query:{ "Test": "Value" }
+                        Form:{ }
+                        
+ """, + actual: result); + } + + [Fact] + public void ProcessRequest__OneFormParameterPost__FormData() + { + FakeWebContext fakeWebContext = new(requestMethod: "POST"); + fakeWebContext.RequestForm.Add("Test", "Value"); + FrmEcho frmEcho = new(); + + frmEcho.ProcessRequest(fakeWebContext); + + string result = fakeWebContext.FakeWritePackages.ToString(""); + Assert.Equal( + expected: """ +
Header:{ }
+                        Query:{ }
+                        Form:{ "Test": "Value" }
+                        
+ """, + actual: result); + } +} \ No newline at end of file