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.
118 lines
4.8 KiB
118 lines
4.8 KiB
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Newtonsoft.Json;
|
|
using TMDbLib.Objects.Changes;
|
|
using TMDbLib.Objects.Movies;
|
|
using TMDbLib.Utilities.Converters;
|
|
using TMDbLibTests.Helpers;
|
|
using TMDbLibTests.JsonHelpers;
|
|
using Xunit;
|
|
|
|
namespace TMDbLibTests.UtilityTests
|
|
{
|
|
public class ChangeItemConverterTest : TestBase
|
|
{
|
|
[Fact]
|
|
public void ChangeItemConverter_ChangeItemAdded()
|
|
{
|
|
JsonSerializerSettings settings = new JsonSerializerSettings();
|
|
settings.Converters.Add(new ChangeItemConverter());
|
|
|
|
ChangeItemAdded original = new ChangeItemAdded();
|
|
original.Iso_639_1 = "en";
|
|
original.Value = "Hello world";
|
|
|
|
string json = JsonConvert.SerializeObject(original, settings);
|
|
ChangeItemAdded result = JsonConvert.DeserializeObject<ChangeItemBase>(json, settings) as ChangeItemAdded;
|
|
|
|
Assert.NotNull(result);
|
|
Assert.Equal(original.Iso_639_1, result.Iso_639_1);
|
|
Assert.Equal(original.Value, result.Value);
|
|
}
|
|
|
|
[Fact]
|
|
public void ChangeItemConverter_ChangeItemCreated()
|
|
{
|
|
JsonSerializerSettings settings = new JsonSerializerSettings();
|
|
settings.Converters.Add(new ChangeItemConverter());
|
|
|
|
ChangeItemCreated original = new ChangeItemCreated();
|
|
original.Iso_639_1 = "en";
|
|
|
|
string json = JsonConvert.SerializeObject(original, settings);
|
|
ChangeItemCreated result = JsonConvert.DeserializeObject<ChangeItemBase>(json, settings) as ChangeItemCreated;
|
|
|
|
Assert.NotNull(result);
|
|
Assert.Equal(original.Iso_639_1, result.Iso_639_1);
|
|
}
|
|
|
|
[Fact]
|
|
public void ChangeItemConverter_ChangeItemDeleted()
|
|
{
|
|
JsonSerializerSettings settings = new JsonSerializerSettings();
|
|
settings.Converters.Add(new ChangeItemConverter());
|
|
|
|
ChangeItemDeleted original = new ChangeItemDeleted();
|
|
original.Iso_639_1 = "en";
|
|
original.OriginalValue = "Hello world";
|
|
|
|
string json = JsonConvert.SerializeObject(original, settings);
|
|
ChangeItemDeleted result = JsonConvert.DeserializeObject<ChangeItemBase>(json, settings) as ChangeItemDeleted;
|
|
|
|
Assert.NotNull(result);
|
|
Assert.Equal(original.Iso_639_1, result.Iso_639_1);
|
|
Assert.Equal(original.OriginalValue, result.OriginalValue);
|
|
}
|
|
|
|
[Fact]
|
|
public void ChangeItemConverter_ChangeItemUpdated()
|
|
{
|
|
JsonSerializerSettings settings = new JsonSerializerSettings();
|
|
settings.Converters.Add(new ChangeItemConverter());
|
|
|
|
ChangeItemUpdated original = new ChangeItemUpdated();
|
|
original.Iso_639_1 = "en";
|
|
original.OriginalValue = "Hello world";
|
|
original.Value = "Hello world 1234";
|
|
|
|
string json = JsonConvert.SerializeObject(original, settings);
|
|
ChangeItemUpdated result = JsonConvert.DeserializeObject<ChangeItemBase>(json, settings) as ChangeItemUpdated;
|
|
|
|
Assert.NotNull(result);
|
|
Assert.Equal(original.Iso_639_1, result.Iso_639_1);
|
|
Assert.Equal(original.OriginalValue, result.OriginalValue);
|
|
Assert.Equal(original.Value, result.Value);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Tests the ChangeItemConverter
|
|
/// </summary>
|
|
[Fact]
|
|
public void TestChangeItemConverter()
|
|
{
|
|
// Not all ChangeItem's have an iso_639_1
|
|
IgnoreMissingJson(" / iso_639_1");
|
|
|
|
// Ignore missing movie properties
|
|
IgnoreMissingJson(" / account_states", " / alternative_titles", " / changes", " / credits", " / images", " / keywords", " / lists", " / release_dates", " / releases", " / reviews", " / similar", " / translations", " / videos");
|
|
|
|
Movie latestMovie = Config.Client.GetMovieLatestAsync().Sync();
|
|
List<Change> changes = Config.Client.GetMovieChangesAsync(latestMovie.Id).Sync();
|
|
List<ChangeItemBase> changeItems = changes.SelectMany(s => s.Items).ToList();
|
|
|
|
ChangeAction[] actions = { ChangeAction.Added, ChangeAction.Created, ChangeAction.Updated };
|
|
|
|
Assert.NotEmpty(changeItems);
|
|
Assert.All(changeItems, item => Assert.Contains(item.Action, actions));
|
|
|
|
IEnumerable<ChangeItemBase> items = changeItems.Where(s => s.Action == ChangeAction.Added);
|
|
Assert.All(items, item => Assert.IsType<ChangeItemAdded>(item));
|
|
|
|
items = changeItems.Where(s => s.Action == ChangeAction.Updated);
|
|
Assert.All(items, item => Assert.IsType<ChangeItemUpdated>(item));
|
|
|
|
items = changeItems.Where(s => s.Action == ChangeAction.Created);
|
|
Assert.All(items, item => Assert.IsType<ChangeItemCreated>(item));
|
|
}
|
|
}
|
|
}
|