VideoResolverTests.cs 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. using System.Linq;
  2. using Emby.Naming.Common;
  3. using Emby.Naming.Video;
  4. using MediaBrowser.Model.Entities;
  5. using Xunit;
  6. namespace Jellyfin.Naming.Tests.Video
  7. {
  8. public class VideoResolverTests
  9. {
  10. private static NamingOptions _namingOptions = new NamingOptions();
  11. public static TheoryData<VideoFileInfo> ResolveFile_ValidFileNameTestData()
  12. {
  13. var data = new TheoryData<VideoFileInfo>();
  14. data.Add(
  15. new VideoFileInfo(
  16. path: @"/server/Movies/7 Psychos.mkv/7 Psychos.mkv",
  17. container: "mkv",
  18. name: "7 Psychos"));
  19. data.Add(
  20. new VideoFileInfo(
  21. path: @"/server/Movies/3 days to kill (2005)/3 days to kill (2005).mkv",
  22. container: "mkv",
  23. name: "3 days to kill",
  24. year: 2005));
  25. data.Add(
  26. new VideoFileInfo(
  27. path: @"/server/Movies/American Psycho/American.Psycho.mkv",
  28. container: "mkv",
  29. name: "American.Psycho"));
  30. data.Add(
  31. new VideoFileInfo(
  32. path: @"/server/Movies/brave (2007)/brave (2006).3d.sbs.mkv",
  33. container: "mkv",
  34. name: "brave",
  35. year: 2006,
  36. is3D: true,
  37. format3D: "sbs"));
  38. data.Add(
  39. new VideoFileInfo(
  40. path: @"/server/Movies/300 (2007)/300 (2006).3d1.sbas.mkv",
  41. container: "mkv",
  42. name: "300",
  43. year: 2006));
  44. data.Add(
  45. new VideoFileInfo(
  46. path: @"/server/Movies/300 (2007)/300 (2006).3d.sbs.mkv",
  47. container: "mkv",
  48. name: "300",
  49. year: 2006,
  50. is3D: true,
  51. format3D: "sbs"));
  52. data.Add(
  53. new VideoFileInfo(
  54. path: @"/server/Movies/brave (2007)/brave (2006)-trailer.bluray.disc",
  55. container: "disc",
  56. name: "brave",
  57. year: 2006,
  58. isStub: true,
  59. stubType: "bluray"));
  60. data.Add(
  61. new VideoFileInfo(
  62. path: @"/server/Movies/300 (2007)/300 (2006)-trailer.bluray.disc",
  63. container: "disc",
  64. name: "300",
  65. year: 2006,
  66. isStub: true,
  67. stubType: "bluray"));
  68. data.Add(
  69. new VideoFileInfo(
  70. path: @"/server/Movies/Brave (2007)/Brave (2006).bluray.disc",
  71. container: "disc",
  72. name: "Brave",
  73. year: 2006,
  74. isStub: true,
  75. stubType: "bluray"));
  76. data.Add(
  77. new VideoFileInfo(
  78. path: @"/server/Movies/300 (2007)/300 (2006).bluray.disc",
  79. container: "disc",
  80. name: "300",
  81. year: 2006,
  82. isStub: true,
  83. stubType: "bluray"));
  84. data.Add(
  85. new VideoFileInfo(
  86. path: @"/server/Movies/300 (2007)/300 (2006)-trailer.mkv",
  87. container: "mkv",
  88. name: "300",
  89. year: 2006,
  90. extraType: ExtraType.Trailer));
  91. data.Add(
  92. new VideoFileInfo(
  93. path: @"/server/Movies/Brave (2007)/Brave (2006)-trailer.mkv",
  94. container: "mkv",
  95. name: "Brave",
  96. year: 2006,
  97. extraType: ExtraType.Trailer));
  98. data.Add(
  99. new VideoFileInfo(
  100. path: @"/server/Movies/300 (2007)/300 (2006).mkv",
  101. container: "mkv",
  102. name: "300",
  103. year: 2006));
  104. data.Add(
  105. new VideoFileInfo(
  106. path: @"/server/Movies/Bad Boys (1995)/Bad Boys (1995).mkv",
  107. container: "mkv",
  108. name: "Bad Boys",
  109. year: 1995));
  110. data.Add(
  111. new VideoFileInfo(
  112. path: @"/server/Movies/Brave (2007)/Brave (2006).mkv",
  113. container: "mkv",
  114. name: "Brave",
  115. year: 2006));
  116. data.Add(
  117. new VideoFileInfo(
  118. path: @"/server/Movies/Rain Man 1988 REMASTERED 1080p BluRay x264 AAC - JEFF/Rain Man 1988 REMASTERED 1080p BluRay x264 AAC - JEFF.mp4",
  119. container: "mp4",
  120. name: "Rain Man",
  121. year: 1988));
  122. return data;
  123. }
  124. [Theory]
  125. [MemberData(nameof(ResolveFile_ValidFileNameTestData))]
  126. public void ResolveFile_ValidFileName_Success(VideoFileInfo expectedResult)
  127. {
  128. var result = VideoResolver.ResolveFile(expectedResult.Path, _namingOptions);
  129. Assert.NotNull(result);
  130. Assert.Equal(result!.Path, expectedResult.Path);
  131. Assert.Equal(result.Container, expectedResult.Container);
  132. Assert.Equal(result.Name, expectedResult.Name);
  133. Assert.Equal(result.Year, expectedResult.Year);
  134. Assert.Equal(result.ExtraType, expectedResult.ExtraType);
  135. Assert.Equal(result.Format3D, expectedResult.Format3D);
  136. Assert.Equal(result.Is3D, expectedResult.Is3D);
  137. Assert.Equal(result.IsStub, expectedResult.IsStub);
  138. Assert.Equal(result.StubType, expectedResult.StubType);
  139. Assert.Equal(result.IsDirectory, expectedResult.IsDirectory);
  140. Assert.Equal(result.FileNameWithoutExtension.ToString(), expectedResult.FileNameWithoutExtension.ToString());
  141. Assert.Equal(result.ToString(), expectedResult.ToString());
  142. }
  143. [Fact]
  144. public void ResolveFile_EmptyPath()
  145. {
  146. var result = VideoResolver.ResolveFile(string.Empty, _namingOptions);
  147. Assert.Null(result);
  148. }
  149. [Fact]
  150. public void ResolveDirectoryTest()
  151. {
  152. var paths = new[]
  153. {
  154. @"/Server/Iron Man",
  155. @"Batman",
  156. string.Empty
  157. };
  158. var results = paths.Select(path => VideoResolver.ResolveDirectory(path, _namingOptions)).ToList();
  159. Assert.Equal(3, results.Count);
  160. Assert.NotNull(results[0]);
  161. Assert.NotNull(results[1]);
  162. Assert.Null(results[2]);
  163. foreach (var result in results)
  164. {
  165. Assert.Null(result?.Container);
  166. }
  167. }
  168. }
  169. }