public async Task GetAllSongLyricsAsync_ReturnsOneSong_OneSuccessfulLyricsResponse() { var artistName = "artistName"; var worksResponse = new WorksResponse { Works = new List <Work> { new Work { Id = "1234DSFFWD", Title = "Song", Type = "Song" }, new Work { Id = "127364GEEC", Title = "AnotherSong", Type = "AnotherSong" } } }; var lyricsResponse = LyricsResponseTestData.ResponseWithLyrics(); _lyricsApiClientMock.Setup(lyricsApiClient => lyricsApiClient.GetLyricsAsync(artistName, worksResponse.Works[0].Title)) .Returns(Task.FromResult <LyricsResponse>(lyricsResponse)); _lyricsApiClientMock.Setup(lyricsApiClient => lyricsApiClient.GetLyricsAsync(artistName, worksResponse.Works[1].Title)) .Returns(Task.FromResult <LyricsResponse>(new LyricsResponse { Lyrics = "" })); var results = await _sut.GetAllSongLyricsAsync(artistName, worksResponse.Works); var resultList = results.ToList(); resultList.Should().HaveCount(1); resultList[0].Title.Should().Be("Song"); resultList[0].Lyrics.Should().Be("Some Lyrics"); }
public async Task <WorksResponse> GetArtistWorksAsync(string artistId) { int limit = 100; int offset = 0; WorksResponse response = new WorksResponse(); WorksResponse worksBatch; do { worksBatch = await _musicInfoClient.GetWorksAsync(artistId, limit, offset); var allSongs = worksBatch.Works.Where(w => w.Type == "Song"); response.Works.AddRange(allSongs); offset += limit; } while (worksBatch.Works.Count == limit); return(response); }
public async Task GetAllSongLyricsAsync_ReturnsNoSongs_NullLyricsResponse() { var artistName = "artistName"; var worksResponse = new WorksResponse { Works = new List <Work> { new Work { Id = "1234DSF", Title = "Song", Type = "Song" } } }; _lyricsApiClientMock.Setup(lyricsApiClient => lyricsApiClient.GetLyricsAsync(artistName, It.IsAny <string>())).Returns(Task.FromResult <LyricsResponse>(null)); var results = await _sut.GetAllSongLyricsAsync(artistName, worksResponse.Works); results.Should().BeEmpty(); }