diff --git a/src/dotnet/QuantEngine.Core.Tests/QuantEngine.Core.Tests.csproj b/src/dotnet/QuantEngine.Core.Tests/QuantEngine.Core.Tests.csproj
index a7efe672..4c80110d 100644
--- a/src/dotnet/QuantEngine.Core.Tests/QuantEngine.Core.Tests.csproj
+++ b/src/dotnet/QuantEngine.Core.Tests/QuantEngine.Core.Tests.csproj
@@ -12,6 +12,8 @@
+
+
@@ -22,6 +24,7 @@
+
diff --git a/src/dotnet/QuantEngine.Core.Tests/SchedulerServiceTests.cs b/src/dotnet/QuantEngine.Core.Tests/SchedulerServiceTests.cs
new file mode 100644
index 00000000..c2287449
--- /dev/null
+++ b/src/dotnet/QuantEngine.Core.Tests/SchedulerServiceTests.cs
@@ -0,0 +1,70 @@
+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);
+ }
+}