public void Execute_FileWithHashAlreadyExists_ThrowsException() { int projectId = new Random().Next(1, 1000); string filePath = Path.Combine(AppContext.BaseDirectory, "test.log"); FileDetail fileDetail = new FileDetail(); fileDetail.Hash = Guid.NewGuid().ToString(); _fileUtils.GetFileHash(filePath).Returns(fileDetail); LogFileModel model = DataHelper.CreateLogFileModel(); _logFileRepo.GetByHash(projectId, fileDetail.Hash).Returns(model); // execute TestDelegate del = () => _createLogFileCommand.Execute(projectId, filePath); // assert Assert.Throws <ValidationException>(del); _fileUtils.Received(1).GetFileHash(filePath); _logFileRepo.Received(1).GetByHash(projectId, fileDetail.Hash); // we shouldn't have even tried to validate or do the insert _logFileValidator.DidNotReceive().Validate(Arg.Any <LogFileModel>()); _dbContext.DidNotReceive().ExecuteNonQuery(Arg.Any <string>(), Arg.Any <object>()); }
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); }
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 void Execute_RequestsFound_AggregatesLoadedAndLogFileMarkedAsProcessed() { int logFileId = new Random().Next(1, 1000); // setup RequestModel[] requests = { DataHelper.CreateRequestModel(logFileId), DataHelper.CreateRequestModel(logFileId) }; _requestRepo.GetByLogFile(logFileId).Returns(requests); LogFileModel logFile = DataHelper.CreateLogFileModel(); logFile.Id = logFileId; _logFileRepo.GetById(logFileId).Returns(logFile); // execute _resetRequestAggregateCommand.Execute(logFileId); // assert _requestRepo.Received(1).GetByLogFile(logFileId); _logFileRepo.Received(1).GetById(logFileId); _projectRequestAggregateRepo.Received(1).GetByProject(logFile.ProjectId); }
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()); }