public async Task GivenValidRequest_WhenCreating_ShouldReturnCreated()
        {
            // Given
            var request = new CreateJobRequest
            {
                Subject = "test",
                Payload = "do things",
                RunAt   = DateTime.UtcNow.AddDays(1),
            };

            var job          = Job.New(request.Subject, request.Payload, true, request.RunAt, request.StopAfter, null);
            var jobExecution = JobExecution.New(job, request.RunAt);

            Mock.Get(_mediator)
            .Setup(x => x.Send(It.IsAny <Core.Handlers.CreateJobRequest>(), CancellationToken.None))
            .ReturnsAsync(new CreateJobResponse(job, jobExecution));

            // When
            var result = await _controller.CreateAsync(request, CancellationToken.None);

            var actionResult = result.Result as ObjectResult;

            // Then
            actionResult.ShouldBeAssignableTo <ObjectResult>();
            actionResult.StatusCode.ShouldBe(StatusCodes.Status201Created);
        }
        public async Task GivenInValidRequest_WhenCreating_ShouldReturnValidationError()
        {
            // Given
            _controller.ModelState.AddModelError("Some", "IsRequired");
            var request = new CreateJobRequest();

            // When
            var result = await _controller.CreateAsync(request, CancellationToken.None);

            var actionResult = result.Result as UnprocessableEntityObjectResult;

            // Then
            actionResult.ShouldBeAssignableTo <UnprocessableEntityObjectResult>();
            actionResult.StatusCode.ShouldBe(StatusCodes.Status422UnprocessableEntity);
        }