public async Task EditGenre(EditGenreDto editedGenre) { using (unitOfWork) { var genreEntity = await unitOfWork.GenreRepository.GetSingleAsync(i => i.Id == editedGenre.Id); if (genreEntity == null) { throw new ArgumentException("Invalid Genre Id"); } GenreDto mapped = mapper.Map <GenreDto>(genreEntity); mapped.Name = editedGenre.Name; mapped.HeadGenreId = editedGenre.HeadGenreId; if (mapped.SubGenres.Any(p => p.HeadGenreId == mapped.Id)) { var subgenreEntity = await unitOfWork.GenreRepository.GetSingleAsync(i => i.HeadGenreId == mapped.Id); GenreDto submapped = mapper.Map <GenreDto>(subgenreEntity); submapped.HeadGenreId = null; subgenreEntity = mapper.Map(submapped, subgenreEntity); unitOfWork.GenreRepository.Update(subgenreEntity); } genreEntity = mapper.Map(mapped, genreEntity); unitOfWork.GenreRepository.Update(genreEntity); await unitOfWork.CommitAsync(); } }
public void EditGenre_ReceivedInvalidId() { EditGenreDto editedGenre = new EditGenreDto() { Id = 1, Name = "NewGenre" }; Genre returnedGenre = new Genre() { Id = 1, Name = "MotorSport" }; GenreDto dto = new GenreDto() { Id = 1, Name = "MotorSport", SubGenres = new List <GenreDto>() }; genreRepositoryMoq.Setup((p) => p.GetSingleAsync(It.IsAny <Expression <Func <Genre, bool> > >())) .Returns(Task.FromResult(returnedGenre)); mapperMoq.Setup(p => p.Map <GenreDto>(returnedGenre)).Returns(dto); //act service.EditGenre(editedGenre); //assert genreRepositoryMoq.Verify(p => p.Update(It.IsAny <Genre>()), Times.Once); unitofworkMoq.Verify(p => p.CommitAsync(), Times.Once); }
public async Task <IActionResult> Put(int id, [FromBody] EditGenreModel value) { EditGenreDto genreDto = new EditGenreDto() { Id = value.Id, HeadGenreId = value.HeadGenreId, Name = value.Name }; await genreService.EditGenre(genreDto); return(StatusCode((int)HttpStatusCode.NoContent)); }
public void EditGenre_ReceivedInvalidId_ThrowsArgumentException() { EditGenreDto editedGenre = new EditGenreDto() { Id = 1, Name = "NewGenre" }; Genre NullreturnedGenre = null; genreRepositoryMoq.Setup((p) => p.GetSingleAsync(It.IsAny <Expression <Func <Genre, bool> > >())) .Returns(Task.FromResult(NullreturnedGenre)); //act Assert.ThrowsAsync <ArgumentException>(async() => { await service.EditGenre(editedGenre); }); //assert genreRepositoryMoq.Verify(p => p.Delete(It.IsAny <Genre>()), Times.Never); unitofworkMoq.Verify(p => p.CommitAsync(), Times.Never); }