Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 3
0
        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());
        }
Ejemplo n.º 4
0
        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");
        }