From 18065fa9d203a9187df46bf4ed6328ffdc10bdc5 Mon Sep 17 00:00:00 2001 From: crupest Date: Sat, 8 Aug 2020 16:12:34 +0800 Subject: Add unique id test in name validator. --- Timeline.Tests/UsernameValidatorUnitTest.cs | 6 ++++++ Timeline/Models/Validation/NameValidator.cs | 9 +++++++++ Timeline/Resources/Models/Validation/NameValidator.Designer.cs | 9 +++++++++ Timeline/Resources/Models/Validation/NameValidator.resx | 3 +++ 4 files changed, 27 insertions(+) diff --git a/Timeline.Tests/UsernameValidatorUnitTest.cs b/Timeline.Tests/UsernameValidatorUnitTest.cs index 8824362b..5b568adf 100644 --- a/Timeline.Tests/UsernameValidatorUnitTest.cs +++ b/Timeline.Tests/UsernameValidatorUnitTest.cs @@ -52,6 +52,12 @@ namespace Timeline.Tests FailAndMessage(new string('a', 40)).Should().ContainEquivalentOf("long"); } + [Fact(Skip = "Currently name can't be longer than 26. So this will print message of too long.")] + public void UniqueId() + { + FailAndMessage("e4c80127d092d9b2fc19c5e04612d4c0").Should().ContainEquivalentOf("unique id"); + } + [Theory] [InlineData(null)] [InlineData("abc")] diff --git a/Timeline/Models/Validation/NameValidator.cs b/Timeline/Models/Validation/NameValidator.cs index dec2b872..b74c40b7 100644 --- a/Timeline/Models/Validation/NameValidator.cs +++ b/Timeline/Models/Validation/NameValidator.cs @@ -1,10 +1,13 @@ using System.Linq; +using System.Text.RegularExpressions; using static Timeline.Resources.Models.Validation.NameValidator; namespace Timeline.Models.Validation { public class NameValidator : Validator { + private static Regex UniqueIdRegex { get; } = new Regex(@"^[a-zA-Z0-9]{32}$"); + public const int MaxLength = 26; protected override (bool, string) DoValidate(string value) @@ -27,6 +30,12 @@ namespace Timeline.Models.Validation } } + // Currently name can't be longer than 26. So this is not needed. But reserve it for future use. + if (UniqueIdRegex.IsMatch(value)) + { + return (false, MessageUnqiueId); + } + return (true, GetSuccessMessage()); } } diff --git a/Timeline/Resources/Models/Validation/NameValidator.Designer.cs b/Timeline/Resources/Models/Validation/NameValidator.Designer.cs index 5b869226..3050049e 100644 --- a/Timeline/Resources/Models/Validation/NameValidator.Designer.cs +++ b/Timeline/Resources/Models/Validation/NameValidator.Designer.cs @@ -86,5 +86,14 @@ namespace Timeline.Resources.Models.Validation { return ResourceManager.GetString("MessageTooLong", resourceCulture); } } + + /// + /// Looks up a localized string similar to Name can't be of the same format of unique id.. + /// + internal static string MessageUnqiueId { + get { + return ResourceManager.GetString("MessageUnqiueId", resourceCulture); + } + } } } diff --git a/Timeline/Resources/Models/Validation/NameValidator.resx b/Timeline/Resources/Models/Validation/NameValidator.resx index 08a814d0..5e7e1745 100644 --- a/Timeline/Resources/Models/Validation/NameValidator.resx +++ b/Timeline/Resources/Models/Validation/NameValidator.resx @@ -126,4 +126,7 @@ Too long, more than 26 characters is not premitted. + + Name can't be of the same format of unique id. + \ No newline at end of file -- cgit v1.2.3