added test and bugfix for merging querystring parameters

This commit is contained in:
Brendan Forster
2013-11-05 12:43:24 +11:00
parent 32deb28cbb
commit d0e021e8a9
2 changed files with 28 additions and 0 deletions
@@ -62,6 +62,21 @@ namespace Octokit.Tests.Helpers
Assert.Equal(uri, uriWithNullParameters);
}
[Fact]
public void CombinesExistingParametersWithNewParameters()
{
var uri = new Uri("https://api.github.com/repositories/1/milestones?state=closed&sort=due_date&direction=asc&page=2");
var parameters = new Dictionary<string, string> { { "state", "open" }, { "sort", "other"} };
var actual = uri.ApplyParameters(parameters);
Assert.True(actual.Query.Contains("state=open"));
Assert.True(actual.Query.Contains("sort=other"));
Assert.True(actual.Query.Contains("direction=asc"));
Assert.True(actual.Query.Contains("page=2"));
}
[Fact]
public void EnsuresArgumentNotNull()
{
+13
View File
@@ -12,6 +12,19 @@ namespace Octokit
if (parameters == null || !parameters.Any()) return uri;
var existingParameters = uri.Query.Split(new[] { '&' })
.ToDictionary(
key => key.Substring(0, key.IndexOf('=')),
value => value.Substring(value.IndexOf('=') + 1));
foreach (var existing in existingParameters)
{
if (!parameters.ContainsKey(existing.Key))
{
parameters.Add(existing);
}
}
string query = String.Join("&", parameters.Select(kvp => kvp.Key + "=" + kvp.Value));
if (uri.IsAbsoluteUri)
{