piwigodotnet/PiwigoDotnet/Piwigo.Client.Tests/AlbumApiTests.cs

153 lines
4.5 KiB
C#

using Microsoft.Extensions.Logging.Abstractions;
using Piwigo.Client.Contract;
namespace Piwigo.Client.Tests;
[TestFixture]
public class AlbumApiTests : ApiTestsBase
{
private IAlbumApi _albumApi = null!;
protected override void OnSetUp()
{
base.OnSetUp();
_albumApi = new AlbumApi(Context, new NullLogger<AlbumApi>());
}
[Test]
public async Task DeleteRepresentative_should_call_api()
{
SetOkResult();
await _albumApi.DeleteRepresentativeAsync(1);
CorrectMethodShouldGetCalled("pwg.categories.deleteRepresentative");
CorrectParamShouldGetSent("category_id", "1");
}
[Test]
public async Task RefreshRepresentative_should_call_api()
{
SetOkResult();
await _albumApi.RefreshRepresentativeAsync(1);
CorrectMethodShouldGetCalled("pwg.categories.refreshRepresentative");
CorrectParamShouldGetSent("category_id", "1");
}
[Test]
public async Task SetRepresentative_should_call_api()
{
SetOkResult();
await _albumApi.SetRepresentativeAsync(1, 2);
CorrectMethodShouldGetCalled("pwg.categories.setRepresentative");
CorrectParamShouldGetSent("category_id", "1");
CorrectParamShouldGetSent("image_id", "2");
}
[Test]
public async Task SetRank_should_call_api()
{
SetOkResult();
await _albumApi.SetRankAsync(1, 2);
CorrectMethodShouldGetCalled("pwg.categories.setRank");
CorrectParamShouldGetSent("category_id", "1");
CorrectParamShouldGetSent("rank", "2");
}
[Test]
public async Task Delete_should_remove_album()
{
SetOkResult();
await _albumApi.DeleteAsync(1, "apiToken");
CorrectMethodShouldGetCalled("pwg.categories.delete");
CorrectParamShouldGetSent("category_id", "1");
}
[Test]
public async Task Move_should_reassign_album()
{
SetOkResult();
await _albumApi.MoveAsync(1, 2, "apiToken");
CorrectMethodShouldGetCalled("pwg.categories.move");
CorrectParamShouldGetSent("category_id", "1");
CorrectParamShouldGetSent("parent", "2");
CorrectParamShouldGetSent("pwg_token", "apiToken");
}
[Test]
public async Task SetInfoAsync_should_pass_all_infos_to_piwigo()
{
SetOkResult();
await _albumApi.SetInfoAsync(1, "albumName", "comment", AlbumStatus.Public);
CorrectMethodShouldGetCalled("pwg.categories.setInfo");
CorrectParamShouldGetSent("category_id", "1");
CorrectParamShouldGetSent("name", "albumName");
CorrectParamShouldGetSent("comment", "comment");
CorrectParamShouldGetSent("status", "public");
}
[Test]
public async Task CalculateOrphansAsync_should_return_correct_values()
{
SetJsonResult(@"{
stat: ""ok"",
result: [ {
nb_images_associated_outside: 1,
nb_images_becoming_orphan: 2,
nb_images_recursive: 3
} ]
}");
var response = await _albumApi.CalculateOrphansAsync(1);
CorrectMethodShouldGetCalled("pwg.categories.calculateOrphans");
CorrectParamShouldGetSent("category_id", "1");
response.Should().NotBeNull();
response.AssociatedOutsideCount.Should().Be(1);
response.BecomingOrphanCount.Should().Be(2);
response.RecursiveImageCount.Should().Be(3);
}
[Test]
public async Task Add_should_create_album_and_return_id()
{
var serverResponse = new PiwigoResponse<AlbumAdded>
{
Status = "ok",
Result = new AlbumAdded
{
Id = 1, Info = "Album added"
}
};
SetJsonResult(serverResponse);
var response = await _albumApi.AddAsync("UnittestMain2", null, "comment", true, AlbumStatus.Public, true, AlbumPosition.Last);
CorrectMethodShouldGetCalled("pwg.categories.add");
CorrectParamShouldGetSent("name", "UnittestMain2");
response.Should().BeGreaterOrEqualTo(1);
}
[Test]
public async Task GetList_should_return_all_existing_albums()
{
await SetJsonResultFromFileAsync("AlbumApi.getList.json");
var response = await _albumApi.GetListAsync(1, true, false, ThumbnailSize.Small);
CorrectMethodShouldGetCalled("pwg.categories.getList");
CorrectParamShouldGetSent("cat_id", "1");
CorrectParamShouldGetSent("recursive", "true");
CorrectParamShouldGetSent("fullname", "false");
CorrectParamShouldGetSent("thumbnail_size", "small");
await Verify(response);
}
}