public void PokemonFinder_ReturnsException() { #region Arrange PokemonId pokemonId = new PokemonId(PokemonIdMother.Id()); var pokemonRepository = new Mock <PokemonRepository>(); string expectedMessage = $"Pokemon with Id '{pokemonId.Id}' does not exist"; pokemonRepository .Setup(r => r.Find(It.IsAny <PokemonId>())) .ReturnsAsync(PokemonMother.Pokemon()); var pokemonFinder = new PokemonFinder(pokemonRepository.Object); #endregion #region Act var exception = Record.ExceptionAsync(async() => await pokemonFinder.Execute(pokemonId)); #endregion #region Assert Assert.Equal(expectedMessage, exception.Result.Message); #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 PokemonFinder_ReturnsPokemon() { #region Arrange PokemonId pokemonId = new PokemonId(PokemonIdMother.Id()); var pokemonRepository = new Mock <PokemonRepository>(); pokemonRepository .Setup(r => r.Find(It.IsAny <PokemonId>())) .ReturnsAsync(PokemonMother.Pokemon()); pokemonRepository .Setup(r => r.Exists(It.IsAny <PokemonId>())) .ReturnsAsync(true); var pokemonFinder = new PokemonFinder(pokemonRepository.Object); #endregion #region Act Pokemon pokemon = await pokemonFinder.Execute(pokemonId); #endregion #region Assert Assert.Equal(pokemon.PokemonId.Id, PokemonMother.Pokemon().PokemonId.Id); Assert.Equal(pokemon.PokemonName.Name, PokemonMother.Pokemon().PokemonName.Name); Assert.Equal(pokemon.PokemonTypes.Types.Select(s => s.Type).ToArray(), PokemonMother.Pokemon().PokemonTypes.Types.Select(s => s.Type).ToArray()); #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 }
public static Pokemon Pokemon() { return(new Pokemon(new PokemonId(PokemonIdMother.Id()), new PokemonName(PokemonNameMother.Name()), new PokemonTypes(new List <PokemonType>() { new PokemonType("fire"), new PokemonType("flying"), }))); }
public async Task ExistsUser_ReturnsBool() { #region Arrange PokeApiPokemonRepository pokemonRepository = new PokeApiPokemonRepository(); PokemonId pokemonId = new PokemonId(PokemonIdMother.Id()); #endregion #region Act bool exists = await pokemonRepository.Exists(pokemonId); #endregion #region Assert Assert.True(exists); #endregion }
public async Task Search_Found_ReturnsPokemonDetail() { #region Arrange PokeApiPokemonRepository pokemonRepository = new PokeApiPokemonRepository(); PokemonId pokemonId = new PokemonId(PokemonIdMother.Id()); #endregion #region Act Pokemon pokemon = await pokemonRepository.Find(pokemonId); #endregion #region Assert var typesArray = pokemon.PokemonTypes.Types.Select(s => s.Type).ToArray(); Assert.Equal(pokemon.PokemonId.Id, PokemonMother.Pokemon().PokemonId.Id); Assert.Equal(pokemon.PokemonName.Name, PokemonMother.Pokemon().PokemonName.Name); Assert.Equal(typesArray, PokemonMother.Pokemon().PokemonTypes.Types.Select(s => s.Type).ToArray(), StringComparer.InvariantCultureIgnoreCase); #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 }