public async Task Then_If_Validation_Exception_Bad_Request_Returned( string errorKey, CourseDemandRequest request, [Frozen] Mock <IMediator> mediator, [Greedy] DemandController controller) { //Arrange var validationResult = new ValidationResult { ValidationDictionary = { { errorKey, "Some error" } } }; mediator .Setup(mediator => mediator.Send( It.IsAny <CreateCourseDemandCommand>(), It.IsAny <CancellationToken>())) .Throws(new ValidationException(validationResult.DataAnnotationResult, null, null)); //Act var actual = await controller.CreateDemand(request) as ObjectResult; //Assert Assert.IsNotNull(actual); actual.StatusCode.Should().Be((int)HttpStatusCode.BadRequest); actual.Value.ToString().Should().Contain(errorKey); }
public void Then_If_There_Are_Validation_Errors_But_Not_A_Location_Error_Then_The_Service_Is_Still_Called( CreateCachedCourseDemandCommand command, GetCreateCourseDemandResponse response, [Frozen] Mock <IDemandService> service, [Frozen] Mock <IValidator <CreateCachedCourseDemandCommand> > validator, CreateCachedCourseDemandCommandHandler handler) { //Arrange response.Location = null; var validationResult = new ValidationResult(); validationResult.AddError(nameof(command.OrganisationName)); validator.Setup(x => x.ValidateAsync(command)).ReturnsAsync(validationResult); service.Setup(x => x.GetCreateCourseDemand(command.TrainingCourseId, command.Location)) .ReturnsAsync(response); //Act var act = new Func <Task>(async() => await handler.Handle(command, CancellationToken.None)); //Assert service.Verify(x => x.CreateCacheCourseDemand(It.IsAny <CreateCachedCourseDemandCommand>()), Times.Never); act.Should().Throw <ValidationException>() .WithMessage($"*{nameof(command.Location)}|Enter a real town, city or postcode*"); }