public IEnumerable <ReportJob> ExecuteReports()
        {
            List <ReportJob> executedJobs = new List <ReportJob>();

            IEnumerable <ConnectionSetting> connections = _appSettings.ConnectionSettings;

            foreach (ConnectionSetting conn in connections)
            {
                IEnumerable <ReportJob> jobs = _reportCoordinator.RunReports(conn);
                executedJobs.AddRange(jobs);
            }

            _logger.Info("{0} jobs executed across all connections", executedJobs.Count);
            return(executedJobs);
        }
        public void RunReports_MaxConcurrentReportsExceeded_ExitsAndReturnsEmptyCollection(int runningReportCount)
        {
            // setup
            string            connName = Guid.NewGuid().ToString();
            ConnectionSetting conn     = new ConnectionSetting(connName, "connection");

            _appSettings.MaxConcurrentReports.Returns(5);
            List <ReportJob> executingJobs = CreateReportJobList(runningReportCount);

            _reportJobRepository.GetProcessingReports(conn.ConnectionString).Returns(executingJobs);

            // execute
            var result = _reportCoordinator.RunReports(conn);

            // assert
            Assert.AreEqual(0, result.Count());
            _reportJobRepository.Received(1).GetProcessingReports(conn.ConnectionString);

            // no call should have been made for more reports
            _reportJobRepository.DidNotReceive().GetPendingReports(Arg.Any <string>(), Arg.Any <int>(), Arg.Any <IEnumerable <string> >());
        }