mirror of
https://github.com/zoriya/octokit.net.git
synced 2026-06-07 20:30:41 +00:00
added more payload types and tests
This commit is contained in:
@@ -226,33 +226,295 @@ namespace Octokit.Tests.Clients
|
||||
}
|
||||
}
|
||||
|
||||
private Dictionary<string, Type> _activityTypes = new Dictionary<string, Type>
|
||||
private readonly Dictionary<string, Type> _activityTypes = new Dictionary<string, Type>
|
||||
{
|
||||
{"commit_comment", typeof(CommitCommentPayload)},
|
||||
{"create", typeof(ActivityPayload)}
|
||||
{"fork", typeof(ForkEventPayload)},
|
||||
{"issue_comment", typeof(IssueCommentPayload)},
|
||||
{"issues", typeof(IssueEventPayload)},
|
||||
{"pull_request", typeof(PullRequestEventPayload)},
|
||||
{"pull_request_review_comment", typeof(PullRequestCommentPayload)},
|
||||
{"push", typeof(PushEventPayload)},
|
||||
{"watch", typeof(StarredEventPayload)},
|
||||
{"unknown", typeof(ActivityPayload)}
|
||||
};
|
||||
|
||||
[Fact]
|
||||
public async void DeserializesPayloadCorrectly()
|
||||
public async void DeserializesPayloadToCorrectType()
|
||||
{
|
||||
_activityTypes.ToList().ForEach(async kvp =>
|
||||
{
|
||||
var jsonObj = new JsonObject {{ "type", kvp.Key }, { "repo", new object() }, {"payload", new
|
||||
var jsonObj = new JsonObject {{ "type", kvp.Key }, {"payload", new
|
||||
{
|
||||
repository = new Repository()
|
||||
}} };
|
||||
var responseString = String.Format("[{0}]", jsonObj);
|
||||
repository = new
|
||||
{
|
||||
id = 1337
|
||||
},
|
||||
sender = new
|
||||
{
|
||||
id = 1337
|
||||
}
|
||||
}}};
|
||||
|
||||
var httpClientMock = Substitute.For<IHttpClient>();
|
||||
httpClientMock.Send(Arg.Is((IRequest r) => r.Endpoint.ToString().Contains("events")), Arg.Any<CancellationToken>()).Returns(Task.FromResult(
|
||||
new Response(HttpStatusCode.Accepted, responseString, new Dictionary<string, string>(), "application/json") as IResponse));
|
||||
var client = GetTestingEventsClient(jsonObj);
|
||||
|
||||
var client = new EventsClient(new ApiConnection(new Connection(new ProductHeaderValue("mock"), httpClientMock)));
|
||||
var activities = await client.GetAll();
|
||||
Assert.Equal(1, activities.Count);
|
||||
Assert.Equal(kvp.Value, activities.FirstOrDefault().Payload.GetType());
|
||||
Assert.NotNull(activities.FirstOrDefault().Payload.Repository);
|
||||
var activity = activities.FirstOrDefault();
|
||||
Assert.Equal(kvp.Value, activity.Payload.GetType());
|
||||
Assert.NotNull(activity.Payload.Repository);
|
||||
Assert.NotNull(activity.Payload.Sender);
|
||||
Assert.Equal(1337, activity.Payload.Repository.Id);
|
||||
Assert.Equal(1337, activity.Payload.Sender.Id);
|
||||
});
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async void DeserializesCommitCommentEventCorrectly()
|
||||
{
|
||||
var jsonObj = new JsonObject
|
||||
{
|
||||
{ "type", "commit_comment" },
|
||||
{
|
||||
"payload", new
|
||||
{
|
||||
comment = new
|
||||
{
|
||||
id = 1337
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var client = GetTestingEventsClient(jsonObj);
|
||||
var activities = await client.GetAll();
|
||||
Assert.Equal(1, activities.Count);
|
||||
|
||||
var payload = activities.FirstOrDefault().Payload as CommitCommentPayload;
|
||||
Assert.Equal(1337, payload.Comment.Id);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async void DeserializesForkEventCorrectly()
|
||||
{
|
||||
var jsonObj = new JsonObject
|
||||
{
|
||||
{ "type", "fork" },
|
||||
{
|
||||
"payload", new
|
||||
{
|
||||
forkee = new
|
||||
{
|
||||
id = 1337
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var client = GetTestingEventsClient(jsonObj);
|
||||
var activities = await client.GetAll();
|
||||
Assert.Equal(1, activities.Count);
|
||||
|
||||
var payload = activities.FirstOrDefault().Payload as ForkEventPayload;
|
||||
Assert.Equal(1337, payload.Forkee.Id);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async void DeserializesIssueCommentEventCorrectly()
|
||||
{
|
||||
var jsonObj = new JsonObject
|
||||
{
|
||||
{ "type", "issue_comment" },
|
||||
{
|
||||
"payload", new
|
||||
{
|
||||
action = "created",
|
||||
issue = new
|
||||
{
|
||||
number = 1337
|
||||
},
|
||||
comment = new
|
||||
{
|
||||
id = 1337
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var client = GetTestingEventsClient(jsonObj);
|
||||
var activities = await client.GetAll();
|
||||
Assert.Equal(1, activities.Count);
|
||||
|
||||
var payload = activities.FirstOrDefault().Payload as IssueCommentPayload;
|
||||
Assert.Equal("created", payload.Action);
|
||||
Assert.Equal(1337, payload.Comment.Id);
|
||||
Assert.Equal(1337, payload.Issue.Number);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async void DeserializesIssueEventCorrectly()
|
||||
{
|
||||
var jsonObj = new JsonObject
|
||||
{
|
||||
{ "type", "issues" },
|
||||
{
|
||||
"payload", new
|
||||
{
|
||||
action = "assigned",
|
||||
issue = new
|
||||
{
|
||||
number = 1337
|
||||
},
|
||||
assignee = new
|
||||
{
|
||||
id = 1337
|
||||
},
|
||||
label = new
|
||||
{
|
||||
name = "bug"
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var client = GetTestingEventsClient(jsonObj);
|
||||
var activities = await client.GetAll();
|
||||
Assert.Equal(1, activities.Count);
|
||||
|
||||
var payload = activities.FirstOrDefault().Payload as IssueEventPayload;
|
||||
Assert.Equal("assigned", payload.Action);
|
||||
Assert.Equal(1337, payload.Issue.Number);
|
||||
Assert.Equal(1337, payload.Assignee.Id);
|
||||
Assert.Equal("bug", payload.Label.Name);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async void DeserializesPullRequestEventCorrectly()
|
||||
{
|
||||
var jsonObj = new JsonObject
|
||||
{
|
||||
{ "type", "pull_request" },
|
||||
{
|
||||
"payload", new
|
||||
{
|
||||
action = "assigned",
|
||||
number = 1337,
|
||||
pull_request = new
|
||||
{
|
||||
title = "PR Title"
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var client = GetTestingEventsClient(jsonObj);
|
||||
var activities = await client.GetAll();
|
||||
Assert.Equal(1, activities.Count);
|
||||
|
||||
var payload = activities.FirstOrDefault().Payload as PullRequestEventPayload;
|
||||
Assert.Equal("assigned", payload.Action);
|
||||
Assert.Equal(1337, payload.Number);
|
||||
Assert.Equal("PR Title", payload.PullRequest.Title);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async void DeserializesPullRequestCommentEventCorrectly()
|
||||
{
|
||||
var jsonObj = new JsonObject
|
||||
{
|
||||
{ "type", "pull_request_review_comment" },
|
||||
{
|
||||
"payload", new
|
||||
{
|
||||
action = "assigned",
|
||||
pull_request = new
|
||||
{
|
||||
title = "PR Title"
|
||||
},
|
||||
comment = new
|
||||
{
|
||||
id = 1337
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var client = GetTestingEventsClient(jsonObj);
|
||||
var activities = await client.GetAll();
|
||||
Assert.Equal(1, activities.Count);
|
||||
|
||||
var payload = activities.FirstOrDefault().Payload as PullRequestCommentPayload;
|
||||
Assert.Equal("assigned", payload.Action);
|
||||
Assert.Equal("PR Title", payload.PullRequest.Title);
|
||||
Assert.Equal(1337, payload.Comment.Id);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async void DeserializesPushEventCorrectly()
|
||||
{
|
||||
var jsonObj = new JsonObject
|
||||
{
|
||||
{ "type", "push" },
|
||||
{
|
||||
"payload", new
|
||||
{
|
||||
head = "head",
|
||||
@ref = "ref",
|
||||
size = 1337,
|
||||
commits = new []
|
||||
{
|
||||
new
|
||||
{
|
||||
message = "message"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var client = GetTestingEventsClient(jsonObj);
|
||||
var activities = await client.GetAll();
|
||||
Assert.Equal(1, activities.Count);
|
||||
|
||||
var payload = activities.FirstOrDefault().Payload as PushEventPayload;
|
||||
Assert.Equal("head", payload.Head);
|
||||
Assert.Equal("ref", payload.Ref);
|
||||
Assert.Equal(1337, payload.Size);
|
||||
Assert.NotNull(payload.Commits);
|
||||
Assert.Equal(1, payload.Commits.Count);
|
||||
Assert.Equal("message", payload.Commits.FirstOrDefault().Message);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async void DeserializesStarredEventCorrectly()
|
||||
{
|
||||
var jsonObj = new JsonObject
|
||||
{
|
||||
{ "type", "watch" },
|
||||
{
|
||||
"payload", new
|
||||
{
|
||||
action = "started"
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var client = GetTestingEventsClient(jsonObj);
|
||||
var activities = await client.GetAll();
|
||||
Assert.Equal(1, activities.Count);
|
||||
|
||||
var payload = activities.FirstOrDefault().Payload as StarredEventPayload;
|
||||
Assert.Equal("started", payload.Action);
|
||||
}
|
||||
|
||||
private EventsClient GetTestingEventsClient(JsonObject response)
|
||||
{
|
||||
var responseString = response.ToString();
|
||||
var httpClientMock = Substitute.For<IHttpClient>();
|
||||
httpClientMock.Send(Arg.Is((IRequest r) => r.Endpoint.ToString().Contains("events")), Arg.Any<CancellationToken>()).Returns(Task.FromResult(
|
||||
new Response(HttpStatusCode.Accepted, responseString, new Dictionary<string, string>(), "application/json") as IResponse));
|
||||
|
||||
return new EventsClient(new ApiConnection(new Connection(new ProductHeaderValue("mock"), httpClientMock)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -162,6 +162,20 @@ namespace Octokit.Internal
|
||||
{
|
||||
case "commit_comment":
|
||||
return typeof(CommitCommentPayload);
|
||||
case "fork":
|
||||
return typeof(ForkEventPayload);
|
||||
case "issue_comment":
|
||||
return typeof(IssueCommentPayload);
|
||||
case "issues":
|
||||
return typeof(IssueEventPayload);
|
||||
case "pull_request":
|
||||
return typeof(PullRequestEventPayload);
|
||||
case "pull_request_review_comment":
|
||||
return typeof(PullRequestCommentPayload);
|
||||
case "push":
|
||||
return typeof(PushEventPayload);
|
||||
case "watch":
|
||||
return typeof(StarredEventPayload);
|
||||
}
|
||||
return typeof(ActivityPayload);
|
||||
}
|
||||
|
||||
@@ -3,5 +3,6 @@
|
||||
public class ActivityPayload
|
||||
{
|
||||
public Repository Repository { get; set; }
|
||||
public User Sender { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,5 @@
|
||||
public class CommitCommentPayload : ActivityPayload
|
||||
{
|
||||
public CommitComment Comment { get; set; }
|
||||
|
||||
public User Sender { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Octokit.Models.Response.ActivityPayloads
|
||||
{
|
||||
public class ForkEventPayload : ActivityPayload
|
||||
{
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Forkee")]
|
||||
public Repository Forkee { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
namespace Octokit.Models.Response.ActivityPayloads
|
||||
{
|
||||
public class IssueCommentPayload : ActivityPayload
|
||||
{
|
||||
// should always be "created" according to github api docs
|
||||
public string Action { get; set; }
|
||||
public Issue Issue { get; set; }
|
||||
public IssueComment Comment { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Octokit.Models.Response.ActivityPayloads
|
||||
{
|
||||
public class IssueEventPayload : ActivityPayload
|
||||
{
|
||||
public string Action { get; set; }
|
||||
public Issue Issue { get; set; }
|
||||
public User Assignee { get; set; }
|
||||
public Label Label { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Octokit.Models.Response.ActivityPayloads
|
||||
{
|
||||
public class PullRequestCommentPayload : ActivityPayload
|
||||
{
|
||||
public string Action { get; set; }
|
||||
public PullRequest PullRequest { get; set; }
|
||||
public PullRequestReviewComment Comment { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Octokit.Models.Response.ActivityPayloads
|
||||
{
|
||||
public class PullRequestEventPayload : ActivityPayload
|
||||
{
|
||||
public string Action { get; set; }
|
||||
public int Number { get; set; }
|
||||
|
||||
public PullRequest PullRequest { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Octokit.Models.Response.ActivityPayloads
|
||||
{
|
||||
public class PushEventPayload : ActivityPayload
|
||||
{
|
||||
public string Head { get; set; }
|
||||
public string Ref { get; set; }
|
||||
public int Size { get; set; }
|
||||
public IReadOnlyList<Commit> Commits { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
namespace Octokit.Models.Response.ActivityPayloads
|
||||
{
|
||||
public class StarredEventPayload : ActivityPayload
|
||||
{
|
||||
public string Action { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -122,6 +122,13 @@
|
||||
<Compile Include="Models\Response\AccountType.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\ActivityPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\CommitCommentPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\ForkEventPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\IssueCommentPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\IssueEventPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\PullRequestCommentPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\PullRequestEventPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\PushEventPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\StarredEventPayload.cs" />
|
||||
<Compile Include="Models\Response\Author.cs" />
|
||||
<Compile Include="Models\Response\Branch.cs" />
|
||||
<Compile Include="Models\Response\Commit.cs" />
|
||||
|
||||
@@ -212,6 +212,13 @@
|
||||
<Compile Include="Models\Response\Activity.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\ActivityPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\CommitCommentPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\ForkEventPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\IssueCommentPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\IssueEventPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\PullRequestCommentPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\PullRequestEventPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\PushEventPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\StarredEventPayload.cs" />
|
||||
<Compile Include="Models\Response\ApiError.cs" />
|
||||
<Compile Include="Models\Response\ApiErrorDetail.cs" />
|
||||
<Compile Include="Models\Response\Application.cs" />
|
||||
|
||||
@@ -217,6 +217,13 @@
|
||||
<Compile Include="Models\Response\Activity.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\ActivityPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\CommitCommentPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\ForkEventPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\IssueCommentPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\IssueEventPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\PullRequestCommentPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\PullRequestEventPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\PushEventPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\StarredEventPayload.cs" />
|
||||
<Compile Include="Models\Response\ApiError.cs" />
|
||||
<Compile Include="Models\Response\ApiErrorDetail.cs" />
|
||||
<Compile Include="Models\Response\Application.cs" />
|
||||
|
||||
@@ -94,6 +94,13 @@
|
||||
<Compile Include="Models\Request\CommitRequest.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\ActivityPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\CommitCommentPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\ForkEventPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\IssueCommentPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\IssueEventPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\PullRequestCommentPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\PullRequestEventPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\PushEventPayload.cs" />
|
||||
<Compile Include="Models\Response\ActivityPayloads\StarredEventPayload.cs" />
|
||||
<Compile Include="Models\Response\CombinedCommitStatus.cs" />
|
||||
<Compile Include="Models\Response\CommitContent.cs" />
|
||||
<Compile Include="Models\Response\Merge.cs" />
|
||||
|
||||
Reference in New Issue
Block a user