Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
        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");
        }
Exemplo n.º 3
0
        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();
        }
Exemplo n.º 4
0
        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)));
        }
Exemplo n.º 5
0
        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");
        }