Skip to content

Commit f29c6db

Browse files
committed
Fix review issues
1 parent de4f779 commit f29c6db

6 files changed

Lines changed: 28 additions & 32 deletions

File tree

Source/Mockolate/Web/ItExtensions.HttpContent.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public TParameter WithHeaders(string name, HttpHeaderValue value)
6060
return GetThis;
6161
}
6262

63-
public TParameter WithHeaders(IEnumerable<KeyValuePair<string, HttpHeaderValue>> headers)
63+
public TParameter WithHeaders(params (string Name, HttpHeaderValue Value)[] headers)
6464
{
6565
_headers ??= new HttpHeadersMatcher();
6666
_headers.AddRequiredHeader(headers);

Source/Mockolate/Web/ItExtensions.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,19 @@ public static partial class ItExtensions
1717
{
1818
private sealed class HttpHeadersMatcher
1919
{
20-
private readonly List<KeyValuePair<string, HttpHeaderValue>> _requiredHeaders = [];
20+
private readonly List<(string Name, HttpHeaderValue Value)> _requiredHeaders = [];
2121

2222
public void AddRequiredHeader(string name, HttpHeaderValue value)
23-
=> _requiredHeaders.Add(new KeyValuePair<string, HttpHeaderValue>(name, value));
23+
=> _requiredHeaders.Add((name, value));
2424

25-
public void AddRequiredHeader(IEnumerable<KeyValuePair<string, HttpHeaderValue>> headers)
25+
public void AddRequiredHeader(IEnumerable<(string Name, HttpHeaderValue Value)> headers)
2626
=> _requiredHeaders.AddRange(headers);
2727

2828
public void AddRequiredHeader(string headers)
2929
=> _requiredHeaders.AddRange(ExtractHeaders(headers));
3030

3131
public bool Matches(HttpHeaders messageHeaders)
32-
=> _requiredHeaders.All(header => MatchesHeader(header.Key, header.Value, messageHeaders));
32+
=> _requiredHeaders.All(header => MatchesHeader(header.Name, header.Value, messageHeaders));
3333

3434
private static bool MatchesHeader(string name, HttpHeaderValue value, HttpHeaders messageHeaders)
3535
{
@@ -41,9 +41,9 @@ private static bool MatchesHeader(string name, HttpHeaderValue value, HttpHeader
4141
return values.Any(value.Matches);
4242
}
4343

44-
private static List<KeyValuePair<string, HttpHeaderValue>> ExtractHeaders(string headers)
44+
private static List<(string, HttpHeaderValue)> ExtractHeaders(string headers)
4545
{
46-
List<KeyValuePair<string, HttpHeaderValue>> headerList = new();
46+
List<(string, HttpHeaderValue)> headerList = new();
4747
using StringReader reader = new(headers);
4848
string? line = reader.ReadLine();
4949
while (!string.IsNullOrWhiteSpace(line))
@@ -55,7 +55,7 @@ private static List<KeyValuePair<string, HttpHeaderValue>> ExtractHeaders(string
5555
throw new ArgumentException("The header contained an invalid line: " + line, nameof(headers));
5656
}
5757

58-
headerList.Add(new KeyValuePair<string, HttpHeaderValue>(parts[0], parts[1].TrimStart(' ')));
58+
headerList.Add((parts[0].Trim(), parts[1].TrimStart(' ')));
5959
line = reader.ReadLine();
6060
}
6161

@@ -77,7 +77,7 @@ public interface IHttpHeaderParameter<out TParameter>
7777
/// <summary>
7878
/// Expects the <see cref="HttpContent" /> to contain the given <paramref name="headers" />.
7979
/// </summary>
80-
TParameter WithHeaders(IEnumerable<KeyValuePair<string, HttpHeaderValue>> headers);
80+
TParameter WithHeaders(params (string Name, HttpHeaderValue Value)[] headers);
8181

8282
/// <summary>
8383
/// Expects the <see cref="HttpContent" /> to contain the given <paramref name="headers" />.

Tests/Mockolate.Api.Tests/Expected/Mockolate_net10.0.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1859,7 +1859,9 @@ namespace Mockolate.Web
18591859
}
18601860
public interface IHttpHeaderParameter<out TParameter>
18611861
{
1862-
TParameter WithHeaders(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string, Mockolate.Web.HttpHeaderValue>> headers);
1862+
TParameter WithHeaders([System.Runtime.CompilerServices.TupleElementNames(new string[] {
1863+
"Name",
1864+
"Value"})] params System.ValueTuple<string, Mockolate.Web.HttpHeaderValue>[] headers);
18631865
TParameter WithHeaders(string headers);
18641866
TParameter WithHeaders(string name, Mockolate.Web.HttpHeaderValue value);
18651867
}

Tests/Mockolate.Api.Tests/Expected/Mockolate_net8.0.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1858,7 +1858,9 @@ namespace Mockolate.Web
18581858
}
18591859
public interface IHttpHeaderParameter<out TParameter>
18601860
{
1861-
TParameter WithHeaders(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string, Mockolate.Web.HttpHeaderValue>> headers);
1861+
TParameter WithHeaders([System.Runtime.CompilerServices.TupleElementNames(new string[] {
1862+
"Name",
1863+
"Value"})] params System.ValueTuple<string, Mockolate.Web.HttpHeaderValue>[] headers);
18621864
TParameter WithHeaders(string headers);
18631865
TParameter WithHeaders(string name, Mockolate.Web.HttpHeaderValue value);
18641866
}

Tests/Mockolate.Api.Tests/Expected/Mockolate_netstandard2.0.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1799,7 +1799,9 @@ namespace Mockolate.Web
17991799
}
18001800
public interface IHttpHeaderParameter<out TParameter>
18011801
{
1802-
TParameter WithHeaders(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string, Mockolate.Web.HttpHeaderValue>> headers);
1802+
TParameter WithHeaders([System.Runtime.CompilerServices.TupleElementNames(new string[] {
1803+
"Name",
1804+
"Value"})] params System.ValueTuple<string, Mockolate.Web.HttpHeaderValue>[] headers);
18031805
TParameter WithHeaders(string headers);
18041806
TParameter WithHeaders(string name, Mockolate.Web.HttpHeaderValue value);
18051807
}

Tests/Mockolate.Tests/Web/ItExtensionsTests.IsHttpContentTests.WithHeadersTests.cs

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -81,15 +81,10 @@ public async Task ShouldVerifyMultipleHeaderKeyCaseInsensitive(string key, bool
8181
{
8282
HttpClient httpClient = Mock.Create<HttpClient>();
8383
httpClient.SetupMock.Method
84-
.PostAsync(It.IsAny<Uri>(), It.IsHttpContent().WithHeaders(new Dictionary<string, HttpHeaderValue>
85-
{
86-
{
87-
"foo", "my-foo-value"
88-
},
89-
{
90-
"bar", "my-bar-value"
91-
},
92-
}))
84+
.PostAsync(It.IsAny<Uri>(), It.IsHttpContent()
85+
.WithHeaders(
86+
("foo", "my-foo-value"),
87+
("bar", "my-bar-value")))
9388
.ReturnsAsync(new HttpResponseMessage(HttpStatusCode.OK));
9489
StringContent content = new("");
9590
content.Headers.Add(key, "my-foo-value");
@@ -112,15 +107,10 @@ public async Task ShouldVerifyMultipleHeaderValueCaseSensitive(string value, boo
112107
{
113108
HttpClient httpClient = Mock.Create<HttpClient>();
114109
httpClient.SetupMock.Method
115-
.PostAsync(It.IsAny<Uri>(), It.IsHttpContent().WithHeaders(new Dictionary<string, HttpHeaderValue>
116-
{
117-
{
118-
"x-myHeader1", "foo"
119-
},
120-
{
121-
"x-myHeader2", "bar"
122-
},
123-
}))
110+
.PostAsync(It.IsAny<Uri>(), It.IsHttpContent()
111+
.WithHeaders(
112+
("x-myHeader1", "foo"),
113+
("x-myHeader2", "bar")))
124114
.ReturnsAsync(new HttpResponseMessage(HttpStatusCode.OK));
125115
StringContent content = new("");
126116
content.Headers.Add("x-myHeader1", value);
@@ -142,8 +132,8 @@ public async Task ShouldVerifyStringHeaders()
142132
httpClient.SetupMock.Method
143133
.PostAsync(It.IsAny<Uri>(), It.IsHttpContent()
144134
.WithHeaders("""
145-
x-myHeader1: foo
146-
x-myHeader3: baz
135+
x-myHeader1 : foo
136+
x-myHeader3: baz
147137
"""))
148138
.ReturnsAsync(new HttpResponseMessage(HttpStatusCode.OK));
149139
StringContent content = new("");

0 commit comments

Comments
 (0)