public UserActivityLogServiceUnitTests() { this._userActivityRepository = new Mock <IRepository <UserActivityLogItem> >(); this._errorLoggerRepository = new Mock <IRepository <ErrorLogItem> >(); this._errorLoggerService = new Mock <IErrorLogger <ErrorLogItem> >(); _userActivityLogService = new UserActivityLogService( this._userActivityRepository.Object, this._errorLoggerService.Object); }
protected override async Task ExecuteAsync(CancellationToken cancellationToken) { using (var scope = scopeFactory.CreateScope()) { try { var dbContext = scope.ServiceProvider.GetRequiredService <ApplicationDbContext>(); string connString = dbContext.Database.GetDbConnection().ConnectionString; var userRepo = new UserActivityRepository(connString); var errorRepo = new ErrorRepository(connString); var errorLogger = new ErrorLoggerService(errorRepo); var userActivityLogger = new UserActivityLogService( userRepo, errorLogger); while (!cancellationToken.IsCancellationRequested) { if (await this._errorLogItems.QueueIsEmpty(cancellationToken) && await this._userActivityLogItems.QueueIsEmpty(cancellationToken)) { await Task.Delay(TimeSpan.FromSeconds(10), cancellationToken); } else { if (await this._userActivityLogItems.QueueIsEmpty(cancellationToken) == false) { var item = await this._userActivityLogItems.DequeueAsync(cancellationToken); await userActivityLogger.LogThisActivity((UserActivityLogItem)item); } if (await this._errorLogItems.QueueIsEmpty(cancellationToken) == false) { var item = await this._errorLogItems.DequeueAsync(cancellationToken); errorLogger.LogError((ErrorLogItem)item); } } } } catch (Exception e) { StopAsync(cancellationToken); } } }