AudioBookResolverTests.cs 2.1 KB

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