diff --git a/Octokit.Tests/Models/DeploymentTests.cs b/Octokit.Tests/Models/DeploymentTests.cs new file mode 100644 index 00000000..c408c759 --- /dev/null +++ b/Octokit.Tests/Models/DeploymentTests.cs @@ -0,0 +1,89 @@ +using Octokit.Internal; +using System; +using System.Collections.Generic; +using Xunit; + +namespace Octokit.Tests.Models +{ + public class DeploymentTests + { + [Fact] + public void CanDeserialize() + { + var expected = new Deployment { + Id = 1, + Sha = "topic-branch", + Url = "https://api.github.com/repos/octocat/example/deployments/1", + Payload = "{\"environment\":\"production\"}", + CreatedAt = DateTimeOffset.Parse("2012-07-20T01:19:13Z"), + UpdatedAt = DateTimeOffset.Parse("2012-07-20T01:19:13Z"), + Description = "Deploy request from hubot", + StatusesUrl = "https://api.github.com/repos/octocat/example/deployments/1/statuses" + }; + + var json = + @"{ + ""id"": 1, + ""sha"": ""topic-branch"", + ""url"": ""https://api.github.com/repos/octocat/example/deployments/1"", + ""creator"": { + ""login"": ""octocat"", + ""id"": 1, + ""avatar_url"": ""https://github.com/images/error/octocat_happy.gif"", + ""gravatar_id"": ""somehexcode"", + ""url"": ""https://api.github.com/users/octocat"", + ""html_url"": ""https://github.com/octocat"", + ""followers_url"": ""https://api.github.com/users/octocat/followers"", + ""following_url"": ""https://api.github.com/users/octocat/following{/other_user}"", + ""gists_url"": ""https://api.github.com/users/octocat/gists{/gist_id}"", + ""starred_url"": ""https://api.github.com/users/octocat/starred{/owner}{/repo}"", + ""subscriptions_url"": ""https://api.github.com/users/octocat/subscriptions"", + ""organizations_url"": ""https://api.github.com/users/octocat/orgs"", + ""repos_url"": ""https://api.github.com/users/octocat/repos"", + ""events_url"": ""https://api.github.com/users/octocat/events{/privacy}"", + ""received_events_url"": ""https://api.github.com/users/octocat/received_events"", + ""type"": ""User"", + ""site_admin"": false + }, + ""payload"": ""{\""environment\"":\""production\""}"", + ""created_at"": ""2012-07-20T01:19:13Z"", + ""updated_at"": ""2012-07-20T01:19:13Z"", + ""description"": ""Deploy request from hubot"", + ""statuses_url"": ""https://api.github.com/repos/octocat/example/deployments/1/statuses"" + }"; + + var actual = new SimpleJsonSerializer().Deserialize(json); + + Assert.Equal(expected, actual, new DeploymentEqualityComparer()); + } + } + + // Equaliy for the sake of testing serialization/deserialization. + // Actual production equality should most likely just be a check + // of `Url` equality. + public class DeploymentEqualityComparer : IEqualityComparer + { + public bool Equals(Deployment x, Deployment y) + { + if (x == null && y == null) + return true; + + if (x == null || y == null) + return false; + + return x.Id == y.Id && + x.Sha == y .Sha && + x.Url == y.Url && + x.Payload == y.Payload && + x.CreatedAt == y.CreatedAt && + x.UpdatedAt == y.UpdatedAt && + x.Description == y.Description && + x.StatusesUrl == y.StatusesUrl; + } + + public int GetHashCode(Deployment obj) + { + throw new NotImplementedException(); + } + } +} diff --git a/Octokit.Tests/Octokit.Tests.csproj b/Octokit.Tests/Octokit.Tests.csproj index 2a3a9e95..a4bc2d5b 100644 --- a/Octokit.Tests/Octokit.Tests.csproj +++ b/Octokit.Tests/Octokit.Tests.csproj @@ -117,6 +117,7 @@ +