diff --git a/Miro.Tests/DummyConfigYamls/default.yml b/Miro.Tests/DummyConfigYamls/default.yml index 8985d04..dcc3a52 100644 --- a/Miro.Tests/DummyConfigYamls/default.yml +++ b/Miro.Tests/DummyConfigYamls/default.yml @@ -1,3 +1,2 @@ -deleteAfterMerge: false mergePolicy: whitelist-strict updateBranchStrategy: all \ No newline at end of file diff --git a/Miro.Tests/DummyConfigYamls/quiet.yml b/Miro.Tests/DummyConfigYamls/quiet.yml new file mode 100644 index 0000000..84db931 --- /dev/null +++ b/Miro.Tests/DummyConfigYamls/quiet.yml @@ -0,0 +1,3 @@ +mergePolicy: whitelist-strict +updateBranchStrategy: all +quiet: true \ No newline at end of file diff --git a/Miro.Tests/RepoConfigurationTests.cs b/Miro.Tests/RepoConfigurationTests.cs index 74981ba..8d7d3d5 100644 --- a/Miro.Tests/RepoConfigurationTests.cs +++ b/Miro.Tests/RepoConfigurationTests.cs @@ -61,7 +61,36 @@ public async Task PushEventOnMaster_RepoConfigIsCreated() Assert.NotNull(repoConfig); Assert.Equal("all", repoConfig["UpdateBranchStrategy"]); Assert.Equal("whitelist-strict", repoConfig["MergePolicy"]); - Assert.False((bool) repoConfig["DeleteAfterMerge"]); + } + + [Fact] + public async Task PushEventOnMaster_RepoConfigIsCreated_QuietAdded() + { + var owner = Guid.NewGuid().ToString(); + var repo = Guid.NewGuid().ToString(); + + // Issue Push event + var payloadString = await File.ReadAllTextAsync("../../../DummyEvents/Push.json"); + var payload = JsonConvert.DeserializeObject(payloadString); + payload["repository"]["name"] = repo; + payload["repository"]["owner"]["login"] = owner; + + // Mock Github call + var getConfigFileCallId = await MockRepoConfigGithubCallHelper.MockRepoConfigGithubCall(owner, repo, "quiet.yml"); + await MockRequiredChecksGithubCallHelper.MockRequiredChecks(owner, repo); + + // ACTION + await SendWebhookRequest("push", JsonConvert.SerializeObject(payload)); + + // ASSERT + var getConfigFileCall = await GetCall(getConfigFileCallId); + Assert.True(getConfigFileCall.HasBeenMade, "getConfigFile call should have been made"); + + var repoConfig = await repoConfigurationCollection.Collection.Find(d => d["Owner"] == owner && d["Repo"] == repo).FirstAsync(); + Assert.NotNull(repoConfig); + Assert.Equal("all", repoConfig["UpdateBranchStrategy"]); + Assert.Equal("whitelist-strict", repoConfig["MergePolicy"]); + Assert.True(repoConfig["quiet"]); } @@ -92,7 +121,6 @@ public async Task PushEventOnMaster_RepoConfigIsCreated_InvalidYml_UseDefaults() Assert.NotNull(repoConfig); Assert.Equal("oldest", repoConfig["UpdateBranchStrategy"]); Assert.Equal("whitelist", repoConfig["MergePolicy"]); - Assert.True((bool) repoConfig["DeleteAfterMerge"]); } @@ -152,7 +180,6 @@ public async Task PushEventOnMaster_NoConfigFilePresent_UseDefaults() Assert.NotNull(repoConfig); Assert.Equal("oldest", repoConfig["UpdateBranchStrategy"]); Assert.Equal("whitelist", repoConfig["MergePolicy"]); - Assert.True((bool) repoConfig["DeleteAfterMerge"]); } } } diff --git a/Miro/Models/MiroConfig/RepoConfig.cs b/Miro/Models/MiroConfig/RepoConfig.cs index 5a3dd58..b5830cc 100644 --- a/Miro/Models/MiroConfig/RepoConfig.cs +++ b/Miro/Models/MiroConfig/RepoConfig.cs @@ -8,7 +8,6 @@ public class RepoConfig public ObjectId Id { get; set; } public string Owner { get; set; } public string Repo { get; set; } - public bool DeleteAfterMerge { get; set; } = true; public string MergePolicy { get; set; } = "whitelist"; public string UpdateBranchStrategy { get; set; } = "oldest"; public string DefaultBranch { get; set; } = "master"; diff --git a/Miro/Services/Github/EventHandlers/PullRequestEventHandler.cs b/Miro/Services/Github/EventHandlers/PullRequestEventHandler.cs index b49bd48..45a4a29 100644 --- a/Miro/Services/Github/EventHandlers/PullRequestEventHandler.cs +++ b/Miro/Services/Github/EventHandlers/PullRequestEventHandler.cs @@ -106,29 +106,17 @@ private async Task HandleClosedEvent(PullRequestEvent payload) var prId = payload.Number; var extraLoggerData = new { owner, repo, prId }; - logger.WithExtraData(extraLoggerData).Information("Handling PR closed event for PR - Deleting"); + logger.WithExtraData(extraLoggerData).Information("Handling PR closed event for PR - Deleting from DB"); var deletedMergeRequest = await mergeRequestRepository.Delete(owner, repo, prId); if (deletedMergeRequest != null && payload.PullRequest.Merged) { - logger.WithExtraData(extraLoggerData).Information($"PR was merged, deleting branch"); - var wasBranchDeleted = await DeleteBranchByStrategy(deletedMergeRequest); - return new WebhookResponse(true, $"PR merged event, was branch deleted: {wasBranchDeleted}"); + logger.WithExtraData(extraLoggerData).Information($"PR was merged"); + return new WebhookResponse(true, $"PR merged event"); } return new WebhookResponse(true, "PR closed event"); } - private async Task DeleteBranchByStrategy(MergeRequest mergeRequestToDelete) - { - var config = await repoConfigManager.GetConfig(mergeRequestToDelete.Owner, mergeRequestToDelete.Repo); - if (config.DeleteAfterMerge) - { - await prDeleter.DeleteBranch(mergeRequestToDelete.Owner, mergeRequestToDelete.Repo, mergeRequestToDelete.Branch); - return true; - } - return false; - } - private async Task HandleOpenedEvent(PullRequestEvent payload) { var owner = payload.Repository.Owner.Login; diff --git a/Miro/Services/MiroConfig/RepoConfigRepository.cs b/Miro/Services/MiroConfig/RepoConfigRepository.cs index 519c2ca..c8a4913 100644 --- a/Miro/Services/MiroConfig/RepoConfigRepository.cs +++ b/Miro/Services/MiroConfig/RepoConfigRepository.cs @@ -35,10 +35,10 @@ public Task Update(RepoConfig config) }; var update = Builders.Update .Set(r => r.UpdatedAt, DateTime.UtcNow) - .Set(r => r.DeleteAfterMerge, config.DeleteAfterMerge) .Set(r => r.MergePolicy, config.MergePolicy) .Set(r => r.UpdateBranchStrategy, config.UpdateBranchStrategy) - .Set(r => r.DefaultBranch, config.DefaultBranch); + .Set(r => r.DefaultBranch, config.DefaultBranch) + .Set(r => r.Quiet, config.Quiet); return collection.FindOneAndUpdateAsync(r => r.Owner == config.Owner && r.Repo == config.Repo, update, options); diff --git a/README.md b/README.md index 6a9c2b0..4f1136d 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,6 @@ On every push to `master` Miro will grab the latest `.miro.yml` file if it exist It can look like this: ```yml -deleteAfterMerge: true|false # delete branch after meging - default: true updateBranchStrategy: all|oldest|none # When a PR is merged, how do we update the next - default: oldest