Chnage LastApiInfo to GetLastApiInfo with cloned version

This commit is contained in:
Mark Taylor
2015-08-16 21:27:26 +01:00
parent 5bd1f1d6c5
commit b2c7e1c2a7
13 changed files with 224 additions and 33 deletions
+6 -6
View File
@@ -112,14 +112,14 @@ namespace Octokit.Tests
public async Task ReturnsNullIfNew()
{
var connection = Substitute.For<IConnection>();
connection.LastApiInfo.Returns((ApiInfo)null);
connection.GetLastApiInfo().Returns((ApiInfo)null);
var client = new GitHubClient(connection);
var result = client.LastApiInfo;
var result = client.GetLastApiInfo();
Assert.Null(result);
var temp = connection.Received(1).LastApiInfo;
var temp = connection.Received(1).GetLastApiInfo();
}
[Fact]
@@ -160,14 +160,14 @@ namespace Octokit.Tests
new RateLimit(100, 75, 1372700873)
);
var connection = Substitute.For<IConnection>();
connection.LastApiInfo.Returns(apiInfo);
connection.GetLastApiInfo().Returns(apiInfo);
var client = new GitHubClient(connection);
var result = client.LastApiInfo;
var result = client.GetLastApiInfo();
Assert.NotNull(result);
var temp = connection.Received(1).LastApiInfo;
var temp = connection.Received(1).GetLastApiInfo();
}
}
+100
View File
@@ -0,0 +1,100 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xunit;
namespace Octokit.Tests.Http
{
public class ApiInfoTests
{
public class TheMethods
{
[Fact]
public void CanClone()
{
var original = new ApiInfo(
new Dictionary<string, Uri>
{
{
"next",
new Uri("https://api.github.com/repos/rails/rails/issues?page=4&per_page=5")
},
{
"last",
new Uri("https://api.github.com/repos/rails/rails/issues?page=131&per_page=5")
},
{
"first",
new Uri("https://api.github.com/repos/rails/rails/issues?page=1&per_page=5")
},
{
"prev",
new Uri("https://api.github.com/repos/rails/rails/issues?page=2&per_page=5")
}
},
new List<string>
{
"user",
},
new List<string>
{
"user",
"public_repo",
"repo",
"gist"
},
"5634b0b187fd2e91e3126a75006cc4fa",
new RateLimit(100, 75, 1372700873)
);
var clone = original.Clone();
// Note the use of Assert.NotSame tests for value types - this should continue to test should the underlying
// model are changed to Object types
Assert.NotSame(original, clone);
Assert.Equal(original.Etag, clone.Etag);
Assert.NotSame(original.Etag, clone.Etag);
Assert.Equal(original.AcceptedOauthScopes.Count, clone.AcceptedOauthScopes.Count);
Assert.NotSame(original.AcceptedOauthScopes, clone.AcceptedOauthScopes);
for (int i = 0; i < original.AcceptedOauthScopes.Count; i++)
{
Assert.Equal(original.AcceptedOauthScopes[i], clone.AcceptedOauthScopes[i]);
Assert.NotSame(original.AcceptedOauthScopes[i], clone.AcceptedOauthScopes[i]);
}
Assert.Equal(original.Links.Count, clone.Links.Count);
Assert.NotSame(original.Links, clone.Links);
for (int i = 0; i < original.Links.Count; i++)
{
Assert.Equal(original.Links.Keys.ToArray()[i], clone.Links.Keys.ToArray()[i]);
Assert.NotSame(original.Links.Keys.ToArray()[i], clone.Links.Keys.ToArray()[i]);
Assert.Equal(original.Links.Values.ToArray()[i].ToString(), clone.Links.Values.ToArray()[i].ToString());
Assert.NotSame(original.Links.Values.ToArray()[i], clone.Links.Values.ToArray()[i]);
}
Assert.Equal(original.OauthScopes.Count, clone.OauthScopes.Count);
Assert.NotSame(original.OauthScopes, clone.OauthScopes);
for (int i = 0; i < original.OauthScopes.Count; i++)
{
Assert.Equal(original.OauthScopes[i], clone.OauthScopes[i]);
Assert.NotSame(original.OauthScopes[i], clone.OauthScopes[i]);
}
Assert.NotSame(original.RateLimit, clone.RateLimit);
Assert.Equal(original.RateLimit.Limit, clone.RateLimit.Limit);
Assert.NotSame(original.RateLimit.Limit, clone.RateLimit.Limit);
Assert.Equal(original.RateLimit.Remaining, clone.RateLimit.Remaining);
Assert.NotSame(original.RateLimit.Remaining, clone.RateLimit.Remaining);
Assert.Equal(original.RateLimit.ResetAsUtcEpochSeconds, clone.RateLimit.ResetAsUtcEpochSeconds);
Assert.NotSame(original.RateLimit.ResetAsUtcEpochSeconds, clone.RateLimit.ResetAsUtcEpochSeconds);
Assert.Equal(original.RateLimit.Reset, clone.RateLimit.Reset);
Assert.NotSame(original.RateLimit.Reset, clone.RateLimit.Reset);
}
}
}
}
+2 -2
View File
@@ -630,7 +630,7 @@ namespace Octokit.Tests.Http
httpClient,
Substitute.For<IJsonSerializer>());
var result = connection.LastApiInfo;
var result = connection.GetLastApiInfo();
Assert.Null(result);
}
@@ -692,7 +692,7 @@ namespace Octokit.Tests.Http
connection.Get<PullRequest>(new Uri("https://example.com"), TimeSpan.MaxValue);
var result = connection.LastApiInfo;
var result = connection.GetLastApiInfo();
// No point checking all of the values as they are tested elsewhere
// Just provde that the ApiInfo is populated
+24
View File
@@ -109,6 +109,30 @@ namespace Octokit.Tests.Http
{
Assert.Throws<ArgumentNullException>(() => new RateLimit(null));
}
}
public class TheMethods
{
[Fact]
public void CanClone()
{
var original = new RateLimit(100, 42, 1372700873);
var clone = original.Clone();
// Note the use of Assert.NotSame tests for value types - this should continue to test should the underlying
// model are changed to Object types
Assert.NotSame(original, clone);
Assert.Equal(original.Limit, clone.Limit);
Assert.NotSame(original.Limit, clone.Limit);
Assert.Equal(original.Remaining, clone.Remaining);
Assert.NotSame(original.Remaining, clone.Remaining);
Assert.Equal(original.ResetAsUtcEpochSeconds, clone.ResetAsUtcEpochSeconds);
Assert.NotSame(original.ResetAsUtcEpochSeconds, clone.ResetAsUtcEpochSeconds);
Assert.Equal(original.Reset, clone.Reset);
Assert.NotSame(original.Reset, clone.Reset);
}
}
}
}
+1
View File
@@ -130,6 +130,7 @@
<Compile Include="Clients\OrganizationsClientTests.cs" />
<Compile Include="Helpers\Arg.cs" />
<Compile Include="Helpers\AssertEx.cs" />
<Compile Include="Http\ApiInfoTests.cs" />
<Compile Include="Http\HttpClientAdapterTests.cs" />
<Compile Include="Http\ApiInfoParserTests.cs">
<SubType>Code</SubType>