public async Task RunsApiTests_InvalidParams() { var options = new RunsOptions(); var ex = Assert.ThrowsAsync <Exception>(async() => { var result = await InvokeApi <RunsResult>(BuildUrl(ApiMethod), "POST", Serialize(options)); }); Assert.AreEqual("Request parameters missing or have incorrect format", ex.Message); }
public async Task RunsApiTests_GetAllRuns() { var options = new RunsOptions { DepartureCityId = 1, DestinationCityId = 12, DepartureDate = new DateTime(2019, 10, 24) }; var result = await InvokeApi <RunsResult>(BuildUrl(ApiMethod), "POST", Serialize(options)); Assert.IsNotEmpty(result.Runs); }
public async Task <Result <RunsResult> > Handle(RunsOptions options) { try { var runs = await _runsService.GetAvailableRuns(options.DepartureDate, options.DepartureCityId, options.DestinationCityId); var result = new RunsResult { Runs = runs.Select(x => _mapper.Map <RunDto>(x)) }; return(Result.Ok(result)); } catch (Exception ex) { return(Result.Fail <RunsResult>(HttpStatusCode.InternalServerError, $"Something went wrong. Please repeat the operation. {ex.Message}")); } }
public async Task <IActionResult> GetAvailableRuns([FromBody] RunsOptions runsOptions) { if (runsOptions == null) { return(ErrorResult(HttpStatusCode.BadRequest, "Options can not be null.")); } if (runsOptions.DestinationCityId == 0 || runsOptions.DepartureCityId == 0 || runsOptions.DepartureDate < DateTime.Today) { return(ErrorResult(HttpStatusCode.BadRequest, "Request parameters missing or have incorrect format")); } var handler = new RunsHandler(_runsService, _mapper); var result = await handler.Handle(runsOptions); if (result.IsFailure) { return(FromResult(result)); } return(Ok(result.Value)); }