/// <summary> /// DIを実行する /// </summary> /// <param name="appSettings">アプリケーション設定を上書きする場合は指定する</param> /// <param name="testLogs">ログの格納先</param> /// <param name="exceptionType">DbCleanerServiceのモックに例外をスローさせる場合そのタイプを指定する。DbCleanerServiceのモックを使用しない場合はnullを指定する</param> private void DependencyInjection(Dictionary <string, string> appSettings = null, List <TestLog> testLogs = null, Type exceptionType = null) { var builder = new TestDiProviderBuilder <OperationAppSettings>(FunctionsHostBuilderExtend.AddUtility); builder.ServiceCollection.AddTransient <DbCleanController>(); if (exceptionType != null) { Exception exception = Activator.CreateInstance(exceptionType) as Exception; builder.ServiceCollection.AddTransient <Rms.Server.Core.Service.Services.ICleanDbService>(x => new ErrorCleanDbService(exception)); } builder.AddConfigures(appSettings); Mock <DateTimeProvider> timeProviderMock = new Mock <DateTimeProvider>(); timeProviderMock.SetupGet(tp => tp.UtcNow).Returns(TestTime); builder.ServiceCollection.AddSingleton <ITimeProvider>(timeProviderMock.Object); if (testLogs != null) { builder.ServiceCollection.AddSingleton <ILogger <CleanDbService> >(new TestLogger <CleanDbService>(testLogs)); } ServiceProvider provider = builder.Build(); settings = provider.GetService <OperationAppSettings>() as OperationAppSettings; target = provider.GetService <DbCleanController>(); }
/// <summary> /// DIを実行する /// </summary> /// <param name="appSettings">アプリケーション設定を上書きする場合は指定する</param> /// <param name="testLogs">ログの格納先</param> /// <param name="testMails">送信したメール情報を格納するリスト</param> /// <param name="mockResponseCode">SendMailメソッドが返却するHTTPステータスコード</param> /// <param name="mockResponseException">SendMailメソッドが返却するException</param> private void DependencyInjection(Dictionary <string, string> appSettings = null, List <TestLog> testLogs = null, List <MailInfo> testMails = null, HttpStatusCode mockResponseCode = HttpStatusCode.Accepted, Exception mockResponseException = null) { var builder = new TestDiProviderBuilder <OperationAppSettings>(FunctionsHostBuilderExtend.AddUtility); builder.ServiceCollection.AddTransient <MailSenderController>(); builder.ServiceCollection.AddTransient <FailureBlob>(); builder.AddConfigures(appSettings); Mock <DateTimeProvider> timeProviderMock = new Mock <DateTimeProvider>(); timeProviderMock.SetupGet(tp => tp.UtcNow).Returns(TestTime); builder.ServiceCollection.AddSingleton <ITimeProvider>(timeProviderMock.Object); if (testLogs != null) { builder.ServiceCollection.AddSingleton <ILogger <MailSenderService> >(new TestLogger <MailSenderService>(testLogs)); } if (testMails != null) { builder.ServiceCollection.AddTransient <IMailRepository>(x => new TestMailRepository(testMails, mockResponseCode, mockResponseException)); } ServiceProvider provider = builder.Build(); failureBlob = provider.GetService <FailureBlob>(); settings = provider.GetService <AppSettings>() as OperationAppSettings; target = provider.GetService <MailSenderController>(); }
/// <summary> /// コンストラクタ /// </summary> /// <param name="settings">アプリケーション設定</param> public QueuePolly(OperationAppSettings settings) { this.settings = settings; this.retryPolicy = Policy.Handle <Exception>() .WaitAndRetry(settings.MailQueueAccessMaxAttempts, retryCount => TimeSpan.FromSeconds(retryCount * settings.MailQueueDelayDeltaSeconds)); }
/// <summary> /// コンストラクタ /// </summary> /// <param name="settings">設定</param> /// <param name="logger">ロガー</param> /// <param name="timeProvider">DateTimeの提供元</param> /// <param name="dtAlarmRepository">アラームリポジトリ</param> /// <param name="dtEquipmentRepository">機器リポジトリ</param> /// <param name="dtAlarmConfigRepository">アラーム設定リポジトリ</param> /// <param name="queueRepository">Queueリポジトリ</param> /// <param name="failureRepository">Failureストレージリポジトリ</param> public AlarmRegisterService( OperationAppSettings settings, ILogger <AlarmRegisterService> logger, ITimeProvider timeProvider, IDtAlarmRepository dtAlarmRepository, IDtEquipmentRepository dtEquipmentRepository, IDtAlarmConfigRepository dtAlarmConfigRepository, IQueueRepository queueRepository, IFailureRepository failureRepository) { Assert.IfNull(settings); Assert.IfNull(logger); Assert.IfNull(timeProvider); Assert.IfNull(dtAlarmRepository); Assert.IfNull(dtEquipmentRepository); Assert.IfNull(dtAlarmConfigRepository); Assert.IfNull(queueRepository); Assert.IfNull(failureRepository); _settings = settings; _logger = logger; _timeProvider = timeProvider; _dtAlarmRepository = dtAlarmRepository; _dtEquipmentRepository = dtEquipmentRepository; _dtAlarmConfigRepository = dtAlarmConfigRepository; _queueRepository = queueRepository; _failureRepository = failureRepository; }
/// <summary> /// コンストラクタ /// </summary> /// <param name="settings">設定</param> /// <param name="service">MailSenderサービスクラス</param> public MailSenderController(OperationAppSettings settings, IMailSenderService service) { Assert.IfNull(settings); Assert.IfNull(service); _settings = settings; _service = service; }
/// <summary> /// コンストラクタ /// </summary> /// <param name="settings">設定</param> /// <param name="service">AlarmRegisterサービスクラス</param> public AlarmRegisterController(OperationAppSettings settings, IAlarmRegisterService service) { Assert.IfNull(settings); Assert.IfNull(service); _settings = settings; _service = service; }
/// <summary> /// コンストラクタ /// </summary> /// <param name="settings">アプリケーション設定</param> public SendGridPolly(OperationAppSettings settings) { this.settings = settings; asyncRetryPolicy = Policy.Handle <Exception>() .OrResult <Response>(x => IsNeedRetry(x)) .WaitAndRetryAsync(settings.SendGridAccessMaxAttempts, retryCount => TimeSpan.FromSeconds(retryCount * settings.SendGridDelayDeltaSeconds)); }
/// <summary> /// コンストラクタ /// </summary> /// <param name="logger">ロガー</param> /// <param name="sendGridPolly">SendGrid接続用のPolly</param> /// <param name="appSettings">アプリケーション設定</param> public MailRepository(ILogger <MailRepository> logger, SendGridPolly sendGridPolly, OperationAppSettings appSettings) { Assert.IfNull(logger); Assert.IfNull(sendGridPolly); Assert.IfNull(appSettings); _logger = logger; _sendGridPolly = sendGridPolly; _appSettings = appSettings; }
/// <summary> /// コンストラクタ /// </summary> /// <param name="logger">ロガー</param> /// <param name="queuePolly">キュー接続用のPolly</param> /// <param name="appSettings">アプリケーション設定</param> public QueueRepository(ILogger <QueueRepository> logger, QueuePolly queuePolly, OperationAppSettings appSettings) { Assert.IfNull(logger); Assert.IfNull(queuePolly); Assert.IfNull(appSettings); _logger = logger; _queuePolly = queuePolly; _appSettings = appSettings; }
/// <summary> /// コンストラクタ /// </summary> /// <param name="settings">設定</param> /// <param name="logger">ロガー</param> /// <param name="timeProvider">DateTimeの提供元</param> /// <param name="mailRepository">メールリポジトリ</param> /// <param name="failureRepository">Failureストレージリポジトリ</param> public MailSenderService( OperationAppSettings settings, ILogger <MailSenderService> logger, ITimeProvider timeProvider, IMailRepository mailRepository, IFailureRepository failureRepository) { Assert.IfNull(settings); Assert.IfNull(logger); Assert.IfNull(timeProvider); Assert.IfNull(mailRepository); Assert.IfNull(failureRepository); _settings = settings; _logger = logger; _timeProvider = timeProvider; _mailRepository = mailRepository; _failureRepository = failureRepository; }
/// <summary> /// DIを実行する /// </summary> /// <param name="appSettings">アプリケーション設定を上書きする場合は指定する</param> /// <param name="testLogs">ログの格納先</param> private void DependencyInjection(Dictionary <string, string> appSettings = null, List <TestLog> testLogs = null) { var builder = new TestDiProviderBuilder <OperationAppSettings>(FunctionsHostBuilderExtend.AddUtility); builder.ServiceCollection.AddTransient <AlarmRegisterController>(); builder.ServiceCollection.AddTransient <FailureBlob>(); builder.AddConfigures(appSettings); Mock <DateTimeProvider> timeProviderMock = new Mock <DateTimeProvider>(); timeProviderMock.SetupGet(tp => tp.UtcNow).Returns(TestTime); builder.ServiceCollection.AddSingleton <ITimeProvider>(timeProviderMock.Object); if (testLogs != null) { builder.ServiceCollection.AddSingleton <ILogger <AlarmRegisterService> >(new TestLogger <AlarmRegisterService>(testLogs)); } ServiceProvider provider = builder.Build(); failureBlob = provider.GetService <FailureBlob>(); settings = provider.GetService <AppSettings>() as OperationAppSettings; target = provider.GetService <AlarmRegisterController>(); }