mirror of https://github.com/LordMike/TMDbLib.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
146 lines
5.8 KiB
146 lines
5.8 KiB
using System;
|
|
using System.Linq;
|
|
using Xunit;
|
|
using TMDbLib.Objects.Authentication;
|
|
using TMDbLib.Objects.General;
|
|
using TMDbLib.Objects.Lists;
|
|
using TMDbLib.Objects.Movies;
|
|
using TMDbLib.Objects.Search;
|
|
using TMDbLibTests.Helpers;
|
|
using TMDbLibTests.JsonHelpers;
|
|
|
|
namespace TMDbLibTests
|
|
{
|
|
public class ClientListsTests : TestBase
|
|
{
|
|
private const string TestListId = "528349d419c2954bd21ca0a8";
|
|
|
|
[Fact]
|
|
public void TestList()
|
|
{
|
|
// Get list
|
|
GenericList list = Config.Client.GetListAsync(TestListId).Result;
|
|
|
|
Assert.NotNull(list);
|
|
Assert.Equal(TestListId, list.Id);
|
|
Assert.Equal(list.ItemCount, list.Items.Count);
|
|
|
|
foreach (SearchMovie movieResult in list.Items)
|
|
{
|
|
Assert.NotNull(movieResult);
|
|
|
|
// Ensure all movies point to this list
|
|
int page = 1;
|
|
SearchContainer<ListResult> movieLists = Config.Client.GetMovieListsAsync(movieResult.Id).Result;
|
|
while (movieLists != null)
|
|
{
|
|
// Check if the current result page contains the relevant list
|
|
if (movieLists.Results.Any(s => s.Id == TestListId))
|
|
{
|
|
movieLists = null;
|
|
continue;
|
|
}
|
|
|
|
// See if there is an other page we could try, if not the test fails
|
|
if (movieLists.Page < movieLists.TotalPages)
|
|
movieLists = Config.Client.GetMovieListsAsync(movieResult.Id, ++page).Result;
|
|
else
|
|
throw new Exception($"Movie '{movieResult.Title}' was not linked to the test list");
|
|
}
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
public void TestListIsMoviePresentFailure()
|
|
{
|
|
Assert.False(Config.Client.GetListIsMoviePresentAsync(TestListId, IdHelper.Terminator).Result);
|
|
Config.Client.SetSessionInformation(Config.UserSessionId, SessionType.UserSession);
|
|
|
|
// Clear list
|
|
Assert.True(Config.Client.ListClearAsync(TestListId).Result);
|
|
|
|
// Verify Avatar is not present
|
|
Assert.False(Config.Client.GetListIsMoviePresentAsync(TestListId, IdHelper.Avatar).Result);
|
|
|
|
// Add Avatar
|
|
Assert.True(Config.Client.ListAddMovieAsync(TestListId, IdHelper.Avatar).Result);
|
|
|
|
// Verify Avatar is present
|
|
Assert.True(Config.Client.GetListIsMoviePresentAsync(TestListId, IdHelper.Avatar).Result);
|
|
}
|
|
|
|
[Fact]
|
|
public void TestListCreateAndDelete()
|
|
{
|
|
const string listName = "Test List 123";
|
|
|
|
Config.Client.SetSessionInformation(Config.UserSessionId, SessionType.UserSession);
|
|
string newListId = Config.Client.ListCreateAsync(listName).Result;
|
|
|
|
Assert.False(string.IsNullOrWhiteSpace(newListId));
|
|
|
|
GenericList newlyAddedList = Config.Client.GetListAsync(newListId).Result;
|
|
Assert.NotNull(newlyAddedList);
|
|
Assert.Equal(listName, newlyAddedList.Name);
|
|
Assert.Equal("", newlyAddedList.Description); // "" is the default value
|
|
Assert.Equal("en", newlyAddedList.Iso_639_1); // en is the default value
|
|
Assert.Equal(0, newlyAddedList.ItemCount);
|
|
Assert.Equal(0, newlyAddedList.Items.Count);
|
|
Assert.False(string.IsNullOrWhiteSpace(newlyAddedList.CreatedBy));
|
|
|
|
Assert.True(Config.Client.ListDeleteAsync(newListId).Result);
|
|
}
|
|
|
|
[Fact]
|
|
public void TestListDeleteFailure()
|
|
{
|
|
Config.Client.SetSessionInformation(Config.UserSessionId, SessionType.UserSession);
|
|
|
|
// Try removing a list with an incorrect id
|
|
Assert.False(Config.Client.ListDeleteAsync("bla").Result);
|
|
}
|
|
|
|
[Fact]
|
|
public void TestListAddAndRemoveMovie()
|
|
{
|
|
Config.Client.SetSessionInformation(Config.UserSessionId, SessionType.UserSession);
|
|
|
|
// Add a new movie to the list
|
|
Assert.True(Config.Client.ListAddMovieAsync(TestListId, IdHelper.EvanAlmighty).Result);
|
|
|
|
// Try again, this time it should fail since the list already contains this movie
|
|
Assert.False(Config.Client.ListAddMovieAsync(TestListId, IdHelper.EvanAlmighty).Result);
|
|
|
|
// Get list and check if the item was added
|
|
GenericList listAfterAdd = Config.Client.GetListAsync(TestListId).Result;
|
|
Assert.True(listAfterAdd.Items.Any(m => m.Id == IdHelper.EvanAlmighty));
|
|
|
|
// Remove the previously added movie from the list
|
|
Assert.True(Config.Client.ListRemoveMovieAsync(TestListId, IdHelper.EvanAlmighty).Result);
|
|
|
|
// Get list and check if the item was removed
|
|
GenericList listAfterRemove = Config.Client.GetListAsync(TestListId).Result;
|
|
Assert.False(listAfterRemove.Items.Any(m => m.Id == IdHelper.EvanAlmighty));
|
|
}
|
|
|
|
[Fact]
|
|
public void TestListClear()
|
|
{
|
|
Config.Client.SetSessionInformation(Config.UserSessionId, SessionType.UserSession);
|
|
|
|
// Add a new movie to the list
|
|
Assert.True(Config.Client.ListAddMovieAsync(TestListId, IdHelper.MadMaxFuryRoad).Result);
|
|
|
|
// Get list and check if the item was added
|
|
GenericList listAfterAdd = Config.Client.GetListAsync(TestListId).Result;
|
|
Assert.True(listAfterAdd.Items.Any(m => m.Id == IdHelper.MadMaxFuryRoad));
|
|
|
|
// Clear the list
|
|
Assert.True(Config.Client.ListClearAsync(TestListId).Result);
|
|
|
|
// Get list and check that all items were removed
|
|
GenericList listAfterRemove = Config.Client.GetListAsync(TestListId).Result;
|
|
Assert.False(listAfterRemove.Items.Any());
|
|
}
|
|
}
|
|
}
|