From 527ae13066913604d51cc5313310dc3ad6006fc8 Mon Sep 17 00:00:00 2001 From: Coen van den Munckhof Date: Wed, 9 Aug 2023 12:33:16 +0200 Subject: [PATCH] Set Naming strategy to KebabCaseNamingStrategy --- .../Data/RepositoryAction.cs | 2 + ...JsonDynamicRepositoryActionDeserializer.cs | 6 ++ ...zureDevOpsGetPullRequestsV1Deserializer.cs | 73 ------------------- .../AzureDevOpsPackage.cs | 5 +- ...BrowseRepositoryRepositoryV1.testfile.json | 4 +- .../AzureDevOpsGetPullRequestsV1Test.cs | 3 +- .../AzureDevopsCreatePrs.testfile.yaml | 40 +++++----- ...amicRepositoryActionDeserializerFactory.cs | 3 +- 8 files changed, 33 insertions(+), 103 deletions(-) delete mode 100644 src/RepoM.Plugin.AzureDevOps/ActionProvider/ActionAzureDevOpsGetPullRequestsV1Deserializer.cs diff --git a/src/RepoM.Api/IO/ModuleBasedRepositoryActionProvider/Data/RepositoryAction.cs b/src/RepoM.Api/IO/ModuleBasedRepositoryActionProvider/Data/RepositoryAction.cs index 29e57ae6..f99fe422 100644 --- a/src/RepoM.Api/IO/ModuleBasedRepositoryActionProvider/Data/RepositoryAction.cs +++ b/src/RepoM.Api/IO/ModuleBasedRepositoryActionProvider/Data/RepositoryAction.cs @@ -4,6 +4,7 @@ namespace RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Data; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Reflection; +using JetBrains.Annotations; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using RepoM.Api.IO.ModuleBasedRepositoryActionProvider.ActionDeserializers; @@ -67,6 +68,7 @@ public sealed class EvaluatedPropertyAttribute : Attribute /// Attribute the textual type of the repository action. /// [AttributeUsage(AttributeTargets.Class)] +[MeansImplicitUse] public sealed class RepositoryActionAttribute : Attribute { public RepositoryActionAttribute(string type) diff --git a/src/RepoM.Api/IO/ModuleBasedRepositoryActionProvider/Deserialization/JsonDynamicRepositoryActionDeserializer.cs b/src/RepoM.Api/IO/ModuleBasedRepositoryActionProvider/Deserialization/JsonDynamicRepositoryActionDeserializer.cs index aef20468..bb805c06 100644 --- a/src/RepoM.Api/IO/ModuleBasedRepositoryActionProvider/Deserialization/JsonDynamicRepositoryActionDeserializer.cs +++ b/src/RepoM.Api/IO/ModuleBasedRepositoryActionProvider/Deserialization/JsonDynamicRepositoryActionDeserializer.cs @@ -6,6 +6,7 @@ namespace RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Deserialization; using System.Linq; using Newtonsoft.Json; using Newtonsoft.Json.Linq; +using Newtonsoft.Json.Serialization; using RepoM.Api.IO.ModuleBasedRepositoryActionProvider.ActionDeserializers; using RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Data; @@ -14,6 +15,10 @@ public class JsonDynamicRepositoryActionDeserializer private readonly ActionDeserializerComposition _deserializers; private static readonly JsonSerializer _jsonSerializer = new() { + ContractResolver = new DefaultContractResolver + { + NamingStrategy = new KebabCaseNamingStrategy(), + }, Converters = { new BoolToStringJsonConverter(), @@ -24,6 +29,7 @@ public class JsonDynamicRepositoryActionDeserializer CommentHandling = CommentHandling.Ignore, }; + public JsonDynamicRepositoryActionDeserializer(ActionDeserializerComposition deserializers) { _deserializers = deserializers ?? throw new ArgumentNullException(nameof(deserializers)); diff --git a/src/RepoM.Plugin.AzureDevOps/ActionProvider/ActionAzureDevOpsGetPullRequestsV1Deserializer.cs b/src/RepoM.Plugin.AzureDevOps/ActionProvider/ActionAzureDevOpsGetPullRequestsV1Deserializer.cs deleted file mode 100644 index d31912cb..00000000 --- a/src/RepoM.Plugin.AzureDevOps/ActionProvider/ActionAzureDevOpsGetPullRequestsV1Deserializer.cs +++ /dev/null @@ -1,73 +0,0 @@ -namespace RepoM.Plugin.AzureDevOps.ActionProvider; - -using System; -using JetBrains.Annotations; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; -using RepoM.Api.IO.ModuleBasedRepositoryActionProvider; -using RepoM.Api.IO.ModuleBasedRepositoryActionProvider.ActionDeserializers; -using RepoM.Plugin.AzureDevOps.ActionProvider.Options; -using RepositoryAction = Api.IO.ModuleBasedRepositoryActionProvider.Data.RepositoryAction; - -[UsedImplicitly] -internal class ActionAzureDevOpsGetPullRequestsV1Deserializer : IActionDeserializer -{ - public bool CanDeserialize(string type) - { - return RepositoryActionAzureDevOpsGetPullRequestsV1.TYPE.Equals(type, StringComparison.CurrentCultureIgnoreCase); - } - - RepositoryAction? IActionDeserializer.Deserialize(JToken jToken, ActionDeserializerComposition actionDeserializer, JsonSerializer jsonSerializer) - { - return Deserialize(jToken, jsonSerializer); - } - - private static RepositoryActionAzureDevOpsGetPullRequestsV1? Deserialize(JToken jToken, JsonSerializer jsonSerializer) - { - RepositoryActionAzureDevOpsGetPullRequestsV1? result = jToken.ToObject(jsonSerializer); - - JToken? showWhenEmpty = jToken["show-when-empty"]; - if (showWhenEmpty != null && result != null) - { - if (showWhenEmpty.Type == JTokenType.Boolean) - { - var value = showWhenEmpty.Value(); - result.ShowWhenEmpty = value ? "true" : "false"; - } - - if (showWhenEmpty.Type == JTokenType.String) - { - var value = showWhenEmpty.Value(); - result.ShowWhenEmpty = value; - - if (!string.IsNullOrWhiteSpace(value)) - { - value = value.Trim(); - if (string.Equals("true", value, StringComparison.CurrentCultureIgnoreCase)) - { - result.ShowWhenEmpty = "true"; - } - - if (string.Equals("false", value, StringComparison.CurrentCultureIgnoreCase)) - { - result.ShowWhenEmpty = "false"; - } - } - } - } - - JToken? projectId = jToken["project-id"]; - if (projectId != null && result != null && projectId.Type == JTokenType.String) - { - result.ProjectId = projectId.Value(); - } - - JToken? repositoryId = jToken["repository-id"]; - if (repositoryId != null && result != null && repositoryId.Type == JTokenType.String) - { - result.RepositoryId = repositoryId.Value(); - } - - return result; - } -} \ No newline at end of file diff --git a/src/RepoM.Plugin.AzureDevOps/AzureDevOpsPackage.cs b/src/RepoM.Plugin.AzureDevOps/AzureDevOpsPackage.cs index 8c9663d7..725d54e7 100644 --- a/src/RepoM.Plugin.AzureDevOps/AzureDevOpsPackage.cs +++ b/src/RepoM.Plugin.AzureDevOps/AzureDevOpsPackage.cs @@ -74,10 +74,7 @@ private async Task ExtractAndRegisterConfiguration(Container container, IPackage private static void RegisterServices(Container container) { container.RegisterDefaultRepositoryActionDeserializerForType(); - // container.Collection.Append(Lifestyle.Singleton); - - // container.RegisterDefaultRepositoryActionDeserializerForType(); - container.Collection.Append(Lifestyle.Singleton); + container.RegisterDefaultRepositoryActionDeserializerForType(); container.Collection.Append(Lifestyle.Singleton); container.Collection.Append(Lifestyle.Singleton); diff --git a/tests/RepoM.Api.Tests/IO/ModuleBasedRepositoryActionProvider/Action/TestFiles/BrowseRepositoryV1Test.Deserialize_ActionBrowseRepositoryRepositoryV1.testfile.json b/tests/RepoM.Api.Tests/IO/ModuleBasedRepositoryActionProvider/Action/TestFiles/BrowseRepositoryV1Test.Deserialize_ActionBrowseRepositoryRepositoryV1.testfile.json index 360e00fc..88bac422 100644 --- a/tests/RepoM.Api.Tests/IO/ModuleBasedRepositoryActionProvider/Action/TestFiles/BrowseRepositoryV1Test.Deserialize_ActionBrowseRepositoryRepositoryV1.testfile.json +++ b/tests/RepoM.Api.Tests/IO/ModuleBasedRepositoryActionProvider/Action/TestFiles/BrowseRepositoryV1Test.Deserialize_ActionBrowseRepositoryRepositoryV1.testfile.json @@ -4,12 +4,12 @@ { "type": "browse-repository@1", "name": "fo true", - "FirstOnly": true + "first-only": true }, { "type": "browse-repository@1", "name": "fo false", - "FirstOnly": false + "first-only": false }, { "type": "browse-repository@1", diff --git a/tests/RepoM.Plugin.AzureDevOps.Tests/ActionProvider/AzureDevOpsGetPullRequestsV1Test.cs b/tests/RepoM.Plugin.AzureDevOps.Tests/ActionProvider/AzureDevOpsGetPullRequestsV1Test.cs index db67a941..76ef8b3a 100644 --- a/tests/RepoM.Plugin.AzureDevOps.Tests/ActionProvider/AzureDevOpsGetPullRequestsV1Test.cs +++ b/tests/RepoM.Plugin.AzureDevOps.Tests/ActionProvider/AzureDevOpsGetPullRequestsV1Test.cs @@ -10,7 +10,6 @@ namespace RepoM.Plugin.AzureDevOps.Tests.ActionProvider; using RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Data; using RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Deserialization; using RepoM.Api.Tests.IO.ModuleBasedRepositoryActionProvider; -using RepoM.Plugin.AzureDevOps.ActionProvider; using RepoM.Plugin.AzureDevOps.ActionProvider.Options; using VerifyTests; using VerifyXunit; @@ -28,7 +27,7 @@ public class AzureDevOpsGetPullRequestsV1Test public AzureDevOpsGetPullRequestsV1Test() { - _sutJson = CreateWithDeserializer(new ActionAzureDevOpsGetPullRequestsV1Deserializer()); + _sutJson = CreateWithDeserializer(new DefaultActionDeserializer()); _sutYaml = new YamlDynamicRepositoryActionDeserializer(_sutJson); _testFileSettings = new EasyTestFileSettings(); diff --git a/tests/RepoM.Plugin.AzureDevOps.Tests/DocumentationFiles/AzureDevopsCreatePrs.testfile.yaml b/tests/RepoM.Plugin.AzureDevOps.Tests/DocumentationFiles/AzureDevopsCreatePrs.testfile.yaml index 18b7bc90..391ec4f1 100644 --- a/tests/RepoM.Plugin.AzureDevOps.Tests/DocumentationFiles/AzureDevopsCreatePrs.testfile.yaml +++ b/tests/RepoM.Plugin.AzureDevOps.Tests/DocumentationFiles/AzureDevopsCreatePrs.testfile.yaml @@ -6,39 +6,39 @@ repository-actions: actions: # Create PR - type: azure-devops-create-prs@1 - projectId: '' - toBranch: develop - reviewerIds: + project-id: '' + to-branch: develop + reviewer-ids: - "GUID" # Create PR with auto-complete enabled - type: azure-devops-create-prs@1 - projectId: '' - toBranch: develop - reviewerIds: + project-id: '' + to-branch: develop + reviewer-ids: - "GUID" - autoComplete: + auto-complete: enabled: true - mergeStrategy: "Squash" + merge-strategy: "Squash" # Create PR with all settings - type: azure-devops-create-prs@1 - projectId: '' + project-id: '' title: 'Create PR' - # When no prTitle provided it will be generated based on convention. + # When no pr-title provided it will be generated based on convention. # Title will be the last part of the branchname split on '/'. # For example: feature/testBranch will result in a PR title of 'testBranch'. - prTitle: 'PR title' - toBranch: develop - reviewerIds: + pr-title: 'PR title' + to-branch: develop + reviewer-ids: - "GUID" - draftPr: true - includeWorkItems: true - openInBrowser: false - autoComplete: + draft-pr: true + include-work-items: true + open-in-browser: false + auto-complete: enabled: true - mergeStrategy: "NoFastForward" # You can choose from: "NoFastForward", "Squash", "Rebase" and "RebaseMerge" - deleteSourceBranch: true - transitionWorkItems: true + merge-strategy: "NoFastForward" # You can choose from: "NoFastForward", "Squash", "Rebase" and "RebaseMerge" + deleteSource-branch: true + transition-work-items: true # end-snippet diff --git a/tests/RepoM.Plugin.AzureDevOps.Tests/TestFramework/DynamicRepositoryActionDeserializerFactory.cs b/tests/RepoM.Plugin.AzureDevOps.Tests/TestFramework/DynamicRepositoryActionDeserializerFactory.cs index 2882fb12..6be61ef6 100644 --- a/tests/RepoM.Plugin.AzureDevOps.Tests/TestFramework/DynamicRepositoryActionDeserializerFactory.cs +++ b/tests/RepoM.Plugin.AzureDevOps.Tests/TestFramework/DynamicRepositoryActionDeserializerFactory.cs @@ -4,7 +4,6 @@ namespace RepoM.Plugin.AzureDevOps.Tests.TestFramework; using RepoM.Api.IO.ModuleBasedRepositoryActionProvider.ActionDeserializers; using RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Data; using RepoM.Api.IO.ModuleBasedRepositoryActionProvider.Deserialization; -using RepoM.Plugin.AzureDevOps.ActionProvider; using RepoM.Plugin.AzureDevOps.ActionProvider.Options; internal static class DynamicRepositoryActionDeserializerFactory @@ -16,7 +15,7 @@ public static JsonDynamicRepositoryActionDeserializer Create() new IActionDeserializer[] { new DefaultActionDeserializer(), - new ActionAzureDevOpsGetPullRequestsV1Deserializer(), + new DefaultActionDeserializer(), })); }