Fix ArtistGetTopTagsCommandTests

- also add validation to Artist.GetTopTagsCommand.
This commit is contained in:
Rikki Tooley 2016-05-26 23:29:32 +01:00
parent 8ea1a0cb08
commit 68e36f0139
2 changed files with 19 additions and 6 deletions

View File

@ -18,7 +18,7 @@ public class ArtistGetTopTagsCommandTests : CommandTestsBase
[SetUp] [SetUp]
public void Initialise() public void Initialise()
{ {
_command = new GetTopTagsCommand(MAuth.Object, ""); _command = new GetTopTagsCommand(MAuth.Object);
} }
[Test] [Test]

View File

@ -20,12 +20,24 @@ internal class GetTopTagsCommand : GetAsyncCommandBase<PageResponse<LastTag>>
public GetTopTagsCommand(ILastAuth auth) : base(auth) public GetTopTagsCommand(ILastAuth auth) : base(auth)
{ {
} }
public override void SetParameters() public override void SetParameters()
{ {
if (ArtistMbid != null) var hasMbid = !string.IsNullOrEmpty(ArtistMbid);
var hasName = !string.IsNullOrEmpty(ArtistName);
if (!hasMbid && !hasName)
{
throw new InvalidOperationException($"Either {nameof(ArtistMbid)} or {nameof(ArtistName)} must be set");
}
if (hasMbid && hasName)
{
throw new InvalidOperationException($"");
}
if (hasMbid)
{ {
Parameters.Add("mbid", ArtistMbid); Parameters.Add("mbid", ArtistMbid);
} }
@ -33,10 +45,11 @@ public override void SetParameters()
{ {
Parameters.Add("artist", ArtistName); Parameters.Add("artist", ArtistName);
} }
Parameters.Add("autocorrect", Convert.ToInt32(Autocorrect).ToString()); Parameters.Add("autocorrect", Convert.ToInt32(Autocorrect).ToString());
} }
public async override Task<PageResponse<LastTag>> HandleResponse(HttpResponseMessage response) public override async Task<PageResponse<LastTag>> HandleResponse(HttpResponseMessage response)
{ {
var json = await response.Content.ReadAsStringAsync(); var json = await response.Content.ReadAsStringAsync();
@ -47,7 +60,7 @@ public async override Task<PageResponse<LastTag>> HandleResponse(HttpResponseMes
var resultsToken = jtoken.SelectToken("toptags"); var resultsToken = jtoken.SelectToken("toptags");
var itemsToken = resultsToken.SelectToken("tag"); var itemsToken = resultsToken.SelectToken("tag");
return PageResponse<LastTag>.CreateSuccessResponse(itemsToken, token => LastTag.ParseJToken(token)); return PageResponse<LastTag>.CreateSuccessResponse(itemsToken, LastTag.ParseJToken);
} }
else else
{ {