public async Task Adding_Song_With_Album_Should_Persiste() { using (var factory = new MusicStoreContextFactory()) { using (var context = factory.CreateMusicStoreContext()) { var unitOfWork = new UnitOfWork(context, _mapper); var album = new AlbumEntity(); context.Albums.Add(album); context.SaveChanges(); var song = new SongForCreatingDto { Name = "First Song", AlbumId = album.Id }; await unitOfWork.Songs.AddAsync(song); await unitOfWork.SaveAsync(); } using (var context = factory.CreateMusicStoreContext()) { var song = context.Songs.Include(a => a.Album).First(); Assert.NotNull(song.Album); } } }
public async Task Adding_Song_With_Invalid_AlbumId_Should_NOT_Persiste() { using (var factory = new MusicStoreContextFactory()) { using (var context = factory.CreateMusicStoreContext()) { var unitOfWork = new UnitOfWork(context, _mapper); var song = new SongForCreatingDto { Name = "First Song", AlbumId = 1 }; try { await unitOfWork.Songs.AddAsync(song); await unitOfWork.SaveAsync(); } catch { } } using (var context = factory.CreateMusicStoreContext()) { Assert.Null(context.Songs.FirstOrDefault()); } } }
public async Task <SongEntity> AddAsync(SongForCreatingDto dto) { var songEntity = mapper.Map <SongEntity>(dto); await context.Songs.AddAsync(songEntity); return(songEntity); }
public async Task Adding_Song_With_Genres_Should_Persiste() { using (var factory = new MusicStoreContextFactory()) { var genresIds = new List <int>(); using (var context = factory.CreateMusicStoreContext()) { var genres = new List <GenreEntity> { new GenreEntity(), new GenreEntity() }; context.Genres.AddRange(genres); context.SaveChanges(); genresIds.Add(genres[0].Id); genresIds.Add(genres[1].Id); } using (var context = factory.CreateMusicStoreContext()) { var unitOfWork = new UnitOfWork(context, _mapper); var song = new SongForCreatingDto { Name = "First Song", GenresIds = new List <int> { genresIds[0], genresIds[1] } }; await unitOfWork.Songs.AddAsync(song); await unitOfWork.SaveAsync(); } using (var context = factory.CreateMusicStoreContext()) { var song = context.Songs.Include(c => c.GenreSong).First(); Assert.Equal(2, song.GenreSong.Count); } } }
public async Task Adding_Song_Should_Persiste() { using (var factory = new MusicStoreContextFactory()) { using (var context = factory.CreateMusicStoreContext()) { var unitOfWork = new UnitOfWork(context, _mapper); var song = new SongForCreatingDto { Name = "First Song" }; await unitOfWork.Songs.AddAsync(song); await unitOfWork.SaveAsync(); } using (var context = factory.CreateMusicStoreContext()) { Assert.NotNull(context.Songs.First()); } } }
public async Task <IActionResult> CreateSong([FromBody] SongForCreatingDto dto) { if (!ModelState.IsValid) { return(BadRequest()); } try { // Validate the album if exist if (dto.AlbumId != null && !await unitOfWork.Albums.Exist(dto.AlbumId)) { dto.AlbumId = null; } // Set the owner of this song to the current signedIn user var currentUserId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value; dto.OwenerId = currentUserId; var songEntity = await unitOfWork.Songs.AddAsync(dto); if (!await unitOfWork.SaveAsync()) { throw new Exception("Creating song failed on save."); } var song = await unitOfWork.Songs.GetAsync(songEntity.Id); return(StatusCode(201, song)); } catch (Exception ex) { logger.LogError(ex, "An error occurred while creating song.", dto); return(StatusCode(500)); } }