Example #1
0
        public async Task <IActionResult> Delete([FromBody] ArtistDo artist)
        {
            if (artist == null)
            {
                return(BadRequest(ArtistShouldNotBeNull));
            }

            return(await TryExecutingServiceAsync(() => _artistService.Delete(artist), Ok()));
        }
Example #2
0
        public async Task <IActionResult> Create([FromBody] ArtistDo artist)
        {
            if (artist == null)
            {
                return(BadRequest(ArtistShouldNotBeNull));
            }

            return(await TryExecutingServiceAsync(() => _artistService.Create(artist), CreatedAtRoute("GetArtistById", new { id = artist.ArtistId, artist })));
        }
Example #3
0
        public async Task Create_ShouldCallUnitOfWorkCreateAndSaveChanges()
        {
            CreateSubject();
            var artist = new ArtistDo();

            await _subject.Create(artist);

            _unitOfWork.Artists.Received().Create(artist);
            await _unitOfWork.Received().SaveChangesAsync();
        }
Example #4
0
        public async Task Update_ShouldCallUnitOfWorkUpdateAndSaveChanges()
        {
            CreateSubject();
            var artist = new ArtistDo {
                ArtistId = _artistId
            };

            await _subject.Update(_artistId, artist);

            await _unitOfWork.Artists.Received().Update(artist);

            await _unitOfWork.Received().SaveChangesAsync();
        }
Example #5
0
        private ArtistDo GetOrAddArtist(ArtistDo artist)
        {
            if (artists.ContainsKey(artist.Name))
            {
                artist = artists[artist.Name];
            }
            else
            {
                artists.Add(artist.Name, artist);
            }

            return(artist);
        }
Example #6
0
        public async Task <IActionResult> Update(int id, [FromBody] ArtistDo artist)
        {
            if (artist == null)
            {
                return(BadRequest(ArtistShouldNotBeNull));
            }
            if (id == 0)
            {
                return(BadRequest("You must provide an id in order to retrieve the artist"));
            }

            return(await TryExecutingServiceAsync(() => _artistService.Update(id, artist), Ok()));
        }
Example #7
0
        public async Task Create_ShouldAddAnArtistInDbContext()
        {
            var artist = new ArtistDo {
                ArtistId = 3, FirstName = "Otis", LastName = "Redding"
            };

            _subject.Create(artist);
            _dbContext.SaveChanges();

            var result = (await _subject.GetAll()).ToList();

            result.Should().HaveCount(3);
            result.Last().FirstName.Should().Be(artist.FirstName);
        }
Example #8
0
        private void HandleAlbumsWithoutArtist(ArtistDo unkownArtist, ArtistDo variousArtists)
        {
            var albumArtistsByAlbum = albumArtists.ToLookup(aa => aa.Item1);
            var albumTracksByAlbum  = albumTracks.ToLookup(at => at.Item2);
            var trackArtistsByTrack = trackArtists.ToLookup(ta => ta.Item1);
            var albumsWithoutArtist = albumCollection.Values.Where(a => !albumArtistsByAlbum.Contains(a)).ToList();

            foreach (var album in albumsWithoutArtist)
            {
                var tracksOfAlbum = albumTracksByAlbum.Contains(album)
                    ? albumTracksByAlbum[album].Select(at => at.Item1)
                    : Enumerable.Empty <TrackDo>();

                var artistsOfAlbum = tracksOfAlbum
                                     .SelectMany(t => trackArtistsByTrack.Contains(t)
                        ? trackArtistsByTrack[t].Select(ta => ta.Item2)
                        : Enumerable.Empty <ArtistDo>())
                                     .Distinct()
                                     .ToList();

                if (artistsOfAlbum.Count == 0)
                {
                    var albumArtist = new Tuple <AlbumDo, ArtistDo>(album, unkownArtist);
                    albumArtists.Add(albumArtist);
                }
                else if (artistsOfAlbum.Count <= 2)
                {
                    foreach (var artist in artistsOfAlbum)
                    {
                        var albumArtist = new Tuple <AlbumDo, ArtistDo>(album, artist);
                        albumArtists.Add(albumArtist);
                    }
                }
                else
                {
                    var albumArtist = new Tuple <AlbumDo, ArtistDo>(album, variousArtists);
                    albumArtists.Add(albumArtist);
                }
            }
        }
Example #9
0
 public async Task Delete(ArtistDo artist)
 {
     _unitOfWork.Artists.Delete(artist);
     await _unitOfWork.SaveChangesAsync();
 }
Example #10
0
        public async Task Update(int id, ArtistDo artist)
        {
            await _unitOfWork.Artists.Update(artist);

            await _unitOfWork.SaveChangesAsync();
        }