Exemplo n.º 1
0
        public void ShouldThrowAnExceptionWhenUserAlreadyExists()
        {
            #region Given

            string userId          = UserIdMother.Id();
            string expectedMessage = $"The user '{userId}' already exists";
            User   user            = UserMother.User(userId);

            var userRepository = new Mock <UserRepository>();

            userRepository
            .Setup(r => r.Find(It.IsAny <UserId>()))
            .ReturnsAsync(UserMother.User(userId));

            userRepository
            .Setup(r => r.Exists(It.IsAny <UserId>()))
            .ReturnsAsync(true);

            userRepository
            .Setup(r => r.Save(It.IsAny <User>()));

            UserCreator userCreator = new UserCreator(userRepository.Object);

            #endregion

            #region When
            var exception = Record.ExceptionAsync(async() => await userCreator.Execute(user));

            #endregion

            #region Then
            Assert.Equal(expectedMessage, exception.Result.Message);

            #endregion
        }
Exemplo n.º 2
0
        public void CreateUser_ReturnsUserAlreadyExistsException()
        {
            #region Arrange
            string userId          = UserIdMother.Id();
            string expectedMessage = $"The user '{userId}' already exists";

            var userRepository = new Mock <UserRepository>();

            userRepository
            .Setup(r => r.Find(It.IsAny <UserId>()))
            .ReturnsAsync(UserMother.User(userId));

            userRepository
            .Setup(r => r.Exists(It.IsAny <UserId>()))
            .ReturnsAsync(true);

            userRepository
            .Setup(r => r.Save(It.IsAny <User>()));

            UserCreator userCreator = new UserCreator(userRepository.Object);
            CreateUser  createUser  = new CreateUser(userCreator);

            #endregion

            #region Act
            var exception = Record.ExceptionAsync(async() => await createUser.Execute(userId));

            #endregion

            #region Assert
            Assert.Equal(expectedMessage, exception.Result.Message);

            #endregion
        }
Exemplo n.º 3
0
        public async Task ShouldCreateUser()
        {
            #region Given
            string userId         = UserIdMother.Id();
            User   user           = UserMother.User(userId);
            var    userRepository = new Mock <UserRepository>();

            userRepository
            .Setup(r => r.Save(It.IsAny <User>()));

            UserCreator userCreator = new UserCreator(userRepository.Object);

            #endregion

            #region When

            await userCreator.Execute(user);

            #endregion

            #region Then

            userRepository.Verify(r => r.Save(It.IsAny <User>()), Times.Once());

            #endregion
        }
Exemplo n.º 4
0
        public void ShouldThrowAnExceptionWhenPokemonFavoriteAlreadyExists()
        {
            #region Given

            PokemonId       pokemonId       = PokemonIdMother.PokemonId();
            PokemonFavorite pokemonFavorite = new PokemonFavorite(pokemonId);
            string          userId          = UserIdMother.Id();
            string          expectedMessage = $"The pokemon with Id '{pokemonId.Id}' already exists in user favorites list";
            User            user            = UserMother.UserWithFavorites(userId, pokemonId.Id);

            var userRepository = new Mock <UserRepository>();

            userRepository
            .Setup(r => r.Find(It.IsAny <UserId>()))
            .ReturnsAsync(UserMother.UserWithFavorites(userId, pokemonId.Id));

            userRepository
            .Setup(r => r.SaveFavorites(It.IsAny <User>()));

            PokemonFavoriteCreator pokemonFavoriteCreator = new PokemonFavoriteCreator(userRepository.Object);

            #endregion

            #region When
            var exception = Record.ExceptionAsync(async() => await pokemonFavoriteCreator.Execute(user, pokemonFavorite));

            #endregion

            #region Then
            Assert.Equal(expectedMessage, exception.Result.Message);

            #endregion
        }
Exemplo n.º 5
0
        public async Task SaveFavorites_ReturnsUserWithFavorites()
        {
            #region Arrange

            InMemoryUserRepository inMemoryUserRepository = new InMemoryUserRepository(memoryCache);
            UserId    userId    = new UserId(UserIdMother.Id());
            User      user      = new User(userId);
            PokemonId pokemonId = PokemonIdMother.PokemonId();
            user.AddPokemonFavorite(new PokemonFavorite(pokemonId));

            #endregion

            #region Act
            await inMemoryUserRepository.Save(user);

            User userFound = await inMemoryUserRepository.Find(userId);

            await inMemoryUserRepository.SaveFavorites(user);

            #endregion

            #region Assert
            var pokemonFavoritesArray = userFound.PokemonFavorites.Favorites.Select(s => s.PokemonId.Id.ToString()).ToArray();
            Assert.Equal(pokemonFavoritesArray, PokemonFavoritesMother.PokemonFavorites().Favorites.Select(s => s.PokemonId.Id.ToString()).ToArray(), StringComparer.InvariantCultureIgnoreCase);

            #endregion
        }
Exemplo n.º 6
0
        public async Task ShouldCreatePokemonFavorite()
        {
            #region Given

            PokemonId       pokemonId       = PokemonIdMother.PokemonId();
            PokemonFavorite pokemonFavorite = new PokemonFavorite(pokemonId);
            string          userId          = UserIdMother.Id();
            User            user            = new User(new UserId(userId));
            var             userRepository  = new Mock <UserRepository>();

            userRepository
            .Setup(r => r.SaveFavorites(It.IsAny <User>()));

            PokemonFavoriteCreator pokemonFavoriteCreator = new PokemonFavoriteCreator(userRepository.Object);

            #endregion

            #region When

            await pokemonFavoriteCreator.Execute(user, pokemonFavorite);

            #endregion

            #region Then

            userRepository.Verify(r => r.SaveFavorites(It.IsAny <User>()), Times.Once());

            #endregion
        }
        public void AddPokemonToUserFavorites_ReturnsUserNotFoundException()
        {
            #region Arrange
            int    pokemonId       = PokemonIdMother.Id();
            string userId          = UserIdMother.Id();
            string expectedMessage = $"User '{userId}' does not exists";

            var userRepository = new Mock <UserRepository>();

            userRepository
            .Setup(r => r.SaveFavorites(It.IsAny <User>()));

            UserFinder                userFinder                = new UserFinder(userRepository.Object);
            PokemonFavoriteCreator    pokemonFavoriteCreator    = new PokemonFavoriteCreator(userRepository.Object);
            AddPokemonToUserFavorites addPokemonToUserFavorites = new AddPokemonToUserFavorites(userFinder, pokemonFavoriteCreator);

            #endregion

            #region Act
            var exception = Record.ExceptionAsync(async() => await addPokemonToUserFavorites.Execute(userId, pokemonId));

            #endregion

            #region Assert
            Assert.Equal(expectedMessage, exception.Result.Message);

            #endregion
        }
        public async Task AddPokemonToUserFavorites_ReturnsVoid()
        {
            #region Arrange
            int    pokemonId      = PokemonIdMother.Id();
            string userId         = UserIdMother.Id();
            var    userRepository = new Mock <UserRepository>();

            userRepository
            .Setup(r => r.Find(It.IsAny <UserId>()))
            .ReturnsAsync(UserMother.User(userId));

            userRepository
            .Setup(r => r.Exists(It.IsAny <UserId>()))
            .ReturnsAsync(true);

            userRepository
            .Setup(r => r.SaveFavorites(It.IsAny <User>()));

            UserFinder                userFinder                = new UserFinder(userRepository.Object);
            PokemonFavoriteCreator    pokemonFavoriteCreator    = new PokemonFavoriteCreator(userRepository.Object);
            AddPokemonToUserFavorites addPokemonToUserFavorites = new AddPokemonToUserFavorites(userFinder, pokemonFavoriteCreator);

            #endregion

            #region Act
            await addPokemonToUserFavorites.Execute(userId, pokemonId);

            #endregion

            #region Assert
            userRepository.Verify(r => r.SaveFavorites(It.IsAny <User>()), Times.Once());
            #endregion
        }
        public async Task GetPokemonFavorites_ReturnsPokemonFavorites()
        {
            #region Arrange
            string           id               = UserIdMother.Id();
            UserId           userId           = UserIdMother.UserId();
            int              pokemonId        = PokemonIdMother.Id();
            PokemonFavorites pokemonFavorites = PokemonFavoritesMother.PokemonFavorites();

            var userRepository = new Mock <UserRepository>();

            userRepository
            .Setup(r => r.Find(It.IsAny <UserId>()))
            .ReturnsAsync(UserMother.UserWithFavorites(id, pokemonId));

            userRepository
            .Setup(r => r.Exists(It.IsAny <UserId>()))
            .ReturnsAsync(true);

            UserFinder userFinder = new UserFinder(userRepository.Object);
            PokemonFavoriteSearcher pokemonFavoriteSearcher = new PokemonFavoriteSearcher();
            GetPokemonUserFavorites getPokemonUserFavorites = new GetPokemonUserFavorites(userFinder, pokemonFavoriteSearcher);

            #endregion

            #region Act
            PokemonFavorites favorites = await getPokemonUserFavorites.Execute(id);

            #endregion

            #region Assert
            Assert.True(pokemonFavorites.Favorites.All(f => favorites.Favorites.Any(item =>
                                                                                    item.PokemonId.Id == f.PokemonId.Id)));

            #endregion
        }
Exemplo n.º 10
0
        public async Task SearchUser_NotFound_ReturnsNull()
        {
            #region Arrange

            InMemoryUserRepository inMemoryUserRepository = new InMemoryUserRepository(memoryCache);
            UserId userId = new UserId(UserIdMother.Id());
            #endregion

            #region Act
            User userFound = await inMemoryUserRepository.Find(userId);

            #endregion

            #region Assert
            Assert.Null(userFound);

            #endregion
        }
Exemplo n.º 11
0
        public async Task ExistsUser_ReturnsBool()
        {
            #region Arrange

            InMemoryUserRepository inMemoryUserRepository = new InMemoryUserRepository(memoryCache);
            UserId userId = new UserId(UserIdMother.Id());
            User   user   = new User(userId);
            #endregion

            #region Act
            await inMemoryUserRepository.Save(user);

            bool exists = await inMemoryUserRepository.Exists(userId);

            #endregion

            #region Assert
            Assert.True(exists);

            #endregion
        }
Exemplo n.º 12
0
        public async Task SearchUser_Found_ReturnsUser()
        {
            #region Arrange

            InMemoryUserRepository inMemoryUserRepository = new InMemoryUserRepository(memoryCache);
            UserId userId = new UserId(UserIdMother.Id());
            User   user   = new User(userId);
            #endregion

            #region Act
            await inMemoryUserRepository.Save(user);

            User userFound = await inMemoryUserRepository.Find(userId);

            #endregion

            #region Assert
            Assert.Equal(userFound.UserId.Id, userId.Id);

            #endregion
        }
Exemplo n.º 13
0
        public async Task CreateUser_ReturnsVoid()
        {
            #region Arrange
            string userId         = UserIdMother.Id();
            var    userRepository = new Mock <UserRepository>();

            userRepository
            .Setup(r => r.Save(It.IsAny <User>()));

            UserCreator userCreator = new UserCreator(userRepository.Object);
            CreateUser  createUser  = new CreateUser(userCreator);

            #endregion

            #region Act
            await createUser.Execute(userId);

            #endregion

            #region Assert
            userRepository.Verify(r => r.Save(It.IsAny <User>()), Times.Once());
            #endregion
        }
        public void AddPokemonToUserFavorites_ReturnsPokemonAlreadyExistsException()
        {
            #region Arrange
            int    pokemonId       = PokemonIdMother.Id();
            string userId          = UserIdMother.Id();
            string expectedMessage = $"The pokemon with Id '{pokemonId}' already exists in user favorites list";

            var userRepository = new Mock <UserRepository>();

            userRepository
            .Setup(r => r.Find(It.IsAny <UserId>()))
            .ReturnsAsync(UserMother.UserWithFavorites(userId, pokemonId));

            userRepository
            .Setup(r => r.Exists(It.IsAny <UserId>()))
            .ReturnsAsync(true);

            userRepository
            .Setup(r => r.SaveFavorites(It.IsAny <User>()));

            UserFinder                userFinder                = new UserFinder(userRepository.Object);
            PokemonFavoriteCreator    pokemonFavoriteCreator    = new PokemonFavoriteCreator(userRepository.Object);
            AddPokemonToUserFavorites addPokemonToUserFavorites = new AddPokemonToUserFavorites(userFinder, pokemonFavoriteCreator);

            #endregion

            #region Act
            var exception = Record.ExceptionAsync(async() => await addPokemonToUserFavorites.Execute(userId, pokemonId));

            #endregion

            #region Assert
            Assert.Equal(expectedMessage, exception.Result.Message);

            #endregion
        }