Exemple #1
0
        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);
                }
            }
        }
Exemple #2
0
        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());
                }
            }
        }
Exemple #3
0
        public async Task <SongEntity> AddAsync(SongForCreatingDto dto)
        {
            var songEntity = mapper.Map <SongEntity>(dto);

            await context.Songs.AddAsync(songEntity);

            return(songEntity);
        }
Exemple #4
0
        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);
                }
            }
        }
Exemple #5
0
        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());
                }
            }
        }
Exemple #6
0
        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));
            }
        }