public async Task <IResult> CreateTask(CreateSubtaskForm form) { var jobExists = await _dbContext.Jobs.AnyAsync(x => x.JobId == form.JobId); if (!jobExists) { _logger.LogWarning("Job does not exist with ID = {JobId}", form.JobId); return(Result.NotFound($"Job does not exist with ID {form.JobId}")); } var taskExists = await _dbContext.Tasks.AnyAsync(x => x.Job.JobId == form.JobId && x.TaskId == form.TaskId); if (taskExists) { _logger.LogWarning("Sub-task already exists with ID = {TaskId}", form.TaskId); return(Result.Conflict($"Sub-task already exists with ID {form.TaskId}")); } await _sendEndpointProvider.Send <CreateSubtask>(new { JobId = form.JobId, TaskId = form.TaskId, Name = form.Name }); _logger.LogInformation("Sent <{MessageType}> command", nameof(CreateSubtask)); return(Result.Ok()); }
public async Task Test_CreateTask_DuplicateGuid_Should_ReturnConflict() { // arrange var job = new JobFaker().Generate("default,Pending"); var task = new SubtaskFaker().SetJob(job).Generate("default,Pending"); await using var context = DbContextFactory.Instance.CreateDbContext <PortAuthorityDbContext>(); await context.Setup(x => x.Jobs, job); await context.Setup(x => x.Tasks, task); var form = new CreateSubtaskForm() { JobId = job.JobId, TaskId = task.TaskId, Name = "test-createtask-task-id-already-exists" }; // act var result = await _service.CreateTask(form); // assert result.Should().NotBeNull(); result.IsConflict().Should().BeTrue(); result.ErrorMessage.Message.Should().StartWith("Sub-task already exists"); }
public async Task Test_CreateTask_Should_SendMessage_And_ReturnOk() { // arrange var job = new JobFaker().Generate("default,Pending"); await using var context = DbContextFactory.Instance.CreateDbContext <PortAuthorityDbContext>(); await context.Setup(x => x.Jobs, job); var form = new CreateSubtaskForm() { JobId = job.JobId, TaskId = NewId.NextGuid(), Name = "test-createtask-ok" }; _mockSendEndpointProvider .SetupMessage <CreateSubtask>(new { JobId = form.JobId, TaskId = form.TaskId, Name = form.Name }); // act var result = await _service.CreateTask(form); // assert result.Should().NotBeNull(); result.IsOk().Should().BeTrue(); _mocks.Verify(); }
public async Task <IActionResult> CreateTask([FromBody] CreateSubtaskForm createTask) { _logger.LogInformation("Creating sub-task = [{Task}]", createTask); var result = await _subtaskService.CreateTask(createTask); if (result.IsConflict()) { _logger.LogWarning("Task already exists with Id = {TaskId}", createTask.TaskId); return(Conflict(result.ErrorMessage)); } var url = Url.RouteUrl(nameof(GetTask), new { Id = createTask.JobId }); return(Accepted(JsonLinks.Self(url))); }
public async Task Test_CreateTask_JobNotExists_Should_ReturnNotFound() { // arrange var form = new CreateSubtaskForm() { JobId = Guid.NewGuid(), TaskId = NewId.NextGuid(), Name = "test-createtask-job-not-exists" }; // act var result = await _service.CreateTask(form); // assert result.Should().NotBeNull(); result.IsNotFound().Should().BeTrue(); result.ErrorMessage.Message.Should().StartWith("Job does not exist with ID"); }