AudioBookResolverTests.cs 2.0 KB

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