コード例 #1
0
        public void Execute_ValidationSucceeds_JobsRegisteredForLogFiles()
        {
            int id = new Random().Next(1, 1000);
            ProjectRequestAggregateModel model = DataHelper.CreateProjectRequestAggregateModel();

            _projectRequestAggregateRepo.GetById(id).Returns(model);

            LogFileModel log1 = DataHelper.CreateLogFileModel(model.ProjectId);

            log1.Id = 1;
            LogFileModel log2 = DataHelper.CreateLogFileModel(model.ProjectId);

            log2.Id = 2;
            LogFileModel log3 = DataHelper.CreateLogFileModel(model.ProjectId);

            log3.Id = 3;

            _logFileRepo.GetByProject(model.ProjectId).Returns(new LogFileModel[] { log1, log2, log3 });

            // execute
            _deleteProjectRequestAggregateCommand.Execute(id);

            // assert
            _logFileRepo.Received(1).GetByProject(model.ProjectId);
            _setLogFileUnprocessedCommand.Received(1).Execute(log1.Id);
            _setLogFileUnprocessedCommand.Received(1).Execute(log2.Id);
            _setLogFileUnprocessedCommand.Received(1).Execute(log3.Id);
        }
コード例 #2
0
        public void Execute_ValidationSucceeds_JobsRegisteredForLogFiles()
        {
            ProjectRequestAggregateModel model = DataHelper.CreateProjectRequestAggregateModel();

            _projectRequestAggregateValidator.Validate(model).Returns(new ValidationResult());

            LogFileModel log1 = DataHelper.CreateLogFileModel(model.ProjectId);

            log1.Id = 1;
            LogFileModel log2 = DataHelper.CreateLogFileModel(model.ProjectId);

            log2.Id = 2;
            LogFileModel log3 = DataHelper.CreateLogFileModel(model.ProjectId);

            log3.Id = 3;

            _logFileRepo.GetByProject(model.ProjectId).Returns(new LogFileModel[] { log1, log2, log3 });

            // execute
            _createProjectRequestAggregateCommand.Execute(model);

            // assert
            _logFileRepo.Received(1).GetByProject(model.ProjectId);
            _setLogFileUnprocessedCommand.Received(1).Execute(log1.Id);
            _setLogFileUnprocessedCommand.Received(1).Execute(log2.Id);
            _setLogFileUnprocessedCommand.Received(1).Execute(log3.Id);
        }
        public ProjectRequestAggregateModel Execute(ProjectRequestAggregateModel projectRequestAggregate)
        {
            // validate
            ValidationResult result = _projectRequestAggregateValidator.Validate(projectRequestAggregate);

            if (!result.Success)
            {
                throw new ValidationException(result.Messages);
            }

            // insert new record
            string sql = @"INSERT INTO ProjectRequestAggregates (ProjectId, RegularExpression, AggregateTarget, CreateDate) VALUES (@ProjectId, @RegularExpression, @AggregateTarget, @CreateDate)";

            _dbContext.ExecuteNonQuery(sql, projectRequestAggregate);

            // update the id
            sql = @"select last_insert_rowid()";
            projectRequestAggregate.Id = _dbContext.ExecuteScalar <int>(sql);

            // register jobs so all log files are reprocessed
            IEnumerable <LogFileModel> logFiles = _logFileRepo.GetByProject(projectRequestAggregate.ProjectId);

            foreach (LogFileModel logFile in logFiles)
            {
                _setLogFileUnprocessedCommand.Execute(logFile.Id);
            }

            return(projectRequestAggregate);
        }
コード例 #4
0
        public dynamic Files(dynamic pId)
        {
            // make sure the id is a valid integer
            int projectId = 0;

            if (!Int32.TryParse((pId ?? "").ToString(), out projectId))
            {
                return(HttpStatusCode.BadRequest);
            }

            IEnumerable <LogFileModel>     logFiles          = _logFileRepo.GetByProject(projectId);
            IEnumerable <LogFileViewModel> logFileViewModels = logFiles.Select(x => Mapper.Map <LogFileModel, LogFileViewModel>(x));

            return(this.Response.AsJson <IEnumerable <LogFileViewModel> >(logFileViewModels));
        }
コード例 #5
0
        public void Execute(int id)
        {
            // load the record up
            ProjectRequestAggregateModel projectRequestAggregate = _projectRequestAggregateRepo.GetById(id);

            if (projectRequestAggregate == null)
            {
                throw new InvalidOperationException(String.Format("No project aggregate request found with id {0}", id));
            }

            // insert new record
            string sql = @"DELETE FROM ProjectRequestAggregates WHERE Id = @Id";

            _dbContext.ExecuteNonQuery(sql, new { Id = id });

            // register jobs so all log files are reprocessed
            IEnumerable <LogFileModel> logFiles = _logFileRepo.GetByProject(projectRequestAggregate.ProjectId);

            foreach (LogFileModel logFile in logFiles)
            {
                _setLogFileUnprocessedCommand.Execute(logFile.Id);
            }
        }
コード例 #6
0
        public void Files_ValidProjectId_GetsLogFilesFromDatabase()
        {
            int projectId = new Random().Next(1, 1000);

            // setup
            var currentUser = new UserIdentity()
            {
                Id = Guid.NewGuid(), UserName = "******"
            };
            var browser = new Browser((bootstrapper) =>
                                      bootstrapper.Module(new ProjectModule(_dbContext, _projectValidator, _createProjectCommand, _deleteProjectCommand, _projectRepo, _logFileRepo, _requestRepo, _projectRequestAggregateRepo))
                                      .RequestStartup((container, pipelines, context) => {
                context.CurrentUser = currentUser;
            })
                                      );
            LogFileModel log1 = DataHelper.CreateLogFileModel();
            LogFileModel log2 = DataHelper.CreateLogFileModel();
            LogFileModel log3 = DataHelper.CreateLogFileModel();

            _logFileRepo.GetByProject(projectId).Returns(new LogFileModel[] { log1, log2, log3 });

            // execute
            var url      = Actions.Project.Files(projectId);
            var response = browser.Post(url, (with) =>
            {
                with.HttpRequest();
                with.FormsAuth(currentUser.Id, new Nancy.Authentication.Forms.FormsAuthenticationConfiguration());
            });

            // assert
            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            _logFileRepo.Received(1).GetByProject(projectId);

            IEnumerable <LogFileViewModel> result = JsonConvert.DeserializeObject <IEnumerable <LogFileViewModel> >(response.Body.AsString());

            Assert.AreEqual(3, result.Count());
        }