using Cleanuparr.Infrastructure.Events.Interfaces;
using Cleanuparr.Infrastructure.Features.Arr.Interfaces;
using Cleanuparr.Infrastructure.Features.Context;
using Cleanuparr.Infrastructure.Features.DownloadClient;
using Cleanuparr.Infrastructure.Features.Files;
using Cleanuparr.Infrastructure.Features.Jobs;
using Cleanuparr.Infrastructure.Features.MalwareBlocker;
using Cleanuparr.Persistence;
using MassTransit;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Time.Testing;
using Moq;
namespace Cleanuparr.Infrastructure.Tests.Features.Jobs.TestHelpers;
///
/// Base fixture for job handler tests providing common mock dependencies
///
public class JobHandlerFixture : IDisposable
{
public DataContext DataContext { get; private set; }
public MemoryCache Cache { get; }
public Mock MessageBus { get; }
public Mock ArrClientFactory { get; }
public Mock ArrQueueIterator { get; }
public Mock DownloadServiceFactory { get; }
public Mock EventPublisher { get; }
public Mock BlocklistProvider { get; }
public Mock HardLinkFileService { get; }
public FakeTimeProvider TimeProvider { get; private set; }
public JobHandlerFixture()
{
DataContext = TestDataContextFactory.Create();
Cache = new MemoryCache(new MemoryCacheOptions());
MessageBus = new Mock();
ArrClientFactory = new Mock();
ArrQueueIterator = new Mock();
DownloadServiceFactory = new Mock();
EventPublisher = new Mock();
BlocklistProvider = new Mock();
HardLinkFileService = new Mock();
TimeProvider = new FakeTimeProvider();
// Setup default behaviors
SetupDefaultBehaviors();
// Setup JobRunId in context for tests
ContextProvider.SetJobRunId(Guid.NewGuid());
}
private void SetupDefaultBehaviors()
{
// EventPublisher methods return completed task by default
EventPublisher
.Setup(x => x.PublishAsync(
It.IsAny(),
It.IsAny(),
It.IsAny(),
It.IsAny