From faa4fda1bfc67cc58c600ecab96e245c667856db Mon Sep 17 00:00:00 2001 From: Erik Ejlskov Jensen Date: Tue, 6 Oct 2020 09:20:41 +0200 Subject: [PATCH] Accept empty and emoji column names when reverse engineering fixes #22751 --- .../Scaffolding/Internal/CandidateNamingService.cs | 2 +- .../Scaffolding/Internal/CSharpNamerTest.cs | 2 ++ .../Scaffolding/Internal/CandidateNamingServiceTest.cs | 10 ++++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/EFCore.Design/Scaffolding/Internal/CandidateNamingService.cs b/src/EFCore.Design/Scaffolding/Internal/CandidateNamingService.cs index cd4e5c771bc..138e6d75093 100644 --- a/src/EFCore.Design/Scaffolding/Internal/CandidateNamingService.cs +++ b/src/EFCore.Design/Scaffolding/Internal/CandidateNamingService.cs @@ -78,7 +78,7 @@ public virtual string GetPrincipalEndCandidateNavigationPropertyName( private static string GenerateCandidateIdentifier(string originalIdentifier) { - Check.NotEmpty(originalIdentifier, nameof(originalIdentifier)); + Check.NotNull(originalIdentifier, nameof(originalIdentifier)); var candidateStringBuilder = new StringBuilder(); var previousLetterCharInWordIsLowerCase = false; diff --git a/test/EFCore.Design.Tests/Scaffolding/Internal/CSharpNamerTest.cs b/test/EFCore.Design.Tests/Scaffolding/Internal/CSharpNamerTest.cs index 8945433c58d..686ea2d1bcf 100644 --- a/test/EFCore.Design.Tests/Scaffolding/Internal/CSharpNamerTest.cs +++ b/test/EFCore.Design.Tests/Scaffolding/Internal/CSharpNamerTest.cs @@ -14,6 +14,8 @@ public class CSharpNamerTest [InlineData("namespace", "_namespace")] [InlineData("@namespace", "@namespace")] [InlineData("8ball", "_8ball")] + [InlineData(" ", "_")] + [InlineData("", "_")] public void Sanitizes_name_with_no_singularize_or_pluralize(string input, string output) { Assert.Equal(output, new CSharpNamer(s => s, new CSharpUtilities(), null).GetName(input)); diff --git a/test/EFCore.Design.Tests/Scaffolding/Internal/CandidateNamingServiceTest.cs b/test/EFCore.Design.Tests/Scaffolding/Internal/CandidateNamingServiceTest.cs index c125dea0696..b2c0585d057 100644 --- a/test/EFCore.Design.Tests/Scaffolding/Internal/CandidateNamingServiceTest.cs +++ b/test/EFCore.Design.Tests/Scaffolding/Internal/CandidateNamingServiceTest.cs @@ -26,5 +26,15 @@ public void Generates_candidate_identifiers(string input, string output) output, new CandidateNamingService().GenerateCandidateIdentifier( new DatabaseTable { Database = new DatabaseModel(), Name = input })); } + + [ConditionalTheory] + [InlineData("‍🐶", "")] + [InlineData(" ", "")] + public void Generates_column_candidate_identifiers(string input, string output) + { + Assert.Equal( + output, new CandidateNamingService().GenerateCandidateIdentifier( + new DatabaseColumn { Name = input })); + } } }