aboutsummaryrefslogtreecommitdiff
path: root/src/DevHive.Tests/DevHive.Services.Tests/UserService.Tests.cs
diff options
context:
space:
mode:
authorDanail Dimitrov <danaildimitrov321@gmail.com>2021-01-28 22:31:43 +0200
committerDanail Dimitrov <danaildimitrov321@gmail.com>2021-01-28 22:31:43 +0200
commit40bf9980b707232019439313af30e586e8105fed (patch)
treea55457c7ec6ace3ecb61e5d133402d417dca9fdb /src/DevHive.Tests/DevHive.Services.Tests/UserService.Tests.cs
parentc450d08b0bb15bd050695ee599e286815958def0 (diff)
downloadDevHive-40bf9980b707232019439313af30e586e8105fed.tar
DevHive-40bf9980b707232019439313af30e586e8105fed.tar.gz
DevHive-40bf9980b707232019439313af30e586e8105fed.zip
Adding UserService tests
Diffstat (limited to 'src/DevHive.Tests/DevHive.Services.Tests/UserService.Tests.cs')
-rw-r--r--src/DevHive.Tests/DevHive.Services.Tests/UserService.Tests.cs212
1 files changed, 212 insertions, 0 deletions
diff --git a/src/DevHive.Tests/DevHive.Services.Tests/UserService.Tests.cs b/src/DevHive.Tests/DevHive.Services.Tests/UserService.Tests.cs
index f9a0f71..32f2c56 100644
--- a/src/DevHive.Tests/DevHive.Services.Tests/UserService.Tests.cs
+++ b/src/DevHive.Tests/DevHive.Services.Tests/UserService.Tests.cs
@@ -138,6 +138,218 @@ namespace DevHive.Services.Tests
Mock.Verify();
Assert.AreEqual(JWTSecurityToken, tokenModel.Token, "RegisterUser does not return the correct token");
}
+
+ [Test]
+ public void RegisterUser_ThrowsException_WhenUsernameAlreadyExists()
+ {
+ const string EXCEPTION_MESSAGE = "Username already exists!";
+ RegisterServiceModel registerServiceModel = new RegisterServiceModel
+ {
+ };
+
+ this.UserRepositoryMock.Setup(p => p.DoesUsernameExistAsync(It.IsAny<string>())).Returns(Task.FromResult(true));
+
+ Exception ex = Assert.ThrowsAsync<ArgumentException>(() => this.UserService.RegisterUser(registerServiceModel));
+
+ Assert.AreEqual(EXCEPTION_MESSAGE, ex.Message, "Incorect Exception message");
+ }
+
+ [Test]
+ public void RegisterUser_ThrowsException_WhenEmailAlreadyExists()
+ {
+ const string EXCEPTION_MESSAGE = "Email already exists!";
+
+ RegisterServiceModel registerServiceModel = new RegisterServiceModel
+ {
+ };
+
+ this.UserRepositoryMock.Setup(p => p.DoesUsernameExistAsync(It.IsAny<string>())).Returns(Task.FromResult(false));
+ this.UserRepositoryMock.Setup(p => p.DoesEmailExistAsync(It.IsAny<string>())).Returns(Task.FromResult(true));
+
+ Exception ex = Assert.ThrowsAsync<ArgumentException>(() => this.UserService.RegisterUser(registerServiceModel));
+
+ Assert.AreEqual(EXCEPTION_MESSAGE, ex.Message, "Incorect Exception message");
+ }
+ #endregion
+
+ #region GetUserById
+ [Test]
+ public async Task GetUserById_ReturnsTheUser_WhenItExists()
+ {
+ Guid id = new Guid();
+ string name = "Gosho Trapov";
+ User user = new()
+ {
+ };
+ UserServiceModel userServiceModel = new UserServiceModel
+ {
+ UserName = name
+ };
+
+ this.UserRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(user));
+ this.MapperMock.Setup(p => p.Map<UserServiceModel>(It.IsAny<User>())).Returns(userServiceModel);
+
+ UserServiceModel result = await this.UserService.GetUserById(id);
+
+ Assert.AreEqual(name, result.UserName);
+ }
+
+ [Test]
+ public void GetTechnologyById_ThrowsException_WhenTechnologyDoesNotExist()
+ {
+ const string EXCEPTION_MESSEGE = "User does not exist!";
+ Guid id = new Guid();
+ this.UserRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult<User>(null));
+
+ Exception ex = Assert.ThrowsAsync<ArgumentException>(() => this.UserService.GetUserById(id));
+
+ Assert.AreEqual(EXCEPTION_MESSEGE, ex.Message, "Incorecct exception message");
+ }
+ #endregion
+
+ #region GetUserByUsername
+ [Test]
+ public async Task GetUserByUsername_ReturnsTheCorrectUser_IfItExists()
+ {
+ string username = "Gosho Trapov";
+ User user = new User();
+ UserServiceModel userServiceModel = new UserServiceModel
+ {
+ UserName = username
+ };
+
+ this.UserRepositoryMock.Setup(p => p.GetByUsernameAsync(It.IsAny<string>())).Returns(Task.FromResult(user));
+ this.MapperMock.Setup(p => p.Map<UserServiceModel>(It.IsAny<User>())).Returns(userServiceModel);
+
+ UserServiceModel result = await this.UserService.GetUserByUsername(username);
+
+ Assert.AreEqual(username, result.UserName, "GetUserByUsername does not return the correct user");
+ }
+
+ [Test]
+ public async Task GetUserByUsername_ThrowsException_IfUserDoesNotExist()
+ {
+ string username = "Gosho Trapov";
+ const string EXCEPTION_MESSEGE = "User does not exist!";
+
+ this.UserRepositoryMock.Setup(p => p.GetByUsernameAsync(It.IsAny<string>())).Returns(Task.FromResult<User>(null));
+
+ Exception ex = Assert.ThrowsAsync<ArgumentException>(() => this.UserService.GetUserByUsername(username));
+
+ Assert.AreEqual(EXCEPTION_MESSEGE, ex.Message, "Incorecct exception message");
+ }
+ #endregion
+
+ #region UpdateUser
+ [Test]
+ [TestCase(true)]
+ [TestCase(false)]
+ public async Task UpdateUser_ReturnsIfUpdateIsSuccessfull_WhenUserExistsy(bool shouldPass)
+ {
+ string name = "Gosho Trapov";
+ Guid id = Guid.NewGuid();
+ User user = new User
+ {
+ UserName = name,
+ Id = id,
+ };
+ UpdateUserServiceModel updateUserServiceModel = new UpdateUserServiceModel
+ {
+ UserName = name,
+ };
+ UserServiceModel userServiceModel = new UserServiceModel
+ {
+ UserName = name,
+ };
+ Role role = new Role { };
+
+ this.UserRepositoryMock.Setup(p => p.DoesUserExistAsync(It.IsAny<Guid>())).Returns(Task.FromResult(true));
+ this.UserRepositoryMock.Setup(p => p.DoesUsernameExistAsync(It.IsAny<string>())).Returns(Task.FromResult(false));
+ this.UserRepositoryMock.Setup(p => p.DoesUserHaveThisUsername(It.IsAny<Guid>(), It.IsAny<string>())).Returns(true);
+ this.UserRepositoryMock.Setup(p => p.EditAsync(It.IsAny<Guid>(), It.IsAny<User>())).Returns(Task.FromResult(shouldPass));
+ this.UserRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(user));
+ this.MapperMock.Setup(p => p.Map<User>(It.IsAny<UpdateUserServiceModel>())).Returns(user);
+ this.MapperMock.Setup(p => p.Map<UserServiceModel>(It.IsAny<User>())).Returns(userServiceModel);
+
+ if (shouldPass)
+ {
+ UserServiceModel result = await this.UserService.UpdateUser(updateUserServiceModel);
+
+ Assert.AreEqual(updateUserServiceModel.UserName, result.UserName);
+ }
+ else
+ {
+ const string EXCEPTION_MESSAGE = "Unable to edit user!";
+
+ Exception ex = Assert.ThrowsAsync<InvalidOperationException>(() => this.UserService.UpdateUser(updateUserServiceModel));
+
+ Assert.AreEqual(EXCEPTION_MESSAGE, ex.Message, "Incorecct exception message");
+ }
+ }
+
+ [Test]
+ public void UpdateUser_ThrowsException_WhenUserDoesNotExist()
+ {
+ const string EXCEPTION_MESSAGE = "User does not exist!";
+ UpdateUserServiceModel updateUserServiceModel = new UpdateUserServiceModel
+ {
+ };
+
+ this.UserRepositoryMock.Setup(p => p.DoesUserExistAsync(It.IsAny<Guid>())).Returns(Task.FromResult(false));
+
+ Exception ex = Assert.ThrowsAsync<ArgumentException>(() => this.UserService.UpdateUser(updateUserServiceModel));
+
+ Assert.AreEqual(EXCEPTION_MESSAGE, ex.Message, "Incorecct exception message");
+ }
+
+ [Test]
+ public void UpdateUser_ThrowsException_WhenUserNameAlreadyExists()
+ {
+ const string EXCEPTION_MESSAGE = "Username already exists!";
+ UpdateUserServiceModel updateUserServiceModel = new UpdateUserServiceModel
+ {
+ };
+
+ this.UserRepositoryMock.Setup(p => p.DoesUserExistAsync(It.IsAny<Guid>())).Returns(Task.FromResult(true));
+ this.UserRepositoryMock.Setup(p => p.DoesUsernameExistAsync(It.IsAny<string>())).Returns(Task.FromResult(true));
+
+ Exception ex = Assert.ThrowsAsync<ArgumentException>(() => this.UserService.UpdateUser(updateUserServiceModel));
+
+ Assert.AreEqual(EXCEPTION_MESSAGE, ex.Message, "Incorecct exception message");
+ }
+ #endregion
+
+ #region DeleteUser
+ //TO DO: compleate once Viko has looked into the return type of UserService.DeleteUser
+ [Test]
+ [TestCase(true)]
+ [TestCase(false)]
+ public async Task DeleteUser_ShouldReturnIfDeletionIsSuccessfull_WhenUserExists(bool shouldPass)
+ {
+ Guid id = new Guid();
+ User user = new User();
+
+ this.UserRepositoryMock.Setup(p => p.DoesUserExistAsync(It.IsAny<Guid>())).Returns(Task.FromResult(true));
+ this.UserRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(user));
+ this.UserRepositoryMock.Setup(p => p.DeleteAsync(It.IsAny<User>())).Returns(Task.FromResult(shouldPass));
+
+ //bool result = await this.UserService.DeleteUser(id);
+
+ Assert.Pass();
+ }
+
+ [Test]
+ public void DeleteUser_ThrowsException_WhenUserDoesNotExist()
+ {
+ string exceptionMessage = "User does not exist!";
+ Guid id = new Guid();
+
+ this.UserRepositoryMock.Setup(p => p.DoesUserExistAsync(It.IsAny<Guid>())).Returns(Task.FromResult(false));
+
+ Exception ex = Assert.ThrowsAsync<ArgumentException>(() => this.UserService.DeleteUser(id));
+
+ Assert.AreEqual(exceptionMessage, ex.Message, "Incorecct exception message");
+ }
#endregion
#region HelperMethods