From 9112f288f638f34aab48fdb965ff9703a99adb4d Mon Sep 17 00:00:00 2001 From: 杨宇千 Date: Thu, 22 Aug 2019 14:54:47 +0800 Subject: Add nickname. Step 1. --- Timeline.Tests/UserDetailServiceTest.cs | 70 +++++++++++++++++++++++++++++++-- 1 file changed, 67 insertions(+), 3 deletions(-) (limited to 'Timeline.Tests/UserDetailServiceTest.cs') diff --git a/Timeline.Tests/UserDetailServiceTest.cs b/Timeline.Tests/UserDetailServiceTest.cs index 292b528b..f9170c42 100644 --- a/Timeline.Tests/UserDetailServiceTest.cs +++ b/Timeline.Tests/UserDetailServiceTest.cs @@ -34,6 +34,68 @@ namespace Timeline.Tests _database.Dispose(); } + [Fact] + public void GetNickname_ShouldThrow_ArgumentException() + { + // no need to await because arguments are checked syncronizedly. + _service.Invoking(s => s.GetUserNickname(null)).Should().Throw() + .Where(e => e.ParamName == "username" && e.Message.Contains("null", StringComparison.OrdinalIgnoreCase)); + _service.Invoking(s => s.GetUserNickname("")).Should().Throw() + .Where(e => e.ParamName == "username" && e.Message.Contains("empty", StringComparison.OrdinalIgnoreCase)); + } + + [Fact] + public void GetNickname_ShouldThrow_UserNotExistException() + { + const string username = "usernotexist"; + _service.Awaiting(s => s.GetUserNickname(username)).Should().Throw() + .Where(e => e.Username == username); + } + + [Fact] + public async Task GetNickname_Should_Create_And_ReturnDefault() + { + { + var nickname = await _service.GetUserNickname(MockUsers.UserUsername); + nickname.Should().BeNull(); + } + + { + var context = _database.DatabaseContext; + var userId = await DatabaseExtensions.CheckAndGetUser(context.Users, MockUsers.UserUsername); + var detail = context.UserDetails.Where(e => e.UserId == userId).Single(); + detail.Nickname.Should().BeNullOrEmpty(); + detail.QQ.Should().BeNullOrEmpty(); + detail.EMail.Should().BeNullOrEmpty(); + detail.PhoneNumber.Should().BeNullOrEmpty(); + detail.Description.Should().BeNullOrEmpty(); + } + } + + [Theory] + [InlineData(null)] + [InlineData("")] + [InlineData("nickname")] + public async Task GetNickname_Should_ReturnData(string nickname) + { + { + var context = _database.DatabaseContext; + var userId = await DatabaseExtensions.CheckAndGetUser(context.Users, MockUsers.UserUsername); + var entity = new UserDetailEntity + { + Nickname = nickname, + UserId = userId + }; + context.Add(entity); + await context.SaveChangesAsync(); + } + + { + var n = await _service.GetUserNickname(MockUsers.UserUsername); + n.Should().Equals(string.IsNullOrEmpty(nickname) ? null : nickname); + } + } + [Fact] public void GetDetail_ShouldThrow_ArgumentException() { @@ -64,6 +126,7 @@ namespace Timeline.Tests var context = _database.DatabaseContext; var userId = await DatabaseExtensions.CheckAndGetUser(context.Users, MockUsers.UserUsername); var detail = context.UserDetails.Where(e => e.UserId == userId).Single(); + detail.Nickname.Should().BeNullOrEmpty(); detail.QQ.Should().BeNullOrEmpty(); detail.EMail.Should().BeNullOrEmpty(); detail.PhoneNumber.Should().BeNullOrEmpty(); @@ -77,12 +140,11 @@ namespace Timeline.Tests const string email = "ha@aaa.net"; const string description = "hahaha"; - var context = _database.DatabaseContext; - UserDetailEntity entity; { + var context = _database.DatabaseContext; var userId = await DatabaseExtensions.CheckAndGetUser(context.Users, MockUsers.UserUsername); - entity = new UserDetailEntity + var entity = new UserDetailEntity { EMail = email, Description = description, @@ -130,6 +192,7 @@ namespace Timeline.Tests var context = _database.DatabaseContext; var userId = await DatabaseExtensions.CheckAndGetUser(context.Users, MockUsers.UserUsername); var entity = context.UserDetails.Where(e => e.UserId == userId).Single(); + entity.Nickname.Should().BeNullOrEmpty(); entity.QQ.Should().BeNullOrEmpty(); entity.EMail.Should().BeNullOrEmpty(); entity.PhoneNumber.Should().BeNullOrEmpty(); @@ -137,6 +200,7 @@ namespace Timeline.Tests } [Theory] + [InlineData(nameof(UserDetail.Nickname), nameof(UserDetailEntity.Nickname), "aaaa", "bbbb")] [InlineData(nameof(UserDetail.QQ), nameof(UserDetailEntity.QQ), "12345678910", "987654321")] [InlineData(nameof(UserDetail.EMail), nameof(UserDetailEntity.EMail), "aaa@aaa.aaa", "bbb@bbb.bbb")] [InlineData(nameof(UserDetail.PhoneNumber), nameof(UserDetailEntity.PhoneNumber), "12345678910", "987654321")] -- cgit v1.2.3