AudioBookResolverTests.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using System;
  2. using System.Collections.Generic;
  3. using Emby.Naming.AudioBook;
  4. using Emby.Naming.Common;
  5. using Xunit;
  6. namespace Jellyfin.Naming.Tests.AudioBook
  7. {
  8. public class AudioBookResolverTests
  9. {
  10. private readonly NamingOptions _namingOptions = new NamingOptions();
  11. public static IEnumerable<object[]> GetResolveFileTestData()
  12. {
  13. yield return new object[]
  14. {
  15. new AudioBookFileInfo(
  16. @"/server/AudioBooks/Larry Potter/Larry Potter.mp3",
  17. "mp3")
  18. };
  19. yield return new object[]
  20. {
  21. new AudioBookFileInfo(
  22. @"/server/AudioBooks/Berry Potter/Chapter 1 .ogg",
  23. "ogg",
  24. chapterNumber: 1)
  25. };
  26. yield return new object[]
  27. {
  28. new AudioBookFileInfo(
  29. @"/server/AudioBooks/Nerry Potter/Part 3 - Chapter 2.mp3",
  30. "mp3",
  31. chapterNumber: 2,
  32. partNumber: 3)
  33. };
  34. }
  35. [Theory]
  36. [MemberData(nameof(GetResolveFileTestData))]
  37. public void Resolve_ValidFileName_Success(AudioBookFileInfo expectedResult)
  38. {
  39. var result = new AudioBookResolver(_namingOptions).Resolve(expectedResult.Path);
  40. Assert.NotNull(result);
  41. Assert.Equal(result!.Path, expectedResult.Path);
  42. Assert.Equal(result!.Container, expectedResult.Container);
  43. Assert.Equal(result!.ChapterNumber, expectedResult.ChapterNumber);
  44. Assert.Equal(result!.PartNumber, expectedResult.PartNumber);
  45. }
  46. [Fact]
  47. public void Resolve_InvalidExtension()
  48. {
  49. var result = new AudioBookResolver(_namingOptions).Resolve(@"/server/AudioBooks/Larry Potter/Larry Potter.mp9");
  50. Assert.Null(result);
  51. }
  52. [Fact]
  53. public void Resolve_EmptyFileName()
  54. {
  55. var result = new AudioBookResolver(_namingOptions).Resolve(string.Empty);
  56. Assert.Null(result);
  57. }
  58. }
  59. }