public async Task ReceiveCancelCommand_PrExists_MergeCommandIsRemoved() { var owner = Guid.NewGuid().ToString(); var repo = Guid.NewGuid().ToString(); var payloadString = await File.ReadAllTextAsync("../../../DummyEvents/IssueComment.json"); var payload = JsonConvert.DeserializeObject <dynamic>(payloadString); // Issue cancel comment payload["repository"]["name"] = repo; payload["repository"]["owner"]["login"] = owner; payload["issue"]["number"] = PR_ID; payload["comment"]["body"] = "miro cancel"; // Insert PR await mergeRequestsCollection.Insert(owner, repo, PR_ID); // Update with MergeCommand await mergeRequestsCollection.UpdateMergeRequest(owner, repo, PR_ID, true, DateTime.UtcNow); // Mock Comments var createCommentCallId = await MockCommentGithubCallHelper.MockCommentGithubCallCancel(owner, repo, PR_ID); // Action await SendWebhookRequest("issue_comment", JsonConvert.SerializeObject(payload)); // Assert var mergeRequest = await mergeRequestsCollection.Collection.Find(d => d["Owner"] == owner && d["Repo"] == repo && d["PrId"] == PR_ID).FirstOrDefaultAsync(); Assert.NotNull(mergeRequest); Assert.False((bool)mergeRequest["ReceivedMergeCommand"]); Assert.True(mergeRequest["ReceivedMergeCommandTimestamp"] == DateTime.MaxValue); var createCommentCall = await GetCall(createCommentCallId); Assert.True(createCommentCall.HasBeenMade, "a cancel comment should have been posted to the pr"); }
public async Task MultiplePullRequests_PushEventOnMaster_NextPrDidntGiveMergeCommand_NextNextPrBranchIsUpdated() { var owner = Guid.NewGuid().ToString(); var repo = Guid.NewGuid().ToString(); var secondBranchName = Guid.NewGuid().ToString(); var thirdBranchName = Guid.NewGuid().ToString(); var secondPrId = 100; var thirdPrId = 101; // Issue Push event var payloadString = await File.ReadAllTextAsync("../../../DummyEvents/Push.json"); var payload = JsonConvert.DeserializeObject <dynamic>(payloadString); payload["repository"]["name"] = repo; payload["repository"]["owner"]["login"] = owner; // Insert Merge Requests await mergeRequestsCollection.InsertWithTestChecksSuccessAndMergeCommand(owner, repo, thirdPrId, thirdBranchName); await mergeRequestsCollection.InsertWithTestChecksSuccess(owner, repo, secondPrId, secondBranchName); // Make second PR older than the first PR await mergeRequestsCollection.UpdateMergeRequest(owner, repo, secondPrId, false, DateTime.UtcNow.AddMinutes(-10)); await mergeRequestsCollection.UpdateMergeRequest(owner, repo, thirdPrId, true, DateTime.UtcNow.AddMinutes(-5)); // Mock Github call var updateBranchCallId = await MockGithubCall("post", MergesUrlFor(owner, repo), "ok", false); var getConfigFileCallId = await MockRepoConfigGithubCallHelper.MockRepoConfigGithubCall(owner, repo, "strategyOldest.yml"); await MockRequiredChecksGithubCallHelper.MockRequiredChecks(owner, repo); // ACTION await SendWebhookRequest("push", JsonConvert.SerializeObject(payload)); // ASSERT var updateBranchCall = await GetCall(updateBranchCallId); var getConfigFileCall = await GetCall(getConfigFileCallId); Assert.True(updateBranchCall.HasBeenMade, "update branch call should have been made on the third branch"); Assert.True(getConfigFileCall.HasBeenMade, "should fetch new config"); Assert.Equal(thirdBranchName, updateBranchCall.Details.Body["base"]); }