using FluentAssertions; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Quartz; using Quartz.Impl; using Quartz.Spi; using Quartzmin; using Quartzmin.HostedService; using System; using Xunit; namespace SilkierQuartz.Test { public class IServiceCollectionExtensionsUnitTest { [Fact(DisplayName = "«арегистрировали HostedService")] public void IServiceCollectionExtensions_Register_HostedService() { IServiceCollection serviceCollection = new ServiceCollection(); IServiceCollectionExtensions.UseQuartzHostedService(serviceCollection, null); var testClass = serviceCollection.BuildServiceProvider().GetRequiredService(); testClass.Should() .NotBeNull() .And.BeOfType(); } [Fact(DisplayName = "«арегистрировали IJobFactory (дл¤ DI в Job'ах)")] public void IServiceCollectionExtensions_Register_IJobFactory() { IServiceCollection serviceCollection = new ServiceCollection(); IServiceCollectionExtensions.UseQuartzHostedService(serviceCollection, null); var testClass = serviceCollection.BuildServiceProvider().GetRequiredService(); testClass.Should() .NotBeNull() .And.BeOfType(); } [Fact(DisplayName = "«арегистрировали ISchedulerFactory (не передали параметры дл¤ инициализации)")] public void IServiceCollectionExtensions_Register_ISchedulerFactory() { IServiceCollection serviceCollection = new ServiceCollection(); IServiceCollectionExtensions.UseQuartzHostedService(serviceCollection, null); var testClass = serviceCollection.BuildServiceProvider().GetRequiredService(); testClass.Should() .NotBeNull() .And.BeOfType(); } [Fact(DisplayName = "«арегистрировали ISchedulerFactory (передали параметры дл¤ инициализации)")] public void IServiceCollectionExtensions_Register_ISchedulerFactory_WithParams() { IServiceCollection serviceCollection = new ServiceCollection(); IServiceCollectionExtensions.UseQuartzHostedService(serviceCollection, options => { options.Add("quartz.threadPool.threadCount", "1"); }); // TODO: ѕроверить что параметры передались в конструктор var testClass = serviceCollection.BuildServiceProvider().GetRequiredService(); testClass.Should() .NotBeNull() .And.BeOfType(); } [Fact(DisplayName = "ѕосле регистрации зависимосте возвращаетс¤ IJobRegistrator")] public void IServiceCollectionExtensions_Return_IJobRegistrator() { IServiceCollection serviceCollection = new ServiceCollection(); var result = IServiceCollectionExtensions.UseQuartzHostedService(serviceCollection, null); result.Should() .NotBeNull() .And.BeAssignableTo() .Subject.Services.Should().Equal(serviceCollection); } } }