/src/NzbDrone.Core.Test/MediaCoverTests/MediaCoverServiceFixture.cs

https://github.com/NzbDrone/NzbDrone · C# · 165 lines · 128 code · 37 blank · 0 comment · 0 complexity · faf7c14a95dadfbf53645d2fe1d03ff0 MD5 · raw file

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using FizzWare.NBuilder;
  5. using FluentAssertions;
  6. using Moq;
  7. using NUnit.Framework;
  8. using NzbDrone.Common.Disk;
  9. using NzbDrone.Common.EnvironmentInfo;
  10. using NzbDrone.Core.MediaCover;
  11. using NzbDrone.Core.Test.Framework;
  12. using NzbDrone.Core.Tv;
  13. using NzbDrone.Core.Tv.Events;
  14. namespace NzbDrone.Core.Test.MediaCoverTests
  15. {
  16. [TestFixture]
  17. public class MediaCoverServiceFixture : CoreTest<MediaCoverService>
  18. {
  19. Series _series;
  20. [SetUp]
  21. public void Setup()
  22. {
  23. Mocker.SetConstant<IAppFolderInfo>(new AppFolderInfo(Mocker.Resolve<IStartupContext>()));
  24. _series = Builder<Series>.CreateNew()
  25. .With(v => v.Id = 2)
  26. .With(v => v.Images = new List<MediaCover.MediaCover> { new MediaCover.MediaCover(MediaCoverTypes.Poster, "") })
  27. .Build();
  28. }
  29. [Test]
  30. public void should_convert_cover_urls_to_local()
  31. {
  32. var covers = new List<MediaCover.MediaCover>
  33. {
  34. new MediaCover.MediaCover {CoverType = MediaCoverTypes.Banner}
  35. };
  36. Mocker.GetMock<IDiskProvider>().Setup(c => c.FileGetLastWrite(It.IsAny<string>()))
  37. .Returns(new DateTime(1234));
  38. Mocker.GetMock<IDiskProvider>().Setup(c => c.FileExists(It.IsAny<string>()))
  39. .Returns(true);
  40. Subject.ConvertToLocalUrls(12, covers);
  41. covers.Single().Url.Should().Be("/MediaCover/12/banner.jpg?lastWrite=1234");
  42. }
  43. [Test]
  44. public void should_convert_media_urls_to_local_without_time_if_file_doesnt_exist()
  45. {
  46. var covers = new List<MediaCover.MediaCover>
  47. {
  48. new MediaCover.MediaCover {CoverType = MediaCoverTypes.Banner}
  49. };
  50. Subject.ConvertToLocalUrls(12, covers);
  51. covers.Single().Url.Should().Be("/MediaCover/12/banner.jpg");
  52. }
  53. [Test]
  54. public void should_resize_covers_if_main_downloaded()
  55. {
  56. Mocker.GetMock<ICoverExistsSpecification>()
  57. .Setup(v => v.AlreadyExists(It.IsAny<string>(), It.IsAny<string>()))
  58. .Returns(false);
  59. Mocker.GetMock<IDiskProvider>()
  60. .Setup(v => v.FileExists(It.IsAny<string>()))
  61. .Returns(true);
  62. Subject.HandleAsync(new SeriesUpdatedEvent(_series));
  63. Mocker.GetMock<IImageResizer>()
  64. .Verify(v => v.Resize(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>()), Times.Exactly(2));
  65. }
  66. [Test]
  67. public void should_resize_covers_if_missing()
  68. {
  69. Mocker.GetMock<ICoverExistsSpecification>()
  70. .Setup(v => v.AlreadyExists(It.IsAny<string>(), It.IsAny<string>()))
  71. .Returns(true);
  72. Mocker.GetMock<IDiskProvider>()
  73. .Setup(v => v.FileExists(It.IsAny<string>()))
  74. .Returns(false);
  75. Subject.HandleAsync(new SeriesUpdatedEvent(_series));
  76. Mocker.GetMock<IImageResizer>()
  77. .Verify(v => v.Resize(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>()), Times.Exactly(2));
  78. }
  79. [Test]
  80. public void should_not_resize_covers_if_exists()
  81. {
  82. Mocker.GetMock<ICoverExistsSpecification>()
  83. .Setup(v => v.AlreadyExists(It.IsAny<string>(), It.IsAny<string>()))
  84. .Returns(true);
  85. Mocker.GetMock<IDiskProvider>()
  86. .Setup(v => v.FileExists(It.IsAny<string>()))
  87. .Returns(true);
  88. Mocker.GetMock<IDiskProvider>()
  89. .Setup(v => v.GetFileSize(It.IsAny<string>()))
  90. .Returns(1000);
  91. Subject.HandleAsync(new SeriesUpdatedEvent(_series));
  92. Mocker.GetMock<IImageResizer>()
  93. .Verify(v => v.Resize(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>()), Times.Never());
  94. }
  95. [Test]
  96. public void should_resize_covers_if_existing_is_empty()
  97. {
  98. Mocker.GetMock<ICoverExistsSpecification>()
  99. .Setup(v => v.AlreadyExists(It.IsAny<string>(), It.IsAny<string>()))
  100. .Returns(true);
  101. Mocker.GetMock<IDiskProvider>()
  102. .Setup(v => v.FileExists(It.IsAny<string>()))
  103. .Returns(true);
  104. Mocker.GetMock<IDiskProvider>()
  105. .Setup(v => v.GetFileSize(It.IsAny<string>()))
  106. .Returns(0);
  107. Subject.HandleAsync(new SeriesUpdatedEvent(_series));
  108. Mocker.GetMock<IImageResizer>()
  109. .Verify(v => v.Resize(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>()), Times.Exactly(2));
  110. }
  111. [Test]
  112. public void should_log_error_if_resize_failed()
  113. {
  114. Mocker.GetMock<ICoverExistsSpecification>()
  115. .Setup(v => v.AlreadyExists(It.IsAny<string>(), It.IsAny<string>()))
  116. .Returns(true);
  117. Mocker.GetMock<IDiskProvider>()
  118. .Setup(v => v.FileExists(It.IsAny<string>()))
  119. .Returns(false);
  120. Mocker.GetMock<IImageResizer>()
  121. .Setup(v => v.Resize(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>()))
  122. .Throws<ApplicationException>();
  123. Subject.HandleAsync(new SeriesUpdatedEvent(_series));
  124. Mocker.GetMock<IImageResizer>()
  125. .Verify(v => v.Resize(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<int>()), Times.Exactly(2));
  126. }
  127. }
  128. }