public void CreateUser_ShouldReturnUserDTO_WhenUsernameNotInDatabaseAndAddingToDatabaseSucceeds() { //Arrange User user = User.Create("not.in.db", "my_Pass"); User storedUser = User.Create("not.in.db", "8F59105B5953EF266DD8E1429C9EA5EDC8BCD0B4BECB4404C15A606EE5373520"); storedUser.UserId = user.UserId; var userRepositoryMock = new Mock <UserRepository>(); userRepositoryMock.Setup(repo => repo.FindByUsername("not.in.db")).Returns((User)null); userRepositoryMock.Setup(repo => repo.Create(It.IsAny <User>())).Returns(storedUser); var mazeRepositoryMock = new Mock <MazeRepository>(); var userMazeRepositoryMock = new Mock <UserMazeRepository>(); _sutUserService = new UserService(GetUserServiceLogger(), userRepositoryMock.Object, mazeRepositoryMock.Object, userMazeRepositoryMock.Object); UserDTO expectUserDto = UserDTO.Builder() .Id(user.UserId) .Username(user.Username) .Build(); //Act var retUserDto = _sutUserService.CreateUser(user); //Assert Assert.AreEqual(expectUserDto.ToString(), retUserDto.ToString()); }
public void GetUserById_ShouldReturnUserDTO_WhenIdInDatabase() { //Arrange User storedUser = User.Create("user.in.db", "8F59105B5953EF266DD8E1429C9EA5EDC8BCD0B4BECB4404C15A606EE5373520"); var userRepositoryMock = new Mock <UserRepository>(); userRepositoryMock.Setup(repo => repo.FindById(storedUser.UserId)).Returns(storedUser); var mazeRepositoryMock = new Mock <MazeRepository>(); var userMazeRepositoryMock = new Mock <UserMazeRepository>(); userMazeRepositoryMock.Setup(repo => repo.FindOwnMazesByUserId(It.IsAny <Guid>())).Returns(new List <UserMaze>()); _sutUserService = new UserService(GetUserServiceLogger(), userRepositoryMock.Object, mazeRepositoryMock.Object, userMazeRepositoryMock.Object); UserDTO expectUserDto = UserDTO.Builder() .Id(storedUser.UserId) .Username(storedUser.Username) .OwnMazes(new List <MazeDTO>()) .Build(); //Act var retUserDto = _sutUserService.GetUserById(storedUser.UserId); //Assert Assert.AreEqual(expectUserDto.ToString(), retUserDto.ToString()); }
private UserDTO BuildUserDTOFromUser(User user) { user.UserMazes = _userMazeRepository.FindOwnMazesByUserId(user.UserId); List <MazeDTO> ownMazes = new List <MazeDTO>(); foreach (UserMaze um in user.UserMazes) { Maze m = _mazeRepository.FindById(um.MazeId); int playersCount = _userMazeRepository.PlayersCountByMazeId(m.MazeId); MazeDTO mDTO = MazeDTO.Builder() .Id(m.MazeId) .Name(m.Name) .PlayersCount(playersCount) .Width(m.Width) .Height(m.Height) .State(m.State.DecompressString()) .CreationTime(m.CreationTime) .Build(); ownMazes.Add(mDTO); } List <UserMaze> solvedMazes = _userMazeRepository.FindLockedMazesByUserId(user.UserId); int totalAccuracy = 0; foreach (UserMaze um in solvedMazes) { totalAccuracy += um.Accuracy.GetValueOrDefault(); } int accuracy = 0; if (solvedMazes.Count != 0) { accuracy = totalAccuracy / solvedMazes.Count; } return(UserDTO.Builder() .Id(user.UserId) .Username(user.Username) .Accuracy(accuracy) .OwnMazes(ownMazes) .SolvedMazesCount(solvedMazes.Count) .Build()); }
public UserDTO CreateUser(User user) { User storedUser = User.Create(user.Username, HashPassword(user.Password)); if (_userRepository.FindByUsername(storedUser.Username) == null) { User retUser = _userRepository.Create(storedUser); if (retUser == null) { throw new ApiException(500, "Username could not be created"); } return(UserDTO.Builder() .Id(retUser.UserId) .Username(retUser.Username) .Build()); } _logger.LogError("Username {0} already in database\n\n", storedUser.Username); throw new ApiException(400, "Username " + storedUser.Username + " already in database"); }