aboutsummaryrefslogtreecommitdiff
path: root/BackEnd/Timeline.Tests/UsernameValidatorUnitTest.cs
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2020-10-27 19:21:35 +0800
committercrupest <crupest@outlook.com>2020-10-27 19:21:35 +0800
commit05ccb4d8f1bbe3fb64e117136b4a89bcfb0b0b33 (patch)
tree929e514de85eb82a5acb96ecffc6e6d2d95f878f /BackEnd/Timeline.Tests/UsernameValidatorUnitTest.cs
parent986c6f2e3b858d6332eba0b42acc6861cd4d0227 (diff)
downloadtimeline-05ccb4d8f1bbe3fb64e117136b4a89bcfb0b0b33.tar.gz
timeline-05ccb4d8f1bbe3fb64e117136b4a89bcfb0b0b33.tar.bz2
timeline-05ccb4d8f1bbe3fb64e117136b4a89bcfb0b0b33.zip
Split front and back end.
Diffstat (limited to 'BackEnd/Timeline.Tests/UsernameValidatorUnitTest.cs')
-rw-r--r--BackEnd/Timeline.Tests/UsernameValidatorUnitTest.cs78
1 files changed, 78 insertions, 0 deletions
diff --git a/BackEnd/Timeline.Tests/UsernameValidatorUnitTest.cs b/BackEnd/Timeline.Tests/UsernameValidatorUnitTest.cs
new file mode 100644
index 00000000..5b568adf
--- /dev/null
+++ b/BackEnd/Timeline.Tests/UsernameValidatorUnitTest.cs
@@ -0,0 +1,78 @@
+using FluentAssertions;
+using Timeline.Models.Validation;
+using Timeline.Tests.Helpers;
+using Xunit;
+
+namespace Timeline.Tests
+{
+ public class UsernameValidatorUnitTest : IClassFixture<UsernameValidator>
+ {
+ private readonly UsernameValidator _validator;
+
+ public UsernameValidatorUnitTest(UsernameValidator validator)
+ {
+ _validator = validator;
+ }
+
+ private string FailAndMessage(string username)
+ {
+ var (result, message) = _validator.Validate(username);
+ result.Should().BeFalse();
+ return message;
+ }
+
+ [Fact]
+ public void NotString()
+ {
+ var (result, message) = _validator.Validate(123);
+ result.Should().BeFalse();
+ message.Should().ContainEquivalentOf("type");
+ }
+
+ [Fact]
+ public void Empty()
+ {
+ FailAndMessage("").Should().ContainEquivalentOf("empty");
+ }
+
+ [Theory]
+ [InlineData("!")]
+ [InlineData("!abc")]
+ [InlineData("ab c")]
+ [InlineData("ab c!")] // This is a chinese ! .
+ public void BadCharactor(string value)
+ {
+ FailAndMessage(value).Should().ContainEquivalentOf("invalid")
+ .And.ContainEquivalentOf("character");
+ }
+
+ [Fact]
+ public void TooLong()
+ {
+ 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")]
+ [InlineData("-abc")]
+ [InlineData("_abc")]
+ [InlineData("abc-")]
+ [InlineData("abc_")]
+ [InlineData("a-bc")]
+ [InlineData("a-b-c")]
+ [InlineData("a-b_c")]
+ [InlineData("a-你好_c")]
+ public void Success(string value)
+ {
+ var (result, _) = _validator.Validate(value);
+ result.Should().BeTrue();
+ }
+ }
+}