MovieNfoParserTests.cs 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using System;
  2. using System.Linq;
  3. using System.Threading;
  4. using MediaBrowser.Common.Configuration;
  5. using MediaBrowser.Controller.Entities;
  6. using MediaBrowser.Controller.Providers;
  7. using MediaBrowser.Model.Configuration;
  8. using MediaBrowser.Model.Entities;
  9. using MediaBrowser.Model.Providers;
  10. using MediaBrowser.XbmcMetadata.Parsers;
  11. using Microsoft.Extensions.Logging.Abstractions;
  12. using Moq;
  13. using Xunit;
  14. namespace Jellyfin.XbmcMetadata.Parsers.Tests
  15. {
  16. public class MovieNfoParserTests
  17. {
  18. [Fact]
  19. public void Fetch_Valid_Succes()
  20. {
  21. var providerManager = new Mock<IProviderManager>();
  22. providerManager.Setup(x => x.GetExternalIdInfos(It.IsAny<IHasProviderIds>()))
  23. .Returns(Enumerable.Empty<ExternalIdInfo>());
  24. var config = new Mock<IConfigurationManager>();
  25. config.Setup(x => x.GetConfiguration(It.IsAny<string>()))
  26. .Returns(new XbmcMetadataOptions());
  27. var parser = new MovieNfoParser(new NullLogger<MovieNfoParser>(), config.Object, providerManager.Object);
  28. var result = new MetadataResult<Video>()
  29. {
  30. Item = new Video()
  31. };
  32. parser.Fetch(result, "Test Data/Justice League.nfo", CancellationToken.None);
  33. var item = result.Item;
  34. Assert.Equal("Justice League", item.OriginalTitle);
  35. Assert.Equal("Justice for all.", item.Tagline);
  36. Assert.Equal("tt0974015", item.ProviderIds["imdb"]);
  37. Assert.Equal(4, item.Genres.Length);
  38. Assert.Contains("Action", item.Genres);
  39. Assert.Contains("Adventure", item.Genres);
  40. Assert.Contains("Fantasy", item.Genres);
  41. Assert.Contains("Sci-Fi", item.Genres);
  42. Assert.Equal(new DateTime(2017, 11, 15), item.PremiereDate);
  43. Assert.Single(item.Studios);
  44. Assert.Contains("DC Comics", item.Studios);
  45. Assert.Equal("1.777778", item.AspectRatio);
  46. Assert.Equal(1920, item.Width);
  47. Assert.Equal(1080, item.Height);
  48. Assert.Equal(new TimeSpan(0, 0, 6268).Ticks, item.RunTimeTicks);
  49. Assert.True(item.HasSubtitles);
  50. Assert.Equal(18, result.People.Count);
  51. var writers = result.People.Where(x => x.Type == PersonType.Writer).ToArray();
  52. Assert.Equal(2, writers.Length);
  53. var writerNames = writers.Select(x => x.Name);
  54. Assert.Contains("Jerry Siegel", writerNames);
  55. Assert.Contains("Joe Shuster", writerNames);
  56. var directors = result.People.Where(x => x.Type == PersonType.Director).ToArray();
  57. Assert.Single(directors);
  58. Assert.Equal("Zack Snyder", directors[0].Name);
  59. var actors = result.People.Where(x => x.Type == PersonType.Actor).ToArray();
  60. Assert.Equal(15, actors.Length);
  61. // Only test one actor
  62. var aquaman = actors.FirstOrDefault(x => x.Role.Equals("Aquaman", StringComparison.Ordinal));
  63. Assert.NotNull(aquaman);
  64. Assert.Equal("Jason Momoa", aquaman!.Name);
  65. Assert.Equal(5, aquaman!.SortOrder);
  66. Assert.Equal("https://m.media-amazon.com/images/M/MV5BMTI5MTU5NjM1MV5BMl5BanBnXkFtZTcwODc4MDk0Mw@@._V1_SX1024_SY1024_.jpg", aquaman!.ImageUrl);
  67. }
  68. }
  69. }