using Xunit; using Moq; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Hangfire; using Hangfire.Common; using QuantEngine.Web.Services; namespace QuantEngine.Core.Tests; public class SchedulerServiceTests { [Fact] public void InitializeSchedules_RegistersAllFourRequiredJobs() { // Arrange var loggerMock = new Mock>(); var jobClientMock = new Mock(); var recurringJobManagerMock = new Mock(); var scopeFactoryMock = new Mock(); var configMock = new Mock(); configMock.Setup(c => c["Kis:AccountMode"]).Returns("mock"); var service = new SchedulerService( loggerMock.Object, jobClientMock.Object, recurringJobManagerMock.Object, scopeFactoryMock.Object, configMock.Object ); // Act service.InitializeSchedules(); // Assert // Verify daily-collection was added or updated recurringJobManagerMock.Verify(m => m.AddOrUpdate( "daily-collection", It.IsAny(), "0 9 * * *", It.IsAny() ), Times.Once); // Verify hourly-price-update was added or updated recurringJobManagerMock.Verify(m => m.AddOrUpdate( "hourly-price-update", It.IsAny(), "0 9,11,13,15 * * 1-5", It.IsAny() ), Times.Once); // Verify weekly-report was added or updated recurringJobManagerMock.Verify(m => m.AddOrUpdate( "weekly-report", It.IsAny(), "0 17 * * 5", It.IsAny() ), Times.Once); // Verify monthly-optimization was added or updated recurringJobManagerMock.Verify(m => m.AddOrUpdate( "monthly-optimization", It.IsAny(), "0 2 1 * *", It.IsAny() ), Times.Once); } }