using Microsoft.Extensions.Logging; using Moq; using RdtClient.Data.Data; using RdtClient.Data.Enums; using RdtClient.Data.Models.Data; using RdtClient.Service.Helpers; using RdtClient.Service.Services; namespace RdtClient.Service.Test.Services; public class TorrentRunnerTest { [Fact] public async Task Tick_ShouldNotRequeueCompletedErrorTorrent() { var testSettings = new TestSettings(); var runnerState = new TorrentRunnerState(); testSettings.Current.Provider.ApiKey = "test-api-key"; testSettings.Current.Provider.Provider = Provider.RealDebrid; testSettings.Current.Provider.MaxParallelDownloads = 1; testSettings.Current.DownloadClient.DownloadPath = "/downloads"; var erroredTorrent = new Torrent { TorrentId = Guid.NewGuid(), Hash = "hash-1", RdName = "Torrent 1", FileOrMagnet = "magnet:?xt=urn:btih:hash-1", Type = DownloadType.Torrent, RdStatus = TorrentStatus.Queued, DeleteOnError = 10, Error = "Could not add to provider: Infringing file", Completed = DateTimeOffset.UtcNow.AddMinutes(-5), Downloads = new List() }; var torrentDataMock = new Mock(MockBehavior.Strict); torrentDataMock.Setup(m => m.Get()) .ReturnsAsync(new List { erroredTorrent }); var torrents = new Torrents(Mock.Of>(), torrentDataMock.Object, Mock.Of(), null!, null!, null!, null!, null!, null!, null!, null!, testSettings, runnerState); var torrentRunner = new TorrentRunner(Mock.Of>(), torrents, new(null!), new(null!, torrents), Mock.Of(), new RateLimitCoordinator(), testSettings, runnerState); await torrentRunner.Tick(); torrentDataMock.Verify(m => m.UpdateComplete(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny()), Times.Never); } }